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

關(guān)于傳輸流以及傳輸流中幾個(gè)重要概念
Labview 基于CAN UDS燒錄Hex文件
講解一下A/D和 D/A的基本概念
無(wú)線傳感器網(wǎng)絡(luò)涉及的7個(gè)重要概念

UDS診斷協(xié)議在純電動(dòng)汽車電機(jī)控制器中的應(yīng)用說(shuō)明
UDS常用診斷服務(wù)

應(yīng)用筆記 | TSMaster使用教程—UDS刷寫(xiě)流程

同星智能為英飛凌TLE989X系列芯片提供刷寫(xiě)方案

汽車UDS協(xié)議棧與XCP協(xié)議棧

ECU刷寫(xiě)流程之壓縮刷寫(xiě)技術(shù)解析

同星ECU診斷與刷寫(xiě)解決方案:降低了開(kāi)發(fā)ECU刷寫(xiě)軟件的難度!

盟通方案|如何集成UDS協(xié)議

評(píng)論