引言
現(xiàn)代社會中,人們的日常工作和生活愈發(fā)依賴于計算機(jī)。在處理一些機(jī)密事務(wù)時,信息安全不可謂不重要。在一些單位會采取斷網(wǎng)或禁止插入U盤的方式來防止泄密。然而,計算機(jī)的EMI問題還可能導(dǎo)致信息從其它途徑泄露。本文介紹了一種使用RTH示波器探測并解碼HDMI的方法,并解釋了其實現(xiàn)原理。
RTH示波器相比市面上常見的軟件無線電接收機(jī)采樣率高了很多倍,因此解析出的畫面會更清晰,有利于看清小字體。另外,RTH示波器是手持儀表,攜帶非常方便,還能通過WiFi方式實現(xiàn)信號回傳,簡化了示波器與上位機(jī)之間的連接,降低了整套探測系統(tǒng)的復(fù)雜度。
既然是EMI問題導(dǎo)致的信息泄露,我們可以先嘗試用示波器的近場探頭配合示波器FFT功能在被攻擊電腦附近進(jìn)行探測。當(dāng)我們移動近場探頭到達(dá)被攻擊電腦的HDMI接口附近,示波器頻譜上會出現(xiàn)好多信號。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
▲從上圖可知,HDMI顯示信號已經(jīng)泄露到了空氣中,如果我們能夠找出信號規(guī)律,即可逆向得到原始畫面內(nèi)容。
我們可以先在被攻擊電腦上使用比較簡單的圖形,并觀察示波器的時域波形,來嘗試找出電腦畫面與泄露信號之間的規(guī)律。
比如我們可以在被攻擊電腦上開啟畫圖程序,并填充黑色背景。然后中間開啟一個白色長條形的記事本窗口,并嘗試更改這個窗口的寬度,或左右拖動這個窗口。
調(diào)整示波器的水平/垂直刻度和觸發(fā)方式,你會得到這樣有規(guī)律的時域波形。并且你會發(fā)現(xiàn),在示波器屏幕中間的觸發(fā)位置處有一個窄矩形,同時它的左數(shù)3格位置也有類似的窄矩形。說明這種矩形的重復(fù)周期大概是30us。當(dāng)我們在被攻擊電腦上左右拖動記事本窗口的邊沿,則兩個窄矩形之間的較寬矩形就會對應(yīng)運動,并且當(dāng)電腦屏幕上的記事本運動到屏幕邊界處時,示波器顯示的寬矩形也會靠近窄矩形的位置。
根據(jù)上述規(guī)律,我們可以大膽猜測在窄矩形之間的波形,對應(yīng)的是電腦屏幕上的一行,示波器從左往右的波形對應(yīng)于電腦屏幕的一行中從左往右的像素點。由于目前被攻擊電腦的屏幕內(nèi)容比較簡單,因此可以認(rèn)為它的每一行數(shù)據(jù)基本是相同的。這也就是為什么時域波形看上去是周期性的,重復(fù)周期是30us。如果對模擬視頻制式比較熟悉,你會發(fā)現(xiàn)這一點與PAL或NTSC制式非常相似。
因此,我們可以嘗試用時域波形的幅度對應(yīng)于像素點的亮度,把每一行的波形都用繪圖軟件庫中的函數(shù)繪制出來,行之間的順序也參考模擬視頻,把左側(cè)出現(xiàn)的行放在上方,右側(cè)出現(xiàn)的行放在下方。
大致猜出信號規(guī)律后,我們就可以開始著手寫程序了。
我們需要先配置示波器程控開發(fā)環(huán)境(以Ubuntu系統(tǒng)為例):
1.安裝python3.8
2.在羅德與施瓦茨官網(wǎng)搜索并下載,RSVisa(對于Ubuntu系統(tǒng),可下載deb包,并雙擊安裝)
3.使用pip3 install命令安裝pyvisa, rsinstrument, opencv-python等軟件庫 這樣就配置完成了示波器程控開發(fā)環(huán)境。
然后我們找到羅德與施瓦茨在github上的賬號中的RTH示波器范例,并逐步修改,實現(xiàn)自己的程序。
? ?
在上方代碼中,我修改了RTH的設(shè)備地址、時基設(shè)置、通道刻度、觸發(fā)方式(可用代碼設(shè)置或保持示波器原先的設(shè)置)。
? ?
在上方代碼中,設(shè)置了數(shù)據(jù)類型,并請求數(shù)據(jù)。然后獲取通道的刻度和偏置,實現(xiàn)數(shù)據(jù)歸一化。最終,用matplotlib繪制時域波形。
? ?
運行上述代碼,你就能在程控電腦的屏幕上得到上圖結(jié)果。你會觀察到,現(xiàn)在程控電腦上得到的波形與示波器探測的波形完全一致,比較寬的矩形對應(yīng)的就是被攻擊電腦上的記事本窗口,而比較窄的矩形對應(yīng)的就是被攻擊電腦的屏幕邊界。下一步,我們只要把波形幅度轉(zhuǎn)為像素點亮度即可。
成功運行了RTH程控范例后,我們即可對此范例程序進(jìn)一步修改,以驗證我們之前猜測的想法。 ? ? ?
上圖是我修改后的代碼,我做的主要修改是先對整個解碼程序加了一個循環(huán),這樣解碼的畫面才可以不停刷新,而不是只顯示一副畫面。我用abs來對波形數(shù)據(jù)取模,相當(dāng)于實現(xiàn)了AM解調(diào),并把解調(diào)結(jié)果依次繪制在OpenCV的畫布上。繪制順序是從左往右繪制,到達(dá)行尾后換行,到達(dá)列尾后重新回到畫布左上角。繪制完一副畫面后,用imshow函數(shù)把畫面顯示出來。
成功實現(xiàn)HDMI解碼后,我們還可以查詢HDMI規(guī)范,了解為什么這種高清數(shù)字信號能用模擬視頻解調(diào)的方式解出來。
? ? ? ?
從上圖可知HDMI在TMDS模式時,3個通道獨立發(fā)送數(shù)據(jù)。它們對應(yīng)于HDMI線纜中的3對差分線。更具體來說,這3對差分線中分別傳輸?shù)臄?shù)據(jù)就是R、G、B數(shù)據(jù)。
? ? ?
不僅如此,從上圖可知這三路R、G、B數(shù)據(jù)是按像素點依次傳輸?shù)?。?dāng)某一行的像素點從左往右傳輸完成后,就會換行,傳輸下一行的RGB數(shù)據(jù),這一點與模擬視頻幾乎一樣,這就解釋了為何我們可以用類似模擬視頻解調(diào)的方式,實現(xiàn)HDMI信號的解碼。不僅HDMI信號以此方式傳輸,早期的DVI信號也是這種方式。因此,也能用類似的方式解碼。
除了這些視頻接口外,顯示屏內(nèi)部的專用信號也存在信息泄露問題,這些問題可能由于顯示屏在生產(chǎn)過程中內(nèi)部電路板的差分走線的不對稱而引入。
結(jié)語
通過本文,相信你已經(jīng)學(xué)會如何自己寫程序控制示波器,并實現(xiàn)對HDMI泄露信號的探測和解碼。在日常工作中,羅德與施瓦茨的示波器和近場探頭也是調(diào)試EMI問題的好幫手。除此之外,羅德與施瓦茨還提供了全套專業(yè)的EMC測試方案,幫助你整改目標(biāo)設(shè)備的EMC問題。
審核編輯:劉清
-
示波器
+關(guān)注
關(guān)注
113文章
6167瀏覽量
184325 -
RGB
+關(guān)注
關(guān)注
4文章
797瀏覽量
58339 -
HDMI信號
+關(guān)注
關(guān)注
0文章
10瀏覽量
7721 -
無線電接收機(jī)
+關(guān)注
關(guān)注
0文章
6瀏覽量
1764 -
時域波形
+關(guān)注
關(guān)注
0文章
10瀏覽量
1888
原文標(biāo)題:【實踐分享】| 被夸爆的HDMI信號泄露檢測技巧,一臺示波器就能實現(xiàn)
文章出處:【微信號:羅德與施瓦茨中國,微信公眾號:羅德與施瓦茨中國】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論