0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

车联网安全进阶之Trick——Android车机运行Python

jf_EksNQtU6 来源:谈思实验室 2023-11-17 16:15 次阅读

在整车环境下,网络隔离划分出了多个网络。多数的 ECU(注,本文中的 ECU 特指支持 TCP/IP 协议栈的 ECU) 不能够与测试机直连,虽然通过内网穿透技术可以实现访问这些隔离的 ECU。在内网穿透环境下测试由于转发问题会出现异常连接的情况。例如,使用 Python 的 Scapy 模块编写 SOMEIP 脚本时无法建立连接。

Python 脚本比较灵活,支持的模块也比较多,但 Python 上车确实是个问题。智驾上往往原生支持Python,但通常作为测试入口的车机,Python 却不支持的。最近在漏洞挖掘中,在车机上对 Python 有迫切的需求,于是就又双叒叕去搜索了一下 Android 上运行Python的方法,所有的方案指向—— Python IDE APP。那就得安装一个 APP,但当下新出的车机有的加了系统签名验证导致第三方应用无法安装。那先试试安装APP这个方案。

一共尝试了5种方案,最终选择了方案④,使用独立的Python虚拟环境。

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

方案①:安装 Python IDE APP

Qpython、Pydroid 是Android上用的比较多的编辑器/IDE。在能够安装第三方APP的车机上,使用 adb 安装上应用。然后使用就比较尴尬了,图形化界面在测试中是个弊端,把车机屏幕当成显示屏,外接键盘来测试?有的车机也不是识别键盘呀!

突然想起我手机上的 Termux 也是可以安装 Python。但是 Termux 也是图形的,也不是图形化——主界面是命令行。怎么通过ADB 使用纯命令行的 Termux 呢,尝试第二种方案——ADB中使用Termux。

Termux是一款基于Android系统的终端模拟器应用程序,可以在Android设备上运行命令行界面和Linux软件包。它提供了一个完整的Linux环境,包括常用的命令行工具、编程语言和软件包管理器等。

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

方案②:ADB中使用Termux

首先看看 Termux 用的 SHELL 是哪个,直接查看环境,SHELL 的路径是 /data/data/com.termux/files/usr/bin/bash

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

先拿手机试试,进入ADB SHELL 切换到 Termux 的SHELL。好消息,命令行的Termux进去了;坏消息,Python运行不了。

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

其实,已经装了 Python,运行不了的原因是缺少环境变量。缺啥补啥,这就去加个环境变量。添加环境变量 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

环境变量设置好了,果然进来了。

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

那么问题来了,虽然能用Python,但这辆车上不能安装第三方应用。那摆在眼前的是怎么在不安装 APK 的情况下使用Termux。都到这里了,证明ADB运行Python是可行的,那么继续下一步——迁移Termux。

方案③:迁移Termux

查看 Termux 安装后的文件结构发现,/data/data/com.termux/files/usr/ 下不就是 POSIX 的文件系统结构么。

.../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

车机的架构和手机架构一样,直接打包复制到车机上。

说干就干,复制到 /data/local/tmp/ 下,设置好环境变量。

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 的包管理网站下载 python_3.11.6-1_aarch64.deb

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

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

data.tar.gz 放到车机里面却发现报错,缺少依赖环境。

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

缺啥补啥,从Termux lib 中抠出来,有点未免太费劲了。都到这里了,还是尝试添加一下依赖吧。把 libandroid-support.so 上传到 /data/local/tmp/data/data/com.termux/files/usr/lib 竟然成了,不是连环的缺少依赖。

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

又试了试 pip,包里面没有 pip。

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

补充了 pip,也能安装模块,但是不能使用,因为配置的 lib 路径的文件,必须和 termux 的文件结构一致才行。但独立出来,路径是固然要改的。于是想到修改pip下载模块的默认存储路径。配置需要写入配置文件到根目录,然而大部分车机的根目录是不可写的。

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

继续修复Bug,那还不如直接用方案三中的直接复制过来Termux环境。老老实实用Termux的环境,占用的磁盘空间大就大点吧!

对了,还有一种方案就是使用虚拟环境 venv,直接使用 python -m venv venv 不出意料也报错,修复报错后,就大功告成了。打包好放在 https://github.com/delikely/Automotive-Security-Toolkit/tree/main/pydroid ,各位看官自取。

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

方案⑤:静态编译Python

话又说回来,不同的车机可能缺少的依赖不同,那存不存在静态编译的Python呢?这可能是最佳的方案,静态编译的 Python 和 pip,就像静态编译的 busybox 一样,没有依赖问题直接用。但是找了一圈又一圈,现成的压根没有,有没有愿意尝试静态编译 Python 的勇士呢?


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125644
  • 车联网
    +关注

    关注

    76

    文章

    2481

    浏览量

    91171
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473

原文标题:车联网安全进阶之Trick——Android车机运行Python

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    联网催生行业应用新契机

    、信息发布等。”中国联通上海市分公司副总经理李爽近日表示。作为物联网的重要分支,联网因为能够缓解交通压力、帮助人们安全便利出行而备受用户欢迎,在汽车保有量急剧增长、城市交通状况日益恶
    发表于 07-11 18:50

    联网——汽车工业未来的发展

    解决交通问题的最最有效途径。我们IOV是物联网在汽车领域的一个应用,是移动互联网、物联网实际业务实质和纵深发展的必由之路,是未来信息通信、环保、节能、安全等发展的融合性技术。目前,国内
    发表于 12-03 15:37

    联网——汽车工业未来的发展

    解决交通问题的最最有效途径。我们IOV是物联网在汽车领域的一个应用,是移动互联网、物联网实际业务实质和纵深发展的必由之路,是未来信息通信、环保、节能、安全等发展的融合性技术。目前,国内
    发表于 12-25 14:28

    联网——汽车工业未来的发展

    解决交通问题的最最有效途径。我们IOV是物联网在汽车领域的一个应用,是移动互联网、物联网实际业务实质和纵深发展的必由之路,是未来信息通信、环保、节能、安全等发展的融合性技术。目前,国内
    发表于 01-28 14:40

    联网的架构分析实现联网的价值

    2018年的风口是什么?人工智能?区块链?还是物联网?物联网是国家战略性新兴产业的重要组成部分,是继互联网之后的新一轮信息技术革命。物联网应用的行业有很多,
    发表于 02-11 10:13

    联网安全芯片,规级加密芯片,联网安全方案

    目前物联网以及联网的发展以及产品的普及,让大家开始注意到了,对于数据加密的需求,开始关于对于数据通信的安全和对于合法用户的认证 深圳市鼎恒创科技专注于固件保护和数据加密传输多年,相关
    发表于 03-27 10:48

    联网终端应用

    」的模式,在车联网中拥有重要的一席之地。事实上,联网不但可以提升行车安全,也让现实交通运行更有效率。
    发表于 07-17 07:33

    什么是联网通信技术?

    近年来,随着汽车保有量持续增长,道路承载容量在许多城市已达到饱和,交通安全、出行效率、环境保护等问题日益突出。在此背景下,汽车的智能化和网联化作为解决这些问题的重要途径,受到了业界的高度重视。联网
    发表于 08-19 08:08

    什么是联网

    什么是联网联网即 V2X(Vehicle to Everything),意思是和万物互联。
    发表于 09-16 10:36

    联网用到的两个技术解析:ITS和RFID

    联网是解决未来城市交通压力的一个重要项目,同时也将为行车安全提供保障,在未来的前景被十分的看好。但是,在实际的调查中,大众的支持率却显得不高,究其原因是对
    发表于 06-06 07:00

    联网进阶过程及产品研究设计模式

    什么是智能汽车?狭义地来看,智能汽车=联网+新能源+自动驾驶。如果用这样的定义来倒退,目前市面上还没有智能汽车。事实上,智能汽车是有一个进阶过程的,大致如下:  
    发表于 06-06 08:00

    联网关键技术盘点,带你了解联网的前世今生

    交通效率和交通安全为主的网络与应用。联网关键技术及总结ITS即智能交通。是将先进的传感器技术、通信技术、数据处理技术、网络技术、自动控制技术、信息发布技术等有机地运用于整个交通运输管理体系而建立起
    发表于 06-08 14:31

    联网现阶段的组成部分

    上传到互联网大数据平台,由中央处理器对大量上传信息进行汇总、分析和处理,系统将对每一辆交通参与车辆进行全程控制,对每一条道路进行实时管控,为使用者提供交通的效率与安全联网现阶段的
    发表于 10-22 07:02

    现阶段“联网”的实用价值在哪?

    现阶段“联网”的实用价值在哪?“联网”能给我们带来什么?“联网”能给谁用?“
    发表于 06-16 07:53

    做技术,选联网行业建议

    平台)之间的网络连接,提升车辆整体的智能驾驶水平,为用户提供安全、舒适、智能、高效的驾驶感受与交通服务,同时提高交通运行效率,提升社会交通服务的智能化水平。想从事联网、车载行业相关的
    发表于 04-14 14:05