1. 程式人生 > >電動汽車的車型複雜多樣,TBOX如何做好汽車的匯流排資料功能協議適配?

電動汽車的車型複雜多樣,TBOX如何做好汽車的匯流排資料功能協議適配?

一般可以藉助 CANalyst-II 匯流排報文收發器工具與汽車的 CAN 匯流排相連,可以獲取到 CAN總線上廣播的 CAN 資料包。通過 CanTest 軟體可以實時的觀察到 CAN 總線上正在傳送的資料包。

從大量的 CAN 資料包中進行逆向分析,找到汽車車身的控制指令對應的是哪一個 CAN ID,逆向分析出這樣 CAN 資料包所代表的含義,這是最基本也是最重要的一步。逆向出了這些車身控制的資料包指令資訊後,瞭解這些資料包的工作原理。根據這些資料包的工作原理,制定出可行性攻擊策略。例如:

對於車身的某一項功能的控制,只需要一個 CAN ID 的資料包即可達到控制效果,對於這種情況,只需要單純的重放這一個資料報即可達到攻擊的目的,控制汽車車身的某一項功能。對於車身的某一項功能的控制,可能需要多個 CAN ID 的資料包聯合才能控制。構造一個這樣的 CAN ID 資料包,設定傳送間隔傳送到 CAN 網路當中,間隔的制定是為了繞過 ECU 的時間檢測機制。

某些的 CAN ID 資料包中帶有計數器,我們所謂的心跳包,在攻擊的時候必須加上計數器,才能繞過系統檢查。編寫一個指令碼程式模擬 CAN ID 資料包資料位的變化規律,將這樣的資料傳送到 CAN 匯流排當中等等。

資料包上一共 8 位,每一位上的位元組代表什麼。例如速度表上的數值,是 CAN 資料包資料位某幾位數值,帶入一個計算公式計算出來的,前兩位數值相加與第四位數值的乘積為當前的車速值。對於這種資料包的破解,我們需要大量收集這個資料包,逆向出來這個公式。

CanTest 的 DBC(資料庫功能)功能逆向資料包所代表的指令,DBC 功能能夠顯示當前匯流排中有多少種 CAN ID。在汽車作出動作指令後,CAN ID 的報文是如何進行變化的,DBC 會把變化的部分標成紅色。通過觀察哪一個 CAN ID 在汽車發出指令後發生變化(這種變化通常只在瞬間),來確定此項車身控制指令對應的是哪一個 CAN ID。

以車門資料為例,通過改變車門的開關狀態,利用 DBC 進行觀察。在車門改變開關狀態的同時,觀察是哪一個 CAN ID 發生了變化,從而確定和車門狀態相關的 CAN ID是哪一個。測試環境說明:汽車未啟動,車內一切電器裝置保持原有狀態,只對車門狀態進行改變,DBC 介面如圖:

通過實驗統計發現車門的開關狀態和資料位的第一位的第二個位元組有關:

** ** ** 10 04 19 02 FF。

四個車門正好有 16 種狀態,第一位的第二個位元組正好能全部表示,如下表 3-2 所示:√表示車門開,×表示車門關。