2015 台灣駭客年會 “腳本小子告白 硬碟的祕密大公開”

Posted on 1 CommentPosted in 硬體駭客

day2-e-r2.2

本篇為 OSSLab 在2015 台灣駭客年會 Hitcon的演講
(PDF full screen plugin 晚點修正 XD)
https://github.com/thx0701/OSStool (wd HDD firemware工具)

超高潔淨度無塵室有效否的迷思 討論文 
http://malthus.mooo.com/viewtopic.php?f=78&t=20
目前新版網站為 HDD Oracle 全球二大hdd guru 論壇.

簡報勘誤表
Donor  HDD(貢體材料)

 

 

使用軟體無線電接收飛航自動回報監視(ADS-B)訊號與分析

Posted on 1 CommentPosted in 硬體駭客

簡介
ADS-B系統即廣播式自動監視系統,由多地面站和機載站構成,以網狀、多點對多點方式完成數據雙向通信。它主要實施空對空、地對空監視,用於輔助航機以及地面航管系統,提高航機在飛行中的安全性。

起源
早期航管使用一次雷達作為最基礎的航空管制,由於僅利用雷達回波得知某一個相對位置有物體,但無法得知對方的資訊後來發展了二次雷達,二次雷達是基於一次雷達上面安裝了接收機,在雷達發射時帶有要求詢問航機的應求碼,航機接收後透過機上的應答機(會先利用無線電由航管給予Squawk電碼以利航機識別)提供了最基本的航班號、飛行速度、高度讓雷達接收顯示在航管系統上增加了更高的精確性,之後又發展了ACARS(飛機通信尋址與報告系統),ACARS是透過無線電或者是衛星來提供電報短文發送,ACARS能夠提供基礎的航機訊息之外,還能進行氣象報告、日常通訊等等供ATM(飛航管理)使用,但因為ACARS是使用音頻解調變來進行傳輸,容易造成解碼不正確的問題,因此目前大多用在越洋航機長距離短波通訊、航空公司與班機對話使用。之後發展了ADS-B,在新的航空管理系統中,航空交通監視的部分主要是依靠廣播式自動相關監視系統(ADS-B)來取代現有的一次、二次雷達監視(但還是會混合使用),ADS-B系統利用全球衛星定位 (GPS) 獲得航機位置資訊取得航機位置,搭配機載訊息處理單元將所有航機的即時資料,藉由完善的通訊系統以廣播的方式傳遞給附近的使用者,以達到更安全、更有效率的飛行。而且 ADS-B 採用高頻通訊並使用二進位進行調變,較不受環境與地形因素的影響,可以提供較為完整而連續的運作,且利用數據化的資料有較傳統監視系統更大的運作彈性,目前各國積極地的在發展 ADS-B的相關技術,提供更即時、更安全的空中隔離。

ADS-B/modeS

既然ADS-B是採用二進位編碼方式進行廣播代表他是公開能夠自己解析的,而現在有民間的ADS-B的即時航機顯示的網站,是由各地區熱心的網友架設使用,例如: Flightradar24 / PlaneFinder / FlightAware ,這些網站透過各站台接收的訊息來即時顯示在網站地圖上,那我們能不能自行架設來分析並且分享到這些網站上,自己能夠收得開心之外還能讓網站能夠更完整呢?可以的,像是一般有專業的ModeS/ADS-B接收機之外,還能透過便宜的電視棒來解決。像是RTL2832U+R820T2 就是一個完美且經濟的解決方案,Realtek RTL2832U原來是Realtek 的工程師為了用在電視棒使用,結果被發現是業餘人士玩SDR的最佳利器,常見搭配的Tuner 有:Elonics E4000 頻率:60MHz~1700MHz/Raphael Micro R820T/R820T2 頻率:24MHz~1850MHz。一般來說最建議的是使用R820T2,是R820T的改進版,有更少的頻率飄移(ppm)之外,靈敏度也比較高且價格不變,所以一般大家都是使用這一個搭配組合,價格也只要300-500就能夠解決了。

MLAT5

MLAT5是使用ModeS+ADS-B,ModeS 是跟 ADS-B 是屬於同一個架構的廣播式自動監視系統,ADS-B 是基於 ModeS 上的架構,差異的是 ModeS 的是因為機上的應答機是屬於比較低階的,接收到資料時就會是 ModeS,ModeS 跟 ADS-B 會因為站台的疏密度關係而有覆蓋範圍跟死角問題,當遇到接收時不完整等等或者是使用 ModeS 的航機時要如何推算飛機位置呢?另外 ADS-B 這時候要如何推算出飛機位置高度等?這時候就會使用 MLAT5 的方式來推算,各站台都會標記自己精確的經緯度(通常是精確到小數點下六位),MLAT5利用各站台接收的強度以及接收到的部分資料加上各站台的經緯度來進行計算,但是缺點是 MLAT5 的情況下必須要高達 5 台的地面接收站才能夠進行較完整的推算過程,在網站當中雷達站就會顯示他是使用 MLAT5 來進行估算的。

ADS-B-and-MLAT

What is SDR?

傳統數位無線通訊系統由幾個基本的硬體模組組成,包括天線模組、多頻帶射頻( RF )模組、中頻( IF )濾波器、 類比-數位轉換器、數位-類比轉換器、
現在由開放性算法處理器模組軟體定義無線電系統架構。 由軟體定義無線電系統的架構圖中可以看到,軟體定義無線電系統利用寬頻類 比-數位轉換器與數位-類比轉換器將射頻或中頻訊號與數位訊號做轉換,這樣一來, 在通訊系統中,原本由硬體電路實現的基頻工作,像是調變、解調、編解碼等工作, 都可以改由軟體來實現,然後再經過處理器做執行的動作。 因此,軟體定義無線電具備了下列的優點: A. 彈 性:可以包含各種通訊環境標準的通訊系統。 B. 適應性:能夠針對不同的通訊需求,提供良好的通訊品質。 C. 升級性:利用下載更新軟體的方式,能夠輕易的對通訊模組做版本的升 級。 D. 低成本:許多的工作交由矽晶片所製的處理器來執行,能夠大量減少電路 體積以及成本的花費


螢幕快照 2017-01-24 下午7.47.50
SDR硬體
最便宜SDR 硬體源自於Realtek  RT2832U 及 Rahael Micro R820T Chip 應用於全球規格格式的DVB-T ATSC等  DAB+ 數位收音機。RT2832U 是 RF demodulator (解調器) ,而 R820T 是一顆 24MHz-1.7GHz 數位調諧器(Tuner)。

螢幕快照 2017-01-23 下午3.56.47

圖為OrangePi+(RTL2832U+R820T2)

IMG_2508

(ADS-B帶通濾波器)

IMG_2509

(1090天線)

RTL2832U詳細資料:

Realtek RTL2832U 為一個6*6mm 單邊12隻腳的QFN封裝晶體,使用3.3V 電壓搭配 28.8 MHz k的石英晶振即可使用,這棵IC是DVB-T COFDM 解調器(Demodulator),並且內建 USB2.0 傳輸,建議使用時使用USB延長線避免電腦的干擾,另外它內建了8組的I/O port以及一組紅外線接收。 

TUNERS:

晶片支援:IF, low-IF, 零IF 調解器

Elonics E4000 頻率:60MHz~1700MHz

Raphael Micro R820T/R820T2 頻率:24MHz~1850MHz 

DATA THROUGHPUT:

當作音效卡時能夠提供 192kHz 32bit 的解析度,資料流約6.144 Mbps

並且內建8-bit ADC 可以提供 3.2 MS/s (在 3200kHz 時每秒百萬個採樣率經計算後的資料流約為25.6Mbps) 

另外支援 MP2/MP4(H.264) 影片串流服務包含語音、數據、影像,編碼包括:4QAM (QPSK), 16QAM, or 64QAM,2K 模式下載波間隔為 4464Hz ,8K 模式下載波間隔為 2232Hz,在這之下的採樣率中皆為18.284544 MHz,而最低的頻率能到達4.571136 Mhz 所能夠提供的帶寬為: 6/7/8 MHz  

重要腳位:

1/2:In-phase Input pos/neg

4/5:Quadrature Input pos/neg

11/12:28.8MHz 石英震盪器

13:Tuner 的AGC控制

16/17:I2C tunner控制

18/19:I2C 2k (256 byte)EEPROM存取控制

 25/26:3.3V電源輸入

38:紅外線輸入

40/41:USB資料輸入

輸入阻抗:

搭配E4000:250-ohms (ROUT),無訊號時:377-ohms

直接取樣:

RTL2832U有內建ADC(類比轉數位)與DSP(數位訊號處理器)、施行數位降變頻到基頻後經由I/Q混頻器混頻(相位相差90度)過數位低通濾波、I/Q 通道重新取樣、之後額外一組的8-bit I/Q 資料經由USB輸出

傅立葉變換與COFDM: 

一般未使用RTL-SDR時使用快速傅立葉FFT單元轉換,將時域訊息轉為頻域訊息,時域是當y軸是振幅x軸是時間,頻域是當y軸是振幅x軸是頻率,一般軟體情況下例如:GQRX/HDSDR/CubicSDR下顯示的是頻域訊息,再直接採樣情況下則直接使用FFT。

RTL2832U是一個COFDM解調器,它的功能包括:符號同步,新頻率調整,旋轉相位,頻率估計和校正,內部和外部解交變,維特比解碼,RS解碼,轉換糾錯,相鄰和同頻率干擾抑制,脈衝噪聲消除,自動載波恢復,頻道均衡,頻道狀態訊息,去除保護週期,導頻和TPS解碼,採樣率校正,採樣率內插和抽取,AGC延遲,測量,SNR估計,調諧器的AGC控制,MPEG比例積分微分濾波等。芯片可以通過特殊的算法自動檢測調製參數(例如傳輸模式,碼率,保護隔離)。


改裝SDR硬體

RTL2832U+R820T2配置預設入手之後是MCX+一般的石英晶振,收到後都會把它改造一番,把MCX換成常見的SMA可以增加屏蔽與抗干擾,因為MCX的抗干擾比較弱之外,一般業餘使用的都是SMA佔最大多數,如果還要透過一個轉接頭的話還會增加 3dB 的轉換插損,因此直接換掉會比較簡單解決,另外還會更換掉原來的石英晶振,原有的晶振的偏移很大(10-30ppm),換上之後可以壓到(5ppm)以下,頻率接收會更準確之外也比較不會因為發熱之後大量的偏移頻率造成接收品質變差。

 

IMG_2447

完成改裝之後都會先接上電腦,連接天線之後開啟SDR軟體進行檢查硬體是否有問題,筆者常用的是CubicSDR進行檢查,他是開放原始碼的,支援 Windows / macOS / Linux 以及原始碼可以到其他的作業系統自行編譯後使用,GUI介面很簡單易用,還有其他常用的例如:GQRX/HDSDR/RTLSDR等等的軟體可以使用,都算非常易用的,接上電腦之後他會顯示為RTL2832U的音效卡,在Windows底下只要補一個RTLSDR.Dll即可以用在SDR軟體內,而在Linux / macOS上大部分在安裝過程中就會自動帶上,因此比較沒有這個問題。

IMG_2448

軟體

IMG_2446

以上工程都完工之後就能夠進行後續接收ADS-B的工作了,接下來可以準備一台Raspberry Pi 或者是Linux 的電腦,使用 Ubuntu/Debian 會相對比較簡單,詳細方法如這個網址:點我前往 ,安裝方式大部分系統都是一樣的,安裝完成之後在Dump1090上增加

方法:sudo dpkg-reconfigure dump1090-mutability

“Interface address to bind to (blank for all interfaces) “ , 刪除 127.0.0.1 後留空直接按Enter 並且在Extra arguments to pass to dump1090“, 上打入  –net –net-http-port 8080  這樣的話就能夠使用Web介面查看ADS-B的接收狀況。

螢幕快照 2017-01-21 下午4.55.00

(圖片為筆者自行編譯的版本,實際使用不同Dump1090版本會有所差異)

ADS-B編碼

螢幕快照 2017-01-22 下午5.27.04

ADS-B是使用二進制編碼,前面有0.8us 的標頭之後送出DATA,DATA 內含飛機廣播的所有訊息,0/1的編碼方式如圖,依照資料量可能花費的時間是56 或 112 us 總共就是每送一次訊息會有64us /120us的花費時間。

adsb-packet而ADS-B要怎麼看RAW呢?我們在安裝時他會問你要不要開相關Port進行輸出,只要透過軟體連到這Port之後就能看到RAW檔或者是Decode 檔來提供給其他的軟體解析使用。RAW輸出為16進位,透過ADS-B通用轉換格式之後就能夠轉換成易懂的內容,ADS-B的解碼內除了基本的航班、速度、高度之外,還會有例如引擎推力狀況、系統內部的設定等等 都可以被接收解出來,所以ADS-B在災難發生時還能夠透過收到的內容去推估班機情況,非常好用。

AVR RAW碼範例:

Decode:

 

IMG_2504

圖為RTL1090 接收直出RAW

HACK DRAM , 修改SPD 的理論與實作

Posted on 4 CommentsPosted in 硬體駭客
蘋果電腦機器對於記憶體時脈相當嚴格,2008~2011 都不適用現行的 DDR3 1600記憶體 ,插入會報錯或一開始正常,但使用一段時間以後會容易當機。

但是現在市面上 DDR3 1066、1333記憶體很難購買又昂貴,市場上很多汰換下來的 Apple 原裝 Hynix Elpdia DDR3 1600 2G 4G記憶體,這家價格頗為低廉,如果能降時脈這樣多方便阿 。

這邊先來說 電腦是怎樣檢查記憶體時脈的.

早期電腦 在 power-on self-test (POST) 下, BIOS開機時候必須偵測memory時脈會浪費時間,希望能讓bios知道記憶體是啥時脈.
就不要再去作偵測測試動作,記憶體上就有這組資訊 SP (Serial Presence Detect),中文意思是模組存在的串列檢測。
透過記憶體插槽中以I2C協定跟Bios 通訊,
BIOS直接讀取 SPD取得記憶體的相關資料,Bios就會決定用這記憶體時脈工作
SPD資訊則存在EEPROM內.

 
spd_doctor
如圖DRAM 模組有關的資訊都必須紀錄在EEPROM 內 ,廠牌名,生產日期 ,時脈等.
 
蘋果電腦BIOS 對於時脈很嚴苛,DRAM SPD 時脈要完全相合機器鎖定的時脈 
這時可以修改記憶體SPD. 1600->1333 讓Apple bios 可以接受
使用Thaiphoon Burner 軟體可以修改SPD時脈。
(以下部分圖引與文字 引用自Thaiphoon Burner官網)
thaiphoon

但對 Apple 原裝 DRAM SPD 執行修改時,設備會出現『無法寫入錯誤』,這是因為 Apple 原裝 DRAM 上都有永久寫入保護。

 
 
那什麼是永久寫入保護?

永久軟體寫入保護 Permanent Software Write Protection (PSWP)是針對EEPROM資料陣列的開頭128位元組一種無法倒回的保護,可由軟體設定成永久有效。資料陣列中的第二部分大半是可以做寫入程序。軟體與硬體的寫入保護不同之處在於前者使用EEPROM的WP針腳來保護資料陣列。除此之外,在硬體寫入保護能透過連接 WP 腳位到 Vss(接地)來停用的情況下,PSWP被啟動之後它是無法倒回的。

 
 
不是所有的 EEPROM 裝置都相容 PSWP。一 般有PSWP 功能的 EEPROM 裝置 前面代號為3402。這數字裡 34 代表的是 ,這是 支持PWSP寫入保護功能的  I²C EEPROM 。它是用在取代被廣泛使用在SDRAM 模組上但不支援 PSWP 的 24C02 系列舊晶片的次世代EEPROM裝置。3402 晶片在 TSSOP8 封裝中被廣泛使用在 DDR 與 DDR2 SDRAM 上。3402 晶片甚至可以在更早期的 PC SDRAM 模組上看到。
 
常用的 SPD EEPROM零件:STM生產的M34C02 2Kbit EEPROM。Crucial,Kingston,Samsung等許多DRAM供應商都有在用。其他供應商ATMEL AT34C02C,ISSI IS34C02B,ON Semi(以前稱為催化劑半導體)CAT34C02,Microchip 34LC02 EEPROM 也是一樣。PSWP能夠保護EEPROM數據內容的前半部分。
 
 

cat34c02i mc24aa52

 

要識別EEPROM器件,製造商應用其零件編號系統。但是由於EEPROM器件是非常小的芯片,製造商使用比完整部件號短的部件號的縮寫。如上所述,3402是最常見的部件號碼。此外,我們可以在芯片封裝的頂部找到部件號碼,如34C1,302RP,AT34等,相對於3402 EEPROM器件。但是在大多數情況下,如果EEPROM上的部件號缺失,則很難確定EEPROM器件的供應商。下表結合了與併入PSWP功能的3402芯片兼容的EEPROM芯片。

 

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-22-%e4%b8%8a%e5%8d%8811-30-26

 

有SWP功能的串行EEPROM,零件號以“24”開頭。例如,三星半導體曾經將Microchip 24LCS52串行EEPROM用於DDR3 SDRAM無緩衝DIMM。下一個表對具有以“24”開頭的標記代碼的EEPROM器件進行分組。

%e8%9e%a2%e5%b9%95%e5%bf%ab%e7%85%a7-2016-11-22-%e4%b8%8a%e5%8d%8811-30-38

 

 

 

pswpbox1 

從版本6.7.0.0開始Thaiphoon Burner能夠確定EEPROM器件中的PSWP功能。要檢查是否包含PSWP,請從EEPROM主菜單中選擇PSW保護。
如果相應的SPD EEPROM不受寫保護,則它們不應灰顯。否則,您的SPD EEPROM是硬件或軟件保護不被重寫,或它們不是相對於3402芯片。

 

 
所以說 當DRAM 上EEPROM被設定永久寫入保護(PSWP),要更改時脈,就要更換EEPROM 

img_20161122_152410
上圖空接腳處為TSSOP 8接點.原SPD EEPROM位置. 

更換EEPROM後,就可修改Apple原裝 1600記憶體的時脈,讓舊機器都可順利使用。