【前言】
世上有两种趋势:把简单的事情复杂化,反之亦然。女人就是把你说的最简单的一句话复杂化到无法收拾的地步。。。另一方面,当女人追问你为什么不给她买包包的各种理由的时候,你云淡风轻的吐出来两个字“没钱”!这就叫把复制的事情简单化。。。
言归正传, 说到汽车指令破解,给人的第一印象就是非常复杂,耗时很长,只有少数人才能掌握。实际上并不是这样。 对于我个人而言,几年前刚接触汽车破解的时候也觉得高深莫测,看行业熟手用几天时间破解出一辆车的几条指令,都觉得是不小的成就。现在回头看看实际上也就是几分钟的事情。
写这篇文章的目的就是要把看起来门槛很高的汽车指令破解技术白菜化。
【汽车指令破解三大坑】
第一坑、破解设备鱼龙混杂
如果你是一个初学者,你或许会被网上各种各样的学习视频所吓到,你看到的照片可能是这个样子滴:
也可能是这个样子:
你会被忽悠买各种各样的板子,有两路CAN的,有单路CAN的,有DB-9的,有DB-16的,还有OBD端口的。不仅如此,你还要学习写Python脚本调用CAN库,通过SocketCAN才能读取汽车的总线流量指令。
更糟的是,这些价格不菲的设备(虽然有的在黑客大会上演示过)往往在数据量稍微大一点的时候就会内存溢出,停止工作。我为什么会这么说,因为我买的这些第三方破解设备花的钱足够买一辆入门车的了。然鹅这些板子现在都束之高阁,作为我走过的弯路的纪念品。
此外,还有线路连接的问题。电源,pin脚,USB口, OBD口,计算机,电路板等等。你需要二分线,CAN2USB,DB9-OBD,诸如此类的事情。。。
第二坑、数据丢包问题
汽车每分钟都有1000-4000不等的数据包。对破解设备来说就需要不丢包地采集数据,这样就不会丢失你所感兴趣的指令。设备丢包将是一个灾难。如果设备的CAN驱动写的不好,数据就会丢失。
如何分析流量判断是否有丢包? 我们现在就来看一个例子。时间轴上显示的数据曲线有很多缺口, 说明有丢包现象,平均每个单位时间的包数不一样。
我们可以在进行放大扩展,看到这些缺口会越来越大。
进行二次扩展放大流量,就会看到丢包情况很严重。
放大扩展,把鼠标放在数据上,在这个时间段184毫秒到332毫秒在近150毫秒之内只有三个包。
这款总线数据记录仪是不合规的。遗憾的是,这款数据记录仪是我们购买国外厂商的。一台记录仪将近2000块钱,而且只能收集单路CAN。数据丢包不仅是钱的问题,更重要的是时间的浪费和项目拖延。这种设备的丢包导致我花了很长的时间收集的数据和出差到各地对调度过来的车辆进行的研究工作全部付之东流!所以,一开始就选择一款不丢包的总线记录仪何等重要。
第三坑、指令逆向的“人肉电池“方法
缺少逆向算法,完全凭肉眼进行判断哪些指令的内容是变化的,每分钟几千条数据发生用肉眼观察谈何容易!最后会搞得眼睛酸痛也找不出来需要的指令。
要知道ECU按照预定的信号定义来发包。虽然包是有变化的,但只是反映车内一些状态值的变化,并不是你需要的破解动作的对应指令。也就是说这些标红的变化内容只有极少部分才是真正的你所要挖掘的数据,这是用肉眼看不出来的。
等到你真正的开始逆向指令的时候,已经被折腾的焦头烂额了。然后恍然大悟:“原来破解指令真的门槛很高呀!”你应该要把精力放在指令的破解思路和算法上而不是为这些事情所困扰。
有没有一款神器可以省略上面的麻烦,不需要连线,不需要购买其他设备,傻瓜流程,无需总线背景知识,直接将汽车指令破解白菜化? 答案是:有的!
【“车号脉”神器】
这款神器叫“车号脉”,顾名思义,就是给汽车-号个脉! 这款神器纯粹是被逼地做出来的。因为市面没有找到满足我们需求的工具和软件,发现买到的工具竟然丢包,不合格。只能逼自己鼓捣出来。
跳过第一坑、无需任何连线
这款神器无需连线,同时支持2路CAN,自带SD卡,可以存储多达1000多辆车的数据。直接插到OBD口之后,绿灯自动闪烁,代表正在收集数据,任何时候可以拔下,设备数据自动停止收集。流量自动获得汽车的 VIN号码,方便标识定位汽车车型。
直接连接安卓收集, IPHONE手机或者电脑,自动识别设备,和使用U盘一样。
此外还有配套的手机应用来进行配置各种记录参数。
可以配置数据收集时间从1分钟到几个小时不等;可以导出为csv格式或其他格式;定义文件的分割大小,比如每收集到100MB自动分割成一个新的文件,文件名称按照123的顺序自动编号;定义设备的名称和设备的时间戳(设备内部有时钟)。
跳过第二坑、解决数据丢包问题
用数据来说话:已经用这款神器采集了30000+辆真车数据,覆盖全球1000+种不同车型,支持传统,混动和新能源车。
举个例子, 采集一段车辆流量进行3轮循环放大,没有发现丢包缺口,呈现均匀分布。同时我们也对比了丢包的设备所采集的数据,缺口非常明显一目了然。
再次放大,依然没有出现丢包缺口。
顺便说一下这款神器不仅仅可以采集OBD口的数据,也可以采集单个ecu的数据。这张图里直接把设备连接到ecu的连接线上就可以采集了。
跳过第三坑、指令逆向自动算法
在这里我们提出了基于增量的指令逆向算法。如图所示,我们有两个流量:一个流量是车辆的一段数据,另外一个流量包括你所感兴趣的一些指令动作,比如开门开灯。增量算法是找到这两个流量里面不同的指令,把它们列出来。那这些指引里面就包括你所感兴趣的动作。对这些动作一一进行测试,就很容易发现 你所需要的指令。我们提供了三种不同的重量算法,必有一款适合你!
逆向算法分别集成到我们的云端“逆向云”平台和终端的CANBUSLOGGER软件。所以,你可以使用任何一种方式配合这款神器进行做逆向。我们先介绍通过云端平台进行逆向。
“逆向云”平台
将汽车逆向分析带入云端。用户无需花费时间进行繁琐的逆向分析,直接通过“逆向云”得到需要的指令,再通过自动回放设备进行回放,无需任何连线过程。
准备清单:
- 需要逆向的车辆(支持传统,混动,新能源车)
- “逆向云”账号
- “车号脉”神器
你本地所需要的只是“车号脉”神器,不需要其他任何软件和连接线。
操作过程:
- 插上“车号脉”
- 把备插到OBD端口,收集一段20秒钟的流量。然后拔下来再插上,收集第2个20秒流量。在第2个20秒内进行几次简单的汽车动作,例如开门,开灯;完成后拔下设备即可。
- 登陆“逆向云”上传数据
连接到计算机,登陆“逆向云”云端界面,把这两个流量上传。完成之后,选择这两个文件,点击界面种的逆向算法,几秒钟后就会算出来增量的指令列表,然后导出指令,下载到本地。
- 将逆向出来的指令复制到神器,文件重新命名为txt
- 将神器插到汽车OBD端口
设备将自动重放逆向出来的指令,即可判断指令是否成功。
整个过程,无需安装任何本地软件和连线,一气呵成。除了指令逆向,汽车逆向云还适用于汽车远程诊断,ECU开发校对,异常排查等。汽车指令逆向常用于汽车指令逆向分析,总线流量分析,无人驾驶系统开发,智能功能开发等场景。然而传统逆向过程需要进行复杂的连线,使用不同的软件进行数据采集和分析。有了汽车“逆向云”服务,一切都变得那么简单。
使用本地“CANBusLogger”软件
有时候不能上网,无法登陆到云平台。所以可以用本地运行CANBusLogger软件的方法进行逆向操作。软件的界面跟云端界面是一致,具体的步骤参见上面。
【结束语】
这篇文章非常希望介绍给各位读者,让你们不要走我们当初走的坑,不要花我们花过地冤枉钱,把省下来的钱给自己买辆入门的旧地测试车来进行实验,何乐而不为! 任何人都可以快速上手,让汽车破解变得容易。
我们开通了一个微信公众号“汽车破解雕虫小技”。我们会分享经验和工具,欢迎大家加入这个微信群,进行互相讨论交流,一起进步,将汽车破解白菜化进行到底!
如果有谁对“车号脉”神器和软件感兴趣,联系我们。我们保证这款神器能让你节约更多的钱更多的时间,避开繁琐的步骤,cut the crap, 直接进入到汽车破解核心研究工作中。
邮件联系方式 [email protected]
来源:freebuf.com 2020-07-11 02:39:44 by: tofreebug
请登录后发表评论
注册