基于 Vehicle Spy 的汽车逆向工程
罗伟光,陈秋苑
(广州虹科电子科技有限公司 广州 510640)
摘要:本文首先介绍了汽车后装市场的现状和发展趋势,然后介绍了一种基于Vehicle Spy的汽车CAN网络的逆向工程,通过 Vehicle Spy 特殊的显示方式,可以很清楚的发现汽车中变化的 CAN 报文,通过Details 这一类功能,可以很容易的解析出汽车 CAN 网络中一些常见的信号,如车速、门锁、车灯等。
关键词:汽车 CAN 网络,解析,逆向工程,Vehicle Spy
Reverse engineering of vehicles based on Vehicle Spy
Luo Wei-guang, Chen Qiu-yuan
(Hongke Co., Ltd, guangzhou 510640 China)
Abstract: First of all, this paper introduces the present situation and development trend of the Car market after loading, then introduces a reverse engineering of vehicle’s CAN network based on Vehicle Spy. The changed CAN messages of the vehicles can be easily recognized via the special display mode of Vehicle Spy. Some common signals (such as car speed, door locks, lamp, etc.) can be decoded easily
by using the functions of “Details” of Vehicle Spy.
Keywords: CAN networks of vehicles; Decode; Reverse engineering; Vehicle Spy
1 引言
1.1 汽车后装市场现状和发展趋势
汽车前装市场是中国汽车电子市场发展的主要推动力,但是中国汽车消费市场正在走向差异化和个性化,原厂配备的电子设备不能完全满足消费者的需求,同时电子产品后装市场价格远远低于前装,为后装市场的发展提供了巨大的市场需求[1]。据中国汽车工业协会发布的“2012 年上半年汽车市场形势分析及市场预测”报告中指出:如果下半年宏观经济向好,经济发展增速回升,全年汽车销量有望达2000万辆,相比去年全年销量1850.51万辆,增长 8%,这样中国的汽车保有量将达到约 1.24 亿辆,这就为后装市场的发展提供了广阔的增量空间。中国汽车电子后装和改装市场目前主要集中在车载电子领域。汽车防盗、汽车音响(包括多媒体系统)和车载导航产品在目前后装和改装市场中拥有重要的市场份额,而随着技术越来越成熟,服务越来越完善,以及政府对汽车改装限制的放宽,汽车电子后装市场产品种类将不断丰富,底盘、发动机改装业务将出现在后装市场,将大大推动后装汽车市场的发展。
虽然发展空间很大,但是也存在很大的挑战,那就是竞争,汽车后装市场的竞争比前装市场激烈得多,因为汽车后装市场的技术门槛比较低,大部分企业普遍存在的一个问题就是技术含量比较低。正像上面说的一样,娱乐系统、智能控制装置、底盘、发动机改装业务将出现在后装市场,而现在的底盘和发动机也都是通过 CAN 总线网络用电控单
元(ECU)来控制的,要想改装底盘和发动机就必须获得一些相应的控制参数,但是后装市场的企业与整车厂没有合作关系,无法获得相关的 CAN 总线中 CAN 报文的参数。为了在残酷的市场要做这方面的业务又必须获得这些参数,这就需要相关的总线解析工具,专业点说就是汽车逆向工程。就目前市场上的这类工具来说,美国英特佩斯的 Vehicle Spy无疑是最好用的一款。
1.2 汽车逆向分析过程
我认为汽车 CAN 网络逆向分析过程主要可以分为四个步骤:筛选、定位、解析、验证和保存。
如图 1 所示,这个过程中开始主要是要选择好分析工具(Vehicle Spy),验证和保存这一步如果验证不对的话就需要重复筛选到验证这一个过程。
2 Vehicle Spy 简介
Vehicle Spy 是一款非常强大的汽车测试工具,其主要功能有:
网络监控
网络、节点仿真、模拟
DBC 数据库建立,修改
CCP/XCP 标,Asap2 editor
ISO14229,KW2000 诊断、数据记录
ECU 程序刷新
可见 Vehicle Spy 集成了网络监控、诊断、节点/ECU 仿真、数据获取和记录分析、自动测试等功能,但是本文主要讲的是解析汽车 CAN 总线(在 Vehicle Spy 中称为逆向工程),所以本文的焦点在于逆向工程方面。
Vehicle Spy 的报文界面能让用户同时查看、筛选、分类、定制和记录多种总线网络的信号和报文。特别是其自动的报文高亮显示能准确清晰的指示车辆总线上正在变化的数据,且显示的颜色也可以自己设置。一般的网络报文监视软件都是文本式的显示,要查找变化的报文很费劲,而 Vehicle Spy 的这些特性就使得对于总线的逆向分析和解析工作
简单了很多。
找到对应的变化报文后,对于一些比较复杂的数据还是难以判断出某个报文的具体哪几个位表示的是我们想要知道的信号,Vehicle Spy 提供的Details 功能可以很好的解决这个问题。
3 Vehicle Spy 的逆向工程
这一部分主要从特殊的报文显示方式、报文过滤、报文信号分析三个方面讲述基于 Vehicle Spy 的逆向工程。
报文显示方式:帮助你快速的缩小想要解析的报文的范围;
报文过滤方式:帮助你快速定位到想要解析的报文;
报文信号分析:帮助你快速解析出想要得到的信号。
3.1 特殊的报文显示方式
Vehicle Spy 的报文显示方式主要可以分为高亮显示,区别颜色显示等(图 2)。
图 2 报文显示方式
Vehicle Spy 的基本显示模式分为两种:一是静态模式,这种模式显示所有已经出现过的报文;二是滚动模式,按照接收和发送的顺序显示报文[2]。
3.1.1 高亮显示
在主显示区,单击任何一行都会以绿色显示,高亮显示有助于指出变化的数据。灰色表示变化“快”的数据(变化时间小于 1s);蓝色表示变化“慢”的数据(变化时间大于 1s);停止变化的数据则会逐渐的从高亮灰色变为白色。当然如果当前高亮的数据里面没有你感兴趣的,也可以通过点击一个按钮来抑制这种高亮。还有一些其它的相关显
示方式:(1)高亮变化:将没有变化的数据变为灰色,只有当报文的数据开始变化的时候才会变为正常的颜色。这个特性的目的在于突出显示变化的报文。
(2)突出最近的:设置一个最近的时间点,在这个时间点之内的报文正常显示,其它的变暗。
(3)模板模式:使能这个功能后可以快速的将一个 ID 的报文改变到另外一个 ID 的报文中去。这个功能对于知道报文的译码却不知道具体的 ID时是非常有用的。
(4)改变高亮样式:根据变化强度和变化梯度可以设置在改变多少数据字节之后再让它高亮。这个功能有助于确定改变的速率有多快的数据。
3.2.2 区分颜色显示
通过对报文操作,可以将接收到的所有报文都添加到在报文编辑窗口中的接收报文这一栏下,这样在这里可以设置每个接收到的报文的颜色,再次监控的时候这些报文就会按照设置的颜色显示,且上面提到的高亮设置也不会引起颜色变化。
3.2 报文过滤方式
Vehicle Spy 提供了两种报文过滤方式:一个是报文视图列过滤器;一个是报文过滤栏过滤器。各有特点,重点是可以互相配合使用。
3.2.1 报文视图列过滤器
Vehicle Spy 报文显示窗口的每一列都有一个列过滤器并且多个列可以同时进行过滤。这对于很多报文的情况下对报文进行筛选和排序非常有用。这个过滤器也支持两种过滤方式(图 3):
图 3 报文视图列过滤器
一是采用下拉列表。双击每一列的空白区域,都会弹出相应的下拉列表,这个下拉列表中包括这一列的所有信息,所以在这里可以选择感兴趣的内容。
二是采用输入区域。输入区域其实就是这个空白区域,在这里可以自由输入。在工作中,如果对于某条报文只知道其中一个数字,或者只知道所处的 ID 范围,或者只知道某个描述,都可以过滤出一个满足你要求的范围。如在 ArbID/Header 这一列下
面输入 3??,那么对应的会输出 ID 的第一位是 3 的报文;如输入 100—400,就会过滤出这个 ID 范围内的报文;如果输入 323,129 就是说用逗号隔开,就会过滤出这两个 ID 的报文。这些操作方式也适用于其它列。
3.2.2 报文过滤栏过滤器
Vehicle Spy 集成了很多标准的过滤器,只需要激活相应的过滤器就会按照设置过滤出对应的报文。
如图 4 中的 HS CAN 这个过滤器,如果激活这个过滤器,那么在报文显示窗口就只会显示高速CAN 这个网络的报文,下面其它的如单线 CAN、J1850、发送的报文、错误的报文等过滤器也类似。
另外也可以自定义过滤器,可以将毫不相关的各种报文信息等包含在一起,也可以将不感兴趣的报文直接排出在外。
3.3 报文信号分析
通过前面描述的功能定位好 ID 后,选择这个 ID,使用 Details 功能可以帮助解码 CAN 报文为具体的信号。
(1)突出显示信号区域(图 5)。
选择的 ID对应的字节在这里显示,Bytes 表示各个字节的值,Bits 表示各个位的值,如果需要解析的是数字量,那么这里可以非常清楚的看到各个位的变化,很容易识别出数字量。
图 5 信号字节显示区域
(2)信号即时反馈(图 6)。
如果需要解析的信号时模拟量,那么在上面的信号字节显示区域一般要选择 8 位或者 16 位的数据长度,而旁边的信号图就会将二进制转换为十进制的数值,调整数据的位置,信号图中的数值也会跟着变化。
图 6 显示解码信息的信号图
信号图中可以很直观的看到当前信号的变化趋势和规律等,这样对于已知变化规律的信号的判断是非常有用的。这个功能的作用就是找出符合规律的数据字节。
(3)使用数据点确定系数(图 7)。模拟量信号与直接解码出来的十进制数值一般都有一定的函数关系。这个功能的作用是在你确定两个数据点之后,软件会自动确定最佳的系数(比例因子和偏移量)。
图 7 使用数据点确定系数
(4)使用跟踪信号。这里的跟踪信号主要是起对比的作用。这个的典型应用就是使用一个已知报文的信号来解码一个正常模式下的报文的未知信号。设置一个跟踪信号,这个跟踪信号会显示在信号图中,这样在信号图中就有跟踪信号和未知信号两个信号的图像,跟踪信号的图像对于未知信号来说是一个很好的参照。
最后,在确定好之后可以直接将该 ID 的报文和信号设置添加到报文编辑窗口接收项里面,然后就可以导出为标准的 dbc 文件,并可将该 dbc 文件导入到其它软件中使用。
4 Vehicle Spy 的其它操作
(1)验证报文的正确性。在确定 ID 后,也可以直接将报文视图中选择的 ID 连同数据一起拷贝到报文编辑窗口中的发送项,再将这个 ID 的报文发送出去,以验证找到的报文是否正确。
(2)保存文件。报文视图中的所有报文都可以保存到 csv 文件中,当然也可以只保存过滤器过滤出来的报文,如只保存发送出去的报文。这样就便于分析和存档。
(3)数据回放。可以将上面保存的 csv 文件通过 Vehicle Spy 回放,如果连接有相关 CAN 的硬件,也可以按照保存的报文的时间顺序,重新将这些报文发送出去。
5 结束语
本文详细描述了使用Vehicle Spy进行汽车的逆向的分析的过程,经过筛选报文、过滤和定位报文、解析报文信号等几个步骤,可以帮助工程师极大的提高解析的工作效率。
参考文献
[1]http://www.motorlink.cn/html/marketInfo/10000123dccb20c
52009092410181862_3.html
[2]Vehicle Spy Help file.
作者简介
罗伟光,助理工程师,广州虹科电子科技有限公司。
本论文由Colin整理,如需转载,请注明出处。
文章评论(0条评论)
登录后参与讨论