發表文章

目前顯示的是 12月, 2022的文章

文章總列表

VOLVO CEM Crack (3) P1/2 CEM Crack

圖片
這篇文章介紹如何攻擊P1/2的CEM,盡量深入淺出把 俄羅斯人vtl 的傑作介紹一下。透過10分鐘閱讀,一窺組合語言的奧妙,還有時間差攻擊(timing attack)的奧妙。完整 討論串 也可以慢慢讀 VOLVO P1/P2的CEM密碼是6個0-99的數字,能寫成AA BB CC DD EE FF。CEM使用車用電子大廠日本 瑞薩半導體 的MCU。VTL大叔顯然是箇中高手,找出比對密碼的關鍵程式如下 上面是瑞薩處理器的指令,組合語言。手寫組語是古代人技能,現代人還看祖語叫 苦命人 !簡單翻譯一下:CMP是Compare縮寫,比對兩個數值,輸入數值和正確答案 正確答案放在記憶體位置0xFFE000,正確答案第一位 輸入密碼放在記憶體位置[FB - 7] 比對其實是減法:結果非0代表不同!緊接JNE指令Jump if NOT-EQUAL,如果不同跳到0xFFCAF9。前五組CMP/JNE比對密碼前5個數字。這個結構的弱點是: 猜錯立刻跳走 ,攻擊者能簡單觀測 執行時間 ,判斷猜對或猜錯 下面是具體攻擊手法,AA=10執行時間多了 百萬分之三秒 ,第一個答案出來了 假如正確答案是AA=10,BB=11 AA=0,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+0)us AA=10,BB/CC/DD/EE/FF亂數產生,測試1000次,平均執行時間(X+3)us 繼續攻擊BB,手法一樣,慢慢拷問CEM挖出密碼! AA BB=10 0,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+0)us AA BB=10 11,CC/DD/EE/FF亂數產生,跑1000次,平均執行時間(Y+3)us 看到這裡還沒關掉網頁的您,已經學會時間差攻擊(timing attack)的精髓了!我把這個攻擊手法介紹給同事,不愧宅宅工程師,眼睛立刻發出光芒! 後記 寫程式比對密碼要有耐心,比完再跳出來,再補上一小段random delay增強安全性。外面的壞人會部署timing attack,不要挖坑給自己跳 上面程式額外的細節:輸入密碼重排過再比。VOLVO還是有額外多補上保護,觀察每道指令裡的數值,並不是連續的-7, -9, -5, -10, -8, -6。如果去看他的 程式碼 ,不同CEM編號打亂的方法還不同 感謝VTL大神,把難懂的組合語言翻譯成C c

VOLVO CEM Crack (2) P3 CEM Communication

圖片
這裡記載vdash/p3-tools通訊紀錄,記載high-level大概做哪些事,記錄 在此 和CEM連線前,會先確認軟體版本。比如F114讀出很多內部(看不懂)欄位 開始寫入ECU之前,使用7DF廣播ID通知所有裝置進入Programming session。這個封包大概灌了1000次,灌到確認所有裝置都保持安靜 開始對 CEM動手,先確認CEM已經在Programming Session,通過Security Access。這裡送出一組正確答案(seed, key),有興趣能拿 前一篇 的原始碼算看看 在Programming Session,不時會出現Tester Present封包,讓ECU保持在Programming mode 精彩的地方來了,Tester需要download(灌入ECU)一段資料,長度是0x3126 = 12582bytes灌到記憶體0x0430。下載完畢,觸發0x31 start routine,對應的參數正好是0x430。這段灌進去的程式有個行話叫Secondary BootLoader(SBL) 大概能腦補為什麼這樣設計 記憶體0x430寫了某些東西進去,再用"start-routine"啟動,很像注入一段程式。原則上可以用 ODA工具 去看看,我還沒勤勞到去讀組語。這一步也能作為額外的安全性,要灌入特定軟體才能做某些操作 一般CEM內部只放MCU,儲存空間頂多是內建的SRAM或Flash,頂多再放上EEPROM(超弱防護力)。這些記憶體比手機的Flash或DRAM可靠很多,汽車不允許行駛中記憶體壞掉吧…但是容量不大,塞入所有應用成本會太貴。把bootloader做成兩段式,看用途載入不同程式很合理 雖然這麼說… Teala電動車主電腦也是跑Linux,現在新車有漂亮液晶螢幕也是,上面都有DRAM和Flash。真的要設計這種機器,也不是做不出來 另外說句好笑的... 以前CEM密碼直接燒在EEPROM裡,開蓋即有答案 要寫入新設定,必定是讀出舊的,修補再寫回。VOLVO的CAR config長度254bytes,讀取位置在0x61100,開頭有些checksum之類的。這裡的記憶體位址,未必對應到真實的MCU記憶體位址。UDS通訊協定傳入的位址,到了軟體也能再轉一手存入 讀出來的參數,para0=9代表XC60

VOLVO CEM Crack (1) P3 CEM CRACK

圖片
先來張圖!改開機畫面像開新車,每次看都開心 這系列文章介紹VOLVO CEM(Central Electronic Module)保護,這類中文資料應該不多,讓有興趣的人參考。我並非汽車從業人員,從有限的觀點寫下筆記,寫錯了請用力嘲笑 想改開機畫面指南 需要一顆VOLVO DICE,這個很容易買 D5T5 的VDASH透過Internet和筆電上的DICE工作,可以 做那些事 都有簡單的說明 另外一套工具, 瑞典人 寫了P3-Tool,這裡也有 介紹 研究工具是 一套Pi 和一顆 USB-CAN D5T5的VDASH D5T5團隊的VDASH透過OBD2 port和汽車打交道。他能診斷VOLVO car:使用UDS通訊協定讀取錯誤碼,D5T5團隊深入研究(逆向工程)原廠診斷工具,吐出每個錯碼的意義 VDASH也能配置汽車,例如修改開機畫面。首先要解開CEM安全保護,下圖是VDASH嘗試破解CEM的通訊紀錄,他也依賴UDS通訊協定 我感興趣的是UDS, 以前 不得其門而入,現在能說個兩句了 開始說UDS(Unified Diagnose Service) 工業標準讓大家在同個平台創新,例如3GPP之於4G/5G行動通訊,IEEE之於Ethernet/ WiFi 汽車電子充滿濃濃的ISO味,讓品牌商和ECU廠商脫鉤。 ISO-14229 UDS Protocol 定義通訊方式,下面表格列出所有服務。透過OBD2 port讓讀取錯誤碼,更新軟體,修改配置變得可行 UDS只定義通訊規格,各家廠商在其上自訂安全機制。作為旁觀者,準備一套樹莓派加CAN-to-USB能在旁偷窺。藉著觀測VDASH的通訊紀錄,學習UDS通訊。搜尋"UDS 0x27",慢慢看也看得懂。拜中國所賜,也有很多高品質的 中文資料 VOLVO P3 CEM保護 CEM是主電腦,手機安裝 Car Scanner Pro 能查詢不少內部狀態,例如電瓶狀態,機油溫度,逆向工程原廠診斷工具即可得知。進階操作得先通過UDS 0x27 Security Access考驗,認證通過,才允許底層操作 VOLVO的SEED/KEY算法已經不是秘密了。第一個連結包括2600個討論,涵蓋P1/P2/P3 CEM破解,甚至有P1/P2 Car Config,讀吧!第二個連結是Arduino在 Teensy bo

社區調漲管理費10%

圖片
縣市長選舉,社區應該爭取了一個投開票所,大家下樓投票,也處理管理費調漲10%。靠著挨家挨戶拜託,這個議題終於過關了!這篇文章聊一下為什麼這次會成功,還有兩年前為什麼失敗 社區概念上三種房型,面積40/50/60,戶數均等。我們的管理費公式比較特別 BEFORE: 基本費1000 + 坪數*25 AFTER: 基本費1100 + 坪數*27.5 這公式很難看出設計精神,兩年前投票後,我拆解出原本的精神如下 面積40以內,一坪50 面積>40,一坪25 社區三種房型我都住過,我家消耗的資源和面積無關,每戶只收基本費才對。也有人說,面積大代表持分多,管理費也要跟著多。似乎都有道理,所以社區算是把兩種觀點都揉進去了 兩年前的投票,試著改變兩件事 取消基本費 , 全用面積計價 調高費率 調結構非常凶險:40變少,50持平,60增加,被加錢的人天生會反對,等於一開始就先聚集三分之一反對票。加上管理費調漲,變成 40持平 ,50小增,60大增。好像哪裡怪怪的,漲價怎麼有人費用不變?毫不猶豫,先反對再說 阻力最小的路徑 不碰費率結構,分攤比例不變;大家都平均調漲10%,符合直覺 挨家挨戶拜託,見面三分情,有講有機會 我個人的結論 照面積算錢,簡單直覺;社區管理規定抄來抄去,抄到照面積算錢的機率最高 主流做法真的合理嗎?我覺得不大對勁 收費結構只能設定一次, 最初的那一次 ,請下好離手