如何像《速度与激情6》入侵汽车电脑CAN总线,黑掉汽车(上)

2021-03-19 08:07

Author / 不会开车的CC

Pic / 来源于网络

电影《速度与激情》大家都看过,接下来第六部里面的这个场景大家肯定有印象。

Paul Walker一行人在追捕Shaw时,他们驾驶的宝马被Shaw等人安装了一种电子芯片,之后Shaw等人通过电脑一顿操作之后,这些宝马突然不受驾驶员控制,突然刹车或者直接撞上其他车。

有人会问,这些是真的嘛,怎么实现的,看完这篇文章你就会有所了解。

速度与激情6(2013)车辆被黑客入侵片段

当然引擎调教这件事绝不是读几篇文章看几个视频就可以弄懂的。

我个人觉得这绝对是改装行业里比较顶尖的技术了,有很多很多人从事这方面的工作,花重金开发相关技术内容,我是非常敬佩他们的,也很想直接从事这方面的工作。

和很多车友一样,我小时候就痴迷于汽车。

上大学时主修车辆工程专业,在哈工大的四年里打下了还不错的基础。其实那时候就对于发动机调校这块很感兴趣,但也仅限于感兴趣,虽然想自己研究,却没有找到好的途径。

那时候每期必看的《改装与四驱》并没有太多提及这一块,说实话,当时很希望有人可以提点一二。即使到了大四,好不容易有了一门叫做“车载网络”的专业课,但好像和我真正想学的还是差了一点,万万没想到,最后这门课居然成为我大学里唯一补考的一门。

言归正传,刷发动机程序这件事,往最简单说,有个硬件,有个软件,连上OBD,单击Flash,点火,排气“啪啪啪”,完美,结束。如果有车友,只想了解这个流程,估计需要等一等了。

本着“授人以鱼,不如授之以渔”的原则,我打算用比较直白的语言从头开始说起,这样既适用于汽车爱好者,DIY车友,也对车辆工程或相关专业的学生有帮助,同时也可以引导一些刚刚从事汽车测试开发的同行们。

以下这些将基于我多年的汽车电子安全系统的开发经验和自己网上研究到的一些内容,多数都可以从维基百科或者相关资料网页中查询到。

这次新冠疫情在美国开始爆发,很多公司裁员,我们还算幸运,只是临时降薪,减少工作时间,于是就趁着“休假”,整理一些信息分享给大家,希望可以帮助到大家。

车辆在测功机上准备测试

特此申明

1. 所有内容均不涉及核心技术细节,或故意略去。

2. 本文只提供知识分享,所有DIY引擎调校程序均有风险,有可能严重损坏发动机或导致ECU报废,所引发的责任请自行承担,与本文作者无关。

改装有风险,须谨慎!

现在的车和几十年前的车相比,最大的一个区别就是电子系统越来越多,很多人说如今的车机械感降低,都是电子设备,修都不好修的了。

确实是这样,从最简单的油门说起,最传统的设计,就是油门踏板(accelerator pedal)直接连着发动机的节气门(throttle),你踩多少踏板,就打开多少节气门,直接控制空气流量。

而现在我们踩的基本就是一个纯踏板,有传感器测量你踩了多少,再由发动机控制模块决定打开多少节气门,而油门踏板的这个信息有可能只有发动机这一个模块直接知道。

一辆车由几十个模块组成,包括发动机,刹车,转向,悬架等等,而车厂最后负责把所有模块装在一起,整合在一起,所以也叫做Orignial Equipment Manufacture (OEM)。

所有这些模块就是车厂(OEM)的零配件供应商,比较大的模块或直接和OEM打交道的模块属于一级供应商,比如ABS/ESP电子刹车系统。

车辆网络信息示意图

每家供应商当然都只负责开发自己的产品,但是有些信息是需要共享的。

以电子刹车系统为例,ABS/ESP系统的牵引力控制(Traction Control)功能是负责防止车轮在车辆起步时打滑的,一般以轮速传感器(Wheel Speed Sensor)信息为主,但需要知道驾驶员踩了多少油门进行另外一些控制。

而之前说过,油门信息只有发动机知道,ABS/ESP系统怎么知道呢?

这时候CAN总线就起作用了,说白了就是车上各个电子系统互相交流的一个公共桥梁或通道。而CAN总线,或者叫CAN BUS,只是车上的各条桥梁中的一条,成本相对较低,传输速度一般。

CAN的全称是Controller Area Network,控制器局域网。

CAN数据解码示意图

这个CAN总线对每个模块都打开的,只要带宽允许,每个在CAN总线上的模块都可以发送或接受信息,但是接受到的信息是什么,怎么读,就有讲究了。

虽然不算是加密的,但也不是一眼就能读懂。

CAN总线基于一种信息传递协议,最早是由德国博世公司在1986年发表的,中间有过改版,但一直沿用至今。这个协议定义了在CAN总线上传播信息的一些最基本的要求,之后会具体说说。

回到油门踏板的话题上,发动机模块会根据这个协议把带有油门踏板的信息传递到CAN总线上,其他模块只要知道踏板信息是如何发上来的,就知道该如何读取了。

这就相当于桥梁上有无数辆小汽车,发动机派出小车A到CAN桥梁上,车上有几个密码箱,里面装着发动机信息。

DBC文件(后面会提及)就是打开这些密码箱的钥匙,任何拦截到这辆车并且有钥匙的模块都可以打开这个密码箱拿到发动机信息。而没有钥匙的模块,就算拦截到了小车A也没法知道信息是什么。

而这把“钥匙”是事先需要沟通定义好的,车厂在车辆开发初期,会给自己和供应商们提供这把“钥匙”,也就是传说中的DBC文件,这样就可以让各个模块之间相互交换信息了。

当然在开发过程当中,这个文件也会不断更新,来达到最终车厂对于性能法规等各个方面的要求。所以说这个文件非常重要,属于需要保密的信息。

当然,具备一定CAN总线知识的人也是可以破解这把“钥匙”的,而尝试制造出这把“钥匙”的过程就叫做CAN总线逆向。有不少人研究这个,我之后也会说说我是如何逆向丰田86的CAN总线的。

现在大家基本知道CAN是什么,那么为什么要知道这个,和引擎调校有什么关系,我们继续往下说。

各种可以通过CAN总线获得的信息

这个CAN真的是好东西,内容也十分复杂。

我个人是从事ABS/ESP设计开发的,就算我们固定负责一个项目,天天和ABS模块打交道,从项目开始到SOP(Start of Production,量产),也很难把ABS这一个模块的CAN相关所有东西了解透彻。

更何况一辆车上有几十个模块都共用一个CAN总线,而且每款车的CAN内容也不一样,所以真正在这方面精通的人少之又少。

不过没关系,我们只要了解感兴趣的,和我们玩车相关的就好。

在我个人看来,最有用的一点是,通过CAN总线,我可以直接看到和记录与跑赛道相关的数据,这对于提高圈速是很有帮助的。

每个跑赛道的朋友应该都是希望自己越跑越快,不断提高自己的驾驶水平。稍微硬核一些的玩家,肯定会在车上采集数据,跑完之后再分析(感觉这方面的内容我又可以单独写一篇了,如果大家感兴趣,欢迎评论里说)。

这里的数据主要包括了车速,侧向加速度,纵向加速度,横摆角速度,轮速,方向盘角度等。大部分数据都可以通过第三方硬件来间接获取,比如Vbox或AiM公司开发的产品。

而所有这些数据都在CAN总线上可以直接读到,而且更新率也很快。车辆自己的控制算法都是通过这些信息实现的,所以自然是非常靠谱的。

既然可以用,为何不用呢?

而之前提到的第三方硬件大多也会支持CAN总线连接,通过这个“桥梁”直接获取我们想要的信息。

前面说的是“读”信息,下面开始说说大家最感兴趣的“写”信息。

回到文章最初提到的《速度与激情》的场景,通过电脑操作就可以让另外一辆车子自动刹车或转向,这些是真的吗,怎么实现的。

没错,理论上就是通过入侵CAN网络,“写”入一些信息而达到的。

所以这个CAN总线有利也有弊,但大家也没必要担心自己的车子会不会也遇到这样的问题。我只能说基本上不会,现在各个车厂都在大力研发Cyber Security来防止CAN入侵发生。

这个之后可以再说,与此同时也让我们DIY玩家越来越难了。我这里只是举一个例子,并不是要教大家如何控制别人的车辆(当然,这个我也不会)。

电影《速度与激情》剧照

既然是电子模块,自然就有电子芯片,所有控制程序都是一行行代码编译而成。

对于发动机模块而言,如果掌握了和发动机模块交流的“钥匙”,就可以要求重新写控制发动机的代码,当然前提是你要有正确的发动机代码。所以刷发动机,就是指把自己改写过的发动机控制代码重新写进发动机模块,从而实现自己想要的发动机性能,比如排气回火,增加马力等等。

引擎调校参数示意图

最后分享我第一次尝试改写发动机参数的对比视频,之后也会放出这个调校的具体教程。

下一篇文章将以实际操作向大家进一步介绍CAN总线和最基本的引擎调校工作,希望大家继续关注分享。

有任何问题或想法,欢迎评论留言,我会在之后的文章或视频中讨论。

# 未完待续 #

阅读本文作者其他文章

今日日签

分享到:
© 2016-2018 衡水资讯 http://www.hsfcp.com/