跳到主要內容

發表文章

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

研究VOLVO的PIDs (4):造一台車,學習逆向工程

引言 這一篇來講一些黑客的技巧,我要造一台假的車,藉由改變這台車的行為,觀測Car Scanner Pro的反應,深入研究各種PID 和原裝貨一樣,這台車有兩條CAN Bus,放上ELM327和Car Scanner Pro打交道。我在單板電腦寫了 一段程式 ,除了沒有四個輪子,他表現得VOLVO XC60完全一樣 連上Car Scanner Pro 正確回答Car Scanner Pro後,APP就認定這是一輛車,如下圖,VIN碼正確的辨識出來 以下是連線過程實錄,CAN2是APP詢問,CAN0是汽車回應。汽車ECU通訊有標準,寫在ISO 15765。下面兩頁是配菜,搭配使用即可解讀。有個瑣碎而微妙的細節:詢問用7DF(廣播封包),回應用7E8,但是流量控制封包用7E0,搞懂他們的關係就能參透OBD2協定 https://en.wikipedia.org/wiki/OBD-II_PIDs https://en.wikipedia.org/wiki/ISO_15765-2 逆向工程Car Scanner Pro 因為Car Scanner Pro能正確解讀封包,所以我想塞各種封包讓APP解讀,測試封包意義。下圖有電池相關的內碼的解析結果 單板電腦裡的軟體實作如下,他回應電池的查詢順便修改數值,在APP畫上鋸齒。Python寫起來很直覺,大概看上去就知道在做什麼 很酷吧!真的車不可能畫出這種圖😁 結論 藉由中間人攻擊,我們能觀測Car Scanner Pro查詢使用的PID;再用這篇文章的技巧,就能正確解讀每個封包的具體意義。如果想寫功能一樣的APP,用這兩招就能抄答案了 這個技巧的用途多多,藉著建構一輛車的模型,除了能在APP上畫圖,也能用來窺探傳輸協定的意義。當然還有更多奇奇怪怪的用法,請發揮想像力了 如果你對這段軟體有興趣,請 自行 取用

VOLVO XC60鋰鐵評估:半年使用報告

這篇文章紀錄半年使用心得,接下來預計每半年追蹤一次,提早掛掉也會誠實面對 沒有遇到無法發動,突然熄火,螢幕突然黑掉等問題 觀測電壓,大多都在以下幾個區域 13.x,一般電壓;放開油門滑行會導引動力到發電機,電壓會稍高 14.x,汽車拉高電壓快速充電 ~15,剛發動會到這個電壓,快速讓電池回充,在一分鐘內會回到14.x。不會長時間處在這個區域(這個區域略為接近鋰鐵電池的充電極限電壓,略有疑慮) 自動起停的反映稍微怪一點,這一篇文章會分析 XC60的發電機需要通電(激磁)後才能發電,所以車子能控制發電機的電壓和電流。下圖是Car scanner的圖片,最重要的是上方的Alternator charge voltage request。車子啟動會短暫拉高電壓,然後就長期在13.6,自動起停做動期間就是10.6 比較怪的是下圖,發電機電壓約14.6v,電流在0A附近上下跳動。 自動起停都不會動 問題的場景和分析 這張圖車子放隔夜,這一趟自動起停無法運作。紀錄如上圖,發電機推14.6v 我猜車子認定電池 快要飽但是還沒飽( SOC=99% or 100% ) 。電腦想把電池充飽,關閉自動起停,沿路推14.6v。開到目的地,車子認定 電瓶充飽了 回去的路上,自動起停就能正確運作,並且發電機只推出13.6v,紀錄如上上圖 放隔夜後,再繼續重複上述的循環 使用半年一切正常,除了上述自動起停的反應稍微怪一點,沒有異狀。我猜XC60只認得鉛電池,也許鋰鐵電池讓XC60很想把電池充飽電。如果有人知道原因,希望能指點迷津一下