0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

車聯(lián)網(wǎng)安全進(jìn)階之Trick——Android車機運行Python

jf_EksNQtU6 ? 來源:談思實驗室 ? 2023-11-17 16:15 ? 次閱讀

在整車環(huán)境下,網(wǎng)絡(luò)隔離劃分出了多個網(wǎng)絡(luò)。多數(shù)的 ECU(注,本文中的 ECU 特指支持 TCP/IP 協(xié)議棧的 ECU) 不能夠與測試機直連,雖然通過內(nèi)網(wǎng)穿透技術(shù)可以實現(xiàn)訪問這些隔離的 ECU。在內(nèi)網(wǎng)穿透環(huán)境下測試由于轉(zhuǎn)發(fā)問題會出現(xiàn)異常連接的情況。例如,使用 Python 的 Scapy 模塊編寫 SOMEIP 腳本時無法建立連接。

Python 腳本比較靈活,支持的模塊也比較多,但 Python 上車確實是個問題。智駕上往往原生支持Python,但通常作為測試入口的車機,Python 卻不支持的。最近在漏洞挖掘中,在車機上對 Python 有迫切的需求,于是就又雙叒叕去搜索了一下 Android 上運行Python的方法,所有的方案指向—— Python IDE APP。那就得安裝一個 APP,但當(dāng)下新出的車機有的加了系統(tǒng)簽名驗證導(dǎo)致第三方應(yīng)用無法安裝。那先試試安裝APP這個方案。

一共嘗試了5種方案,最終選擇了方案④,使用獨立的Python虛擬環(huán)境。

03118154-851e-11ee-939d-92fbcf53809c.gif

方案①:安裝 Python IDE APP

Qpython、Pydroid 是Android上用的比較多的編輯器/IDE。在能夠安裝第三方APP的車機上,使用 adb 安裝上應(yīng)用。然后使用就比較尷尬了,圖形化界面在測試中是個弊端,把車機屏幕當(dāng)成顯示屏,外接鍵盤來測試?有的車機也不是識別鍵盤呀!

突然想起我手機上的 Termux 也是可以安裝 Python。但是 Termux 也是圖形的,也不是圖形化——主界面是命令行。怎么通過ADB 使用純命令行的 Termux 呢,嘗試第二種方案——ADB中使用Termux。

Termux是一款基于Android系統(tǒng)的終端模擬器應(yīng)用程序,可以在Android設(shè)備上運行命令行界面和Linux軟件包。它提供了一個完整的Linux環(huán)境,包括常用的命令行工具、編程語言和軟件包管理器等。

03253a14-851e-11ee-939d-92fbcf53809c.png

方案②:ADB中使用Termux

首先看看 Termux 用的 SHELL 是哪個,直接查看環(huán)境,SHELL 的路徑是 /data/data/com.termux/files/usr/bin/bash

~ $ echo $SHELL
/data/data/com.termux/files/usr/bin/bash

先拿手機試試,進(jìn)入ADB SHELL 切換到 Termux 的SHELL。好消息,命令行的Termux進(jìn)去了;壞消息,Python運行不了。

032db63a-851e-11ee-939d-92fbcf53809c.png

其實,已經(jīng)裝了 Python,運行不了的原因是缺少環(huán)境變量。缺啥補啥,這就去加個環(huán)境變量。添加環(huán)境變量 PATH 就能直接使用 python等命令了,指定依賴庫的位置 LD_LIBRARY_PATH 也不可或缺。

export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib/
export PATH=$PATH:/data/data/com.termux/files/usr/bin

環(huán)境變量設(shè)置好了,果然進(jìn)來了。

0335ce2e-851e-11ee-939d-92fbcf53809c.png

那么問題來了,雖然能用Python,但這輛車上不能安裝第三方應(yīng)用。那擺在眼前的是怎么在不安裝 APK 的情況下使用Termux。都到這里了,證明ADB運行Python是可行的,那么繼續(xù)下一步——遷移Termux。

方案③:遷移Termux

查看 Termux 安裝后的文件結(jié)構(gòu)發(fā)現(xiàn),/data/data/com.termux/files/usr/ 下不就是 POSIX 的文件系統(tǒng)結(jié)構(gòu)么。

.../data/com.termux $ tree -L 3               
├── cache                             
│ └── apt                            
│   ├── archives                       
│   ├── pkgcache.bin                     
│   └── srcpkgcache.bin                    
├── files                             
│ ├── home                           
│ │ └── test                         
│ └── usr                            
│   ├── bin                          
│   ├── code                         
│   ├── etc                          
│   ├── include                        
│   ├── lib
│   ├── libexec                        
│   ├── share
│   ├── tmp                          
│   └── var
└── shared_prefs                           
└── com.termux_preferences.xml

車機的架構(gòu)和手機架構(gòu)一樣,直接打包復(fù)制到車機上。

說干就干,復(fù)制到 /data/local/tmp/ 下,設(shè)置好環(huán)境變量。

export LD_LIBRARY_PATH=/data/local/tmp/data/data/com.termux/files/usr/lib
export PATH=$PATH:/data/local/tmp/data/data/com.termux/files/usr/bin

Python 啟動!

034f2176-851e-11ee-939d-92fbcf53809c.png

能用就是包有點大 700M,想想感覺可以精簡。

方案④:獨立的 Python

手機是AARCH64,車機也是AARCH64, 那么 Termux 的Python軟件包是不是能直接使用。直接去 Termux 的包管理網(wǎng)站下載 python_3.11.6-1_aarch64.deb。

deb 中有三個文件,其中 data.tar.gz 是主要的程序文件。

035ba090-851e-11ee-939d-92fbcf53809c.png

data.tar.gz 放到車機里面卻發(fā)現(xiàn)報錯,缺少依賴環(huán)境。

0363ad62-851e-11ee-939d-92fbcf53809c.png

缺啥補啥,從Termux lib 中摳出來,有點未免太費勁了。都到這里了,還是嘗試添加一下依賴吧。把 libandroid-support.so 上傳到 /data/local/tmp/data/data/com.termux/files/usr/lib 竟然成了,不是連環(huán)的缺少依賴。

03703d34-851e-11ee-939d-92fbcf53809c.png

又試了試 pip,包里面沒有 pip。

037bbb46-851e-11ee-939d-92fbcf53809c.png

補充了 pip,也能安裝模塊,但是不能使用,因為配置的 lib 路徑的文件,必須和 termux 的文件結(jié)構(gòu)一致才行。但獨立出來,路徑是固然要改的。于是想到修改pip下載模塊的默認(rèn)存儲路徑。配置需要寫入配置文件到根目錄,然而大部分車機的根目錄是不可寫的。

0387be8c-851e-11ee-939d-92fbcf53809c.png

繼續(xù)修復(fù)Bug,那還不如直接用方案三中的直接復(fù)制過來Termux環(huán)境。老老實實用Termux的環(huán)境,占用的磁盤空間大就大點吧!

對了,還有一種方案就是使用虛擬環(huán)境 venv,直接使用 python -m venv venv 不出意料也報錯,修復(fù)報錯后,就大功告成了。打包好放在 https://github.com/delikely/Automotive-Security-Toolkit/tree/main/pydroid ,各位看官自取。

03a27d8a-851e-11ee-939d-92fbcf53809c.png

方案⑤:靜態(tài)編譯Python

話又說回來,不同的車機可能缺少的依賴不同,那存不存在靜態(tài)編譯的Python呢?這可能是最佳的方案,靜態(tài)編譯的 Python 和 pip,就像靜態(tài)編譯的 busybox 一樣,沒有依賴問題直接用。但是找了一圈又一圈,現(xiàn)成的壓根沒有,有沒有愿意嘗試靜態(tài)編譯 Python 的勇士呢?


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126608
  • 車聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    76

    文章

    2544

    瀏覽量

    91385
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84068

原文標(biāo)題:車聯(lián)網(wǎng)安全進(jìn)階之Trick——Android車機運行Python

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    聯(lián)網(wǎng)催生行業(yè)應(yīng)用新契機

    、信息發(fā)布等?!敝袊?lián)通上海市分公司副總經(jīng)理李爽近日表示。作為物聯(lián)網(wǎng)的重要分支,聯(lián)網(wǎng)因為能夠緩解交通壓力、幫助人們安全便利出行而備受用戶歡迎,在汽車保有量急劇增長、城市交通狀況日益惡
    發(fā)表于 07-11 18:50

    聯(lián)網(wǎng)——汽車工業(yè)未來的發(fā)展

    解決交通問題的最最有效途徑。我們IOV是物聯(lián)網(wǎng)在汽車領(lǐng)域的一個應(yīng)用,是移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)實際業(yè)務(wù)實質(zhì)和縱深發(fā)展的必由之路,是未來信息通信、環(huán)保、節(jié)能、安全等發(fā)展的融合性技術(shù)。目前,國內(nèi)
    發(fā)表于 12-03 15:37

    聯(lián)網(wǎng)——汽車工業(yè)未來的發(fā)展

    解決交通問題的最最有效途徑。我們IOV是物聯(lián)網(wǎng)在汽車領(lǐng)域的一個應(yīng)用,是移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)實際業(yè)務(wù)實質(zhì)和縱深發(fā)展的必由之路,是未來信息通信、環(huán)保、節(jié)能、安全等發(fā)展的融合性技術(shù)。目前,國內(nèi)
    發(fā)表于 12-25 14:28

    聯(lián)網(wǎng)——汽車工業(yè)未來的發(fā)展

    解決交通問題的最最有效途徑。我們IOV是物聯(lián)網(wǎng)在汽車領(lǐng)域的一個應(yīng)用,是移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)實際業(yè)務(wù)實質(zhì)和縱深發(fā)展的必由之路,是未來信息通信、環(huán)保、節(jié)能、安全等發(fā)展的融合性技術(shù)。目前,國內(nèi)
    發(fā)表于 01-28 14:40

    聯(lián)網(wǎng)的架構(gòu)分析實現(xiàn)聯(lián)網(wǎng)的價值

    2018年的風(fēng)口是什么?人工智能?區(qū)塊鏈?還是物聯(lián)網(wǎng)?物聯(lián)網(wǎng)是國家戰(zhàn)略性新興產(chǎn)業(yè)的重要組成部分,是繼互聯(lián)網(wǎng)之后的新一輪信息技術(shù)革命。物聯(lián)網(wǎng)應(yīng)用的行業(yè)有很多,
    發(fā)表于 02-11 10:13

    聯(lián)網(wǎng)安全芯片,規(guī)級加密芯片,聯(lián)網(wǎng)安全方案

    目前物聯(lián)網(wǎng)以及聯(lián)網(wǎng)的發(fā)展以及產(chǎn)品的普及,讓大家開始注意到了,對于數(shù)據(jù)加密的需求,開始關(guān)于對于數(shù)據(jù)通信的安全和對于合法用戶的認(rèn)證 深圳市鼎恒創(chuàng)科技專注于固件保護(hù)和數(shù)據(jù)加密傳輸多年,相關(guān)
    發(fā)表于 03-27 10:48

    聯(lián)網(wǎng)終端應(yīng)用

    」的模式,在車聯(lián)網(wǎng)中擁有重要的一席之地。事實上,聯(lián)網(wǎng)不但可以提升行車安全,也讓現(xiàn)實交通運行更有效率。
    發(fā)表于 07-17 07:33

    什么是聯(lián)網(wǎng)通信技術(shù)?

    近年來,隨著汽車保有量持續(xù)增長,道路承載容量在許多城市已達(dá)到飽和,交通安全、出行效率、環(huán)境保護(hù)等問題日益突出。在此背景下,汽車的智能化和網(wǎng)聯(lián)化作為解決這些問題的重要途徑,受到了業(yè)界的高度重視。聯(lián)網(wǎng)
    發(fā)表于 08-19 08:08

    什么是聯(lián)網(wǎng)

    什么是聯(lián)網(wǎng)?聯(lián)網(wǎng)即 V2X(Vehicle to Everything),意思是和萬物互聯(lián)。
    發(fā)表于 09-16 10:36

    聯(lián)網(wǎng)用到的兩個技術(shù)解析:ITS和RFID

    聯(lián)網(wǎng)是解決未來城市交通壓力的一個重要項目,同時也將為行車安全提供保障,在未來的前景被十分的看好。但是,在實際的調(diào)查中,大眾的支持率卻顯得不高,究其原因是對
    發(fā)表于 06-06 07:00

    聯(lián)網(wǎng)進(jìn)階過程及產(chǎn)品研究設(shè)計模式

    什么是智能汽車?狹義地來看,智能汽車=聯(lián)網(wǎng)+新能源+自動駕駛。如果用這樣的定義來倒退,目前市面上還沒有智能汽車。事實上,智能汽車是有一個進(jìn)階過程的,大致如下:  
    發(fā)表于 06-06 08:00

    聯(lián)網(wǎng)關(guān)鍵技術(shù)盤點,帶你了解聯(lián)網(wǎng)的前世今生

    交通效率和交通安全為主的網(wǎng)絡(luò)與應(yīng)用。聯(lián)網(wǎng)關(guān)鍵技術(shù)及總結(jié)ITS即智能交通。是將先進(jìn)的傳感器技術(shù)、通信技術(shù)、數(shù)據(jù)處理技術(shù)、網(wǎng)絡(luò)技術(shù)、自動控制技術(shù)、信息發(fā)布技術(shù)等有機地運用于整個交通運輸管理體系而建立起
    發(fā)表于 06-08 14:31

    聯(lián)網(wǎng)現(xiàn)階段的組成部分

    上傳到互聯(lián)網(wǎng)大數(shù)據(jù)平臺,由中央處理器對大量上傳信息進(jìn)行匯總、分析和處理,系統(tǒng)將對每一輛交通參與車輛進(jìn)行全程控制,對每一條道路進(jìn)行實時管控,為使用者提供交通的效率與安全聯(lián)網(wǎng)現(xiàn)階段的
    發(fā)表于 10-22 07:02

    現(xiàn)階段“聯(lián)網(wǎng)”的實用價值在哪?

    現(xiàn)階段“聯(lián)網(wǎng)”的實用價值在哪?“聯(lián)網(wǎng)”能給我們帶來什么?“聯(lián)網(wǎng)”能給誰用?“
    發(fā)表于 06-16 07:53

    做技術(shù),選聯(lián)網(wǎng)行業(yè)建議

    平臺)之間的網(wǎng)絡(luò)連接,提升車輛整體的智能駕駛水平,為用戶提供安全、舒適、智能、高效的駕駛感受與交通服務(wù),同時提高交通運行效率,提升社會交通服務(wù)的智能化水平。想從事聯(lián)網(wǎng)、車載行業(yè)相關(guān)的
    發(fā)表于 04-14 14:05