特斯拉有一個漏洞賞金計畫,邀請研究人員尋找其車輛的安全漏洞。為了參與,我需要實際的硬體,因此開始在eBay尋找特斯拉Model 3的零件。我的目標是讓特斯拉車載電腦和觸控螢幕在桌面上啟動,運行車輛的作業系統。
車載電腦由兩部分組成——MCU(媒體控制單元)和自動駕駛電腦(AP),兩者堆疊在一起。在車內,這台電腦位於副駕駛座前方,大約在手套箱後方。這個零件大小約如iPad,厚度相當於約500頁的書,外覆水冷金屬外殼。
我在eBay搜尋「Tesla Model 3 MCU」時,發現價格多在200至300美元之間。許多賣家是從撞毀車輛拆解零件的回收公司,有時還會附上原車的照片,並能過濾同一輛車拆出的零件。
為了啟動車載電腦並與之互動,我還需要其他幾樣東西:
電源供應器我選擇了Amazon上的可調式0-30V型號,有5A和10A版本,考慮到安全起見選了10A,後來證明這是明智的,因為整套系統峰值電流可達8A。Model 3的螢幕在eBay上價格相當高,我猜是因為它是熱門的更換零件,我找到一個175美元的好價錢。
最難訂購的是連接MCU與螢幕的線材。因為電腦和螢幕賣家多半將線材在接頭幾公分處切斷(有趣的是大多數賣家都這麼做,而不是直接拔掉線材)。
這時我發現特斯拉公開了所有車款的電路「電氣參考手冊」。在他們的維修網站上,可以查詢特定車型,搜尋零件(如顯示器),會顯示該零件的接線方式、使用的線材與接頭,甚至單一接頭中各腳位的功能。
結果顯示螢幕使用6針線(2針供12V與接地,4針傳輸資料),接頭為特殊的Rosenberger 99K10D-1D5A5-D。我發現除非是車廠大量訂購,否則無法單買這種Rosenberger線材,eBay、Aliexpress都找不到相關商品。
經過一番搜尋,我發現這條線與BMW車輛常用的LVDS汽車線非常相似,LVDS用於傳輸影像。初看之下,接頭與我的Rosenberger接頭幾乎一模一樣,於是我下訂了。
電腦先到貨。為了嘗試啟動,我查閱特斯拉電路圖和網路上其他人桌面MCU設置的照片,找出需要接12V與接地的接腳。由於電腦附帶的線材被切斷,我剝開相關線材,將電源夾接上正確的線路。
我看到幾個紅色LED開始閃爍,電腦啟動了!因為還沒螢幕,無法多做互動。根據@lewurm在GitHub的研究,至少舊款車輛內部有一個網路,部分元件有自己的網頁伺服器。我將乙太網路線接到電源旁的埠口,連接到筆電。
這個網路沒有DHCP,需要手動設定IP,IP需為192.168.90.X/24,且大於192.168.90.105以避免衝突。在Reddit上,我找到一份舊車的/etc/hosts檔案,列出常見IP與主機名稱對應。
@lewurm的部落格提到MCU(192.168.90.100)開放22端口的SSH和8080端口的網頁伺服器。新款車型是否仍然如此?答案是肯定的!
我已找到兩個可探索的MCU服務。
這時我也拆除金屬遮罩,查看內部電路板。可以看到兩塊不同的電路板堆疊在一起。
螢幕和BMW LVDS線材到貨後,很遺憾接頭無法匹配。BMW接頭兩側較厚,無法插入螢幕。於是我嘗試將MCU和螢幕原本的「尾端」線材剝開,手工連接各條細線。這些線材非常細且敏感。雖然裝置短暫運作了幾秒,但線材碎屑掉落電路板造成短路,燒毀了一顆電源控制晶片。
燒毀晶片的型號難以辨認,因為部分文字因損壞無法辨識。為了繼續專案,我不得不再訂購一台完整的車載電腦。
期間,我的朋友Yasser(@n3r0li)奇蹟般地辨識出該晶片為「MAX16932CATIS/V+T」降壓控制器,負責將電壓轉換為較低電壓。我們訂購晶片並送至當地PCB維修店,成功更換並修復MCU。現在我有兩台電腦可用。
因此我確實需要那條Rosenberger線,無法省略。
在網路找不到後,我甚至前往倫敦的特斯拉服務中心(經歷相當特別),最後不得不接受一個事實:必須購買整條儀表板線束。
回到特斯拉電氣參考手冊,除了接頭外,每個零件都有料號。查詢連接MCU與螢幕的線材料號為1067960-XX-E。搜尋eBay後,出現一條龐大的線束。
原來車輛並不使用單一線材,而是將多條線束成一組線束(loom),將附近區域的多條線集中成一條線束。這也是我之前找不到單條線材的原因,因為根本沒生產單條線材。無奈之下,我花了80美元買下整條線束。
雖然線束龐大,但運作完美。車輛啟動,觸控螢幕亮起,我成功在桌面上運行了特斯拉車載電腦,並執行車輛作業系統!
系統運行後,我可以開始操作使用者介面,與開放的網路介面互動,探索CAN總線,甚至嘗試提取韌體。