服務(wù)ID匯總
首先總體看一下刷寫涉及的服務(wù)ID以及在刷寫過程的用途。
診斷服務(wù)標識 Service ID |
診斷服務(wù) Diagnostic Service |
在刷寫過程中的用途 |
---|---|---|
0x10 | 診斷會話控制 DiagnosticSessionControl | 切換到拓展會話檢查刷寫條件、停止一些功能切換到編程會話執(zhí)行刷寫 |
0x11 | ECU復(fù)位 ECUReset | 用于刷寫完成后重啟服務(wù),使新固件生效 |
0x27 | 安全訪問 SecurityAccess | 校驗刷寫者身份,采用seed-key |
0x28 | 通信控制 CommunicationControl | 關(guān)閉和啟用一般通訊報文 |
0x29 | 認證服務(wù) Authentication Service | 基于PKI的身份認證 |
0x31 | 例程控制 RoutineControl | 指定特定的例程,前置條件檢查、檢查編程依賴等 |
0x34 | 請求下載 RequestDownload | 設(shè)置下載的參數(shù)(起始地址、長度) |
0x36 | 數(shù)據(jù)傳輸 TransferData | 固件傳輸 |
0x37 | 請求結(jié)束傳輸 RequestTransferExit | 終止數(shù)據(jù)傳輸 |
0x3E | 測試設(shè)備在線 TesterPresent | 用于將會話保持在當前會話中 |
0x85 | 控制故障碼設(shè)置 ControlDTCSetting | 設(shè)置啟停故障碼存儲功能 |
會話
診斷會話關(guān)聯(lián)了一系列的診斷服務(wù)或診斷功能。只有當前激活的診斷會話支持的診斷服務(wù)才能被響應(yīng)。ECU通常有兩個以上的診斷會話,包括:一個默認會話(Default Session)和若干非默認會話(Non Default Session)。其中非默認會話又包括編程會話和擴展會話等。其他非默認會話由廠商自行定義。常見的ECU診斷會話定義如下:
診斷會話 | 會話ID | 描述 |
---|---|---|
默認會話 | 0x01 | ECU啟動后默認進入此會話。只提供基本的診斷服務(wù)。 |
編程會話 | 0x02 | ECU更新應(yīng)用程序或標定數(shù)據(jù)時進入此會話。支持與程序更新相關(guān)的診斷服務(wù)。如0x34、0x36、0x37等。 |
擴展會話 | 0x03 | 除支持默認會話下的診斷服務(wù)和功能外,還支持額外的診斷服務(wù)。 |
... | ... | ... |
診斷會話控制服務(wù)(0x10)是用于激活控制器各種不同的會話模式 。在固件刷寫中會使用0x10服務(wù)在默認會話、編程會話、拓展會話來回切換。
會話保持(3E 00)
此服務(wù)用于向單(或多)個服務(wù)端指示客戶端仍然與車輛連接,并且維持先前已激活的某些診斷服務(wù)和/或通信將保持活動狀態(tài)。此服務(wù)用于將一個或多個服務(wù)端保留在默認會話之外的診斷會話中,通過周期性的發(fā)送 3E 實現(xiàn)。
整個刷寫過程中, 刷寫工具要周期性的發(fā)送鏈路保持請求, ECU 不需要響應(yīng)請求信息。如果沒有開啟會話保持,幾秒后ECU就會切回默認會話。
刷寫前需要保持在拓展會話下。
刷寫中需要保持在編程模式下。
27 服務(wù)-安全訪問認證流程
安全訪問服務(wù)的目的是為保密和排放、安全相關(guān)的一些服務(wù)和數(shù)據(jù)提供訪問權(quán)限來保護數(shù)據(jù)。2E(通過DID寫入數(shù)據(jù))、2F(通過DID進行輸入輸出控制)、31服務(wù)(例程控制)、34服務(wù)(請求下載)、36服務(wù)(請求上傳)、37服務(wù)(數(shù)據(jù)傳輸)等服務(wù)需要經(jīng)過身份認證。身份認證利用了種子和密鑰之間的關(guān)系。服務(wù)的示例如下圖所示:
Request Seed:Tester 使用27服務(wù),并攜帶需要解鎖的安全等級 0X 發(fā)送給特定的 ECU。
Request Seed Reply : 對應(yīng)的ECU收到之后,生成4個字節(jié)的隨機數(shù) Seed,返回給 Teseter。
Send Key: Tester 拿到Seed后,使用自定義實現(xiàn)的 Seed2Key 算法計算出Key,發(fā)送給ECU。Send Key 中的安全訪問級別 0Y 為Request Seed的安全訪問級別的值 +1。例如當請求種子為 27 01 時,發(fā)送秘鑰則為 27 02(01+1)。
Send Key Reply : ECU 將收到的 Key 和 自己拿 Seed 作為輸入的 Seed2Key 計算出結(jié)果進行對比,然后返回驗證的結(jié)果。
Seed2Key 算法
安全訪問中最重要的就是Seed2Key算法,算法通常是一些比較簡單的移位算法,例如下列的算法。
#defineSECURITYCONSTANT 0x464c4147 WORDseedToKey(WORDwSeed,DWORDconstData) { DWORDwLastSeed; WORDwLastKey; wLastSeed=wSeed; wLastSeed=(wLastSeed>>5)|(wLastSeed<<23); ?wLastSeed?*=?7; ?wLastSeed?^=?SECURITYCONSTANT; ?wLastKey?=?(WORD)wLastSeed; ?return?wLastKey; ?}
seed2key 接受2個輸入?yún)?shù) 種子 和 安全常量,種子由 ECU 隨機產(chǎn)生;安全常量內(nèi)置在ECU和診斷儀中,在某種意義上來說安全常量就是密碼。采用同一算法的不同用途的 ECU,通常使用不相同的安全常量。
診斷連接方式
診斷設(shè)備與ECU連接有兩種方式,如下圖。
診斷設(shè)備連接網(wǎng)關(guān),由網(wǎng)關(guān)將消息轉(zhuǎn)發(fā)給ECU;
診斷設(shè)備與ECU直連。
固件格式
S-record、Intel Hex、BIN、VBF 是汽車中MCU固件常用的格式,下面簡單介紹一下這幾種格式。了解數(shù)據(jù)格式有助于固件分析、刷寫安全測試等。
S-record
S-record 是摩托羅拉設(shè)計的一種常于MCU內(nèi)存、EPROM、EEPROM 寫入的文檔格式,S-record 將二進制數(shù)據(jù)以ASCII字符表示。常用文件后綴名有 SRECORD、SREC、S19、mot。文件格式如下圖。
Header Record 文件頭信息,其中記錄有模塊名稱、版本號等;
Data Record 數(shù)據(jù)記錄,有 S1、S2、S3 三種類型;
Count Record(可選) 包含了先前傳輸?shù)腟1、S2、S3記錄的計數(shù);
Termination Record,結(jié)束記錄,有 S7、S8、S9 三種類型。
S0 Record(頭記錄):記錄類型是“S0”。地址場沒有被用,用零(0x0000)填充。數(shù)據(jù)場中的信息使用HEX轉(zhuǎn)換成字符串是:JKE_X1_APP_SOC.s19。此行表示程序的開始,不需燒入內(nèi)存,用來表述文件的相關(guān)信息,可能包含文件名、版本號等。
S3 Record(數(shù)據(jù)記錄):記錄類型是“S3” 。地址場由4個字節(jié)地址,數(shù)據(jù)場由可載入的數(shù)據(jù)組成。
S7 Record(結(jié)束記錄):記錄類型是“S7”。地址場由4字節(jié)的地址,包含了開始執(zhí)行地址。沒有數(shù)據(jù)場。此行表示程序的結(jié)束,不需燒入內(nèi)存。
注: S-Record 中記錄有固件的起始地址,逆向分析時直接從中獲取,然后設(shè)置為起始地址即可。
Intel HEX
在嵌入式MCU程序開發(fā)中,經(jīng)常編譯鏈接后生成的 HEX 就是采用的 Intel Hex 格式。也是一種將二進制文件轉(zhuǎn)換成了ASCII碼形式存儲的文本文件。
BIN
二進制文件,只有固件數(shù)據(jù),沒有起始地址、描述信息等。
自定義格式
車企自定義格式如,VBF(Volvo Binary File)。VBF 使用在 volvo、mazda、Ford、吉利等品牌的汽車中。
文件頭記錄有文件的VBF版本號、軟件版本信息、ECU物理地址、數(shù)據(jù)起始地址等。
分析工具
srecord
命令行工具 srecord
sudoapt-get install srecord
查看S-record文件信息
fans@fans:~$ srec_infoJKE_X1_APP_SOC.s19 Format: Motorola S-Record Header:"JKE_X1_APP_SOC.s19" Execution Start Address: 00FC0000 Data: 01000000-01089C5F 01180000-011800FF 0127FB80-0127FBDF 0127FF80-0127FFFF
文件轉(zhuǎn)換
S-record 轉(zhuǎn) hex
srec_cat JKE_X1_APP_SOC.s19 -Motorola -o JKE_X1_APP_SOC.hex -Intel
Intel hex 轉(zhuǎn) S-record
srec_cat JKE_X1_APP_SOC.hex -Intel -o JKE_X1_APP_SOC.s19 -Motorola
S-record 轉(zhuǎn) bin
srec_cat JKE_X1_APP_SOC.s19 -Motorola -o JKE_X1_APP_SOC.bin -bin
HexView
S-record、Intel Hex、BIN 文件之間的轉(zhuǎn)換可以采用 Vector 的圖形化文件編輯軟件 HexView。
專用工具
主機廠或供應(yīng)商自己開發(fā)的專用軟件,如VBF文件查看工具 VBF Tool.
腳本
根據(jù)文件格式定義,編寫腳本解析、提供固件,部分可以在 Github 上找。
# wget https://raw.githubusercontent.com/consp/vbfdecode/master/vbfdecode.py # python vbfdecode.py -b firmware.vbf Offset: 0x359, Location: 0x18000, Size: 0xB256C, Data Offset: 0x361 VBF v2.1 Description: Software part:1234type: APP Network: 0x00000000 Data Format Identifier: 0x00000000 ECU address: 0x000007C6 Frame_format: Erase frames: Data blobs: 0x00018000 0x000B256C e301 Saving: 18000.bin
?
碼上報名
AES 2023 第四屆中國國際汽車以太網(wǎng)峰會,6月8-9日,上海
更多文章
智能網(wǎng)聯(lián)汽車信息安全綜述
華為蔡建永:智能網(wǎng)聯(lián)汽車的數(shù)字安全和功能安全挑戰(zhàn)與思考
汽車數(shù)據(jù)合規(guī)要點
車載以太網(wǎng)技術(shù)發(fā)展與測試方法
車載以太網(wǎng)防火墻設(shè)計
SOA:整車架構(gòu)下一代的升級方向
軟件如何「吞噬」汽車?
汽車信息安全 TARA 分析方法實例簡介
汽車FOTA信息安全規(guī)范及方法研究
聯(lián)合國WP.29車輛網(wǎng)絡(luò)安全法規(guī)正式發(fā)布
滴滴下架,我卻看到數(shù)據(jù)安全的曙光
從特斯拉被約談到車輛遠程升級(OTA)技術(shù)的合規(guī)
如何通過CAN破解汽
會員權(quán)益:(點擊可進入)談思實驗室VIP會員
END
微信入群
談思實驗室專注智能汽車信息安全、預(yù)期功能安全、自動駕駛、以太網(wǎng)等汽車創(chuàng)新技術(shù),為汽車行業(yè)提供最優(yōu)質(zhì)的學(xué)習(xí)交流服務(wù),并依托強大的產(chǎn)業(yè)及專家資源,致力于打造汽車產(chǎn)業(yè)一流高效的商務(wù)平臺。
每年談思實驗室舉辦數(shù)十場線上線下品牌活動,擁有數(shù)十個智能汽車創(chuàng)新技術(shù)的精品專題社群,覆蓋BMW、Daimler、PSA、Audi、Volvo、Nissan、廣汽、一汽、上汽、蔚來等近百家國內(nèi)國際領(lǐng)先的汽車廠商專家,已經(jīng)服務(wù)上萬名智能汽車行業(yè)上下游產(chǎn)業(yè)鏈從業(yè)者。專屬社群有:信息安全、功能安全、自動駕駛、TARA、滲透測試、SOTIF、WP.29、以太網(wǎng)、物聯(lián)網(wǎng)安全等,現(xiàn)專題社群仍然開放,入滿即止。
掃描二維碼添加微信,根據(jù)提示,可以進入有意向的專題交流群,享受最新資訊及與業(yè)內(nèi)專家互動機會。
談思實驗室,為汽車科技賦能,推動產(chǎn)業(yè)創(chuàng)新發(fā)展!
原文標題:車聯(lián)網(wǎng)安全基礎(chǔ)知識之UDS刷寫前置基礎(chǔ)知識
文章出處:【微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
控制器
+關(guān)注
關(guān)注
112文章
16385瀏覽量
178378 -
EEPROM
+關(guān)注
關(guān)注
9文章
1022瀏覽量
81661 -
ASCII
+關(guān)注
關(guān)注
5文章
172瀏覽量
35124 -
ecu
+關(guān)注
關(guān)注
14文章
888瀏覽量
54544
原文標題:車聯(lián)網(wǎng)安全基礎(chǔ)知識之UDS刷寫前置基礎(chǔ)知識
文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論