V2EX 10月13日 12:27
程序员揭秘车企APP:车载状态与远程控制的秘密
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

一位程序员深入分析某车企的安卓APP,发现其近400MB的体积中,约300MB为资源文件,质疑其臃肿之处。通过逆向工程,他实现了多项功能,包括查看非实时车辆和充电桩状态(仅需Token验证),以及实时远程控制车辆(如开关锁、车窗)。非实时状态获取的关键在于Token的续期策略,不同车企有不同安全限制。而实时控制则涉及TLSv1.2双向证书加密的MQTT协议,分析过程需要借助Wireshark或直接解包APP。最终,他将这些功能整合成Home Assistant插件,提供比官方APP更便捷的车辆控制方式,并寻求同行交流经验。

🚗 **APP体积与资源构成分析**:该程序员发现某车企近400MB的安卓APP中,高达约300MB为资源文件,对其臃肿程度提出质疑,并认为这可能是导致APP体积庞大的原因。

🔑 **车辆状态与远程控制功能实现**:通过逆向分析,已实现查看非实时车辆及充电桩状态(仅需Token验证),以及实时远程控制(如开关锁、车窗)。非实时状态获取的关键在于Token的续期策略,而实时控制则依赖于TLSv1.2双向证书加密的MQTT协议。

🛠️ **技术实现方法与工具**:非实时状态可通过电脑端抓包工具(如Reqable)配合手机代理实现。实时控制因MQTT加密,需借助Wireshark或直接解包APP进行通信分析。证书获取在ROOT后有特定方法(暗指)。

🏠 **Home Assistant集成与用户体验提升**:将车辆控制功能整合为Home Assistant插件,提供比官方APP更便捷的控制方式,支持桌面小组件,并已初步完成仪表盘集成,但后续界面美化有待进一步优化。

具体哪一家车企就不说了,防止有点刑

车企也是神人程序员,我这个接近 400m 的安卓 APP 里面,解包分析出来,有接近 300m 的资源文件(我是说怎么 APP 这么大一点不卡呢,app 全拿来塞垃圾了原来是)

目前已经完成包括但不限于如下功能

其中非实时状态拉取只有 token 验证,不校验证书,比较简单,唯一问题就是 token 的续期问题,不同车企对于这一块的安全时间限制不一样,需要自己验证,这一块基本 reqable 电脑端,然后在手机配置代理就可以抓包分析了。

但是实时的远程控制车辆需要通过 TLSv1.2 的双向证书加密,我这家是基于 MQTT 的,MQTT 加密的就没法通过 reqable 抓取了,小黄鸟只能 http(s),可以通过 wireshark 的方式,分析具体用的是什么通信,(或者直接解包 APP ,我是发现加密 MQTT 之后解包 APP 分析通信的),证书的话可以在 ROOT 之后自己想办法(只可意会)

目前把他做成了 homeassistant 的插件的方式,添加到仪表盘之后,效果如下

没有做更好看的那个卡片(有点太麻烦了),在 HA 里面可以开关锁/或者桌面小组件,比官方 APP 好

https://imgur.com/a/0SPv4Zr

有整过的老哥可以分享交流一下:) 我也是第一次整这一块,废了点功夫

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

车企APP 逆向工程 安卓App 车辆状态 远程控制 MQTT TLS加密 Home Assistant 程序员
相关文章