Jeffrey Cross
Jeffrey Cross

汽车黑客101:贸易工具

越来越多的网络安全不断发展,不仅包括对数据漏洞的担忧,还包括我们日益计算机化的汽车问题。在他的新书中 汽车黑客手册克雷格史密斯带领读者了解您在现代汽车中可以找到的计算机系统和嵌入式软件的细节。如果您想要磨练自动化技能,或者您对汽车的网络和安全性感兴趣,那么这是一个很好的资源。

以下摘录介绍了启动汽车黑客攻击时需要了解的硬件和软件。这只是您可以找到的众多详细资源中的一种 汽车黑客手册。这本书现已上市。


本节讨论在研究车辆时可能要使用的不同工具。我选择专注于低成本设备和软件,因为尽可能多的人参与研究对我来说很重要。

Open Garages愿意展示和推广有助于汽车研究的工具。如果您的公司生产出色的产品,请随时联系Open Garages,但除非有开放的方式为您的工具做出贡献,否则不要期望免费宣传。

硬件

在本节中,我们将介绍像ChipWhisperer这样的板卡,以及提供CAN连接的类似加密狗的设备。我们首先考虑低成本的开源硬件,然后为那些愿意花更多钱的人探索一些更高端的设备。虽然有许多经济高效的设备可以与CAN总线通信,但是缺少与这些设备交互所需的软件,因此您经常需要编写自己的软件。

低端CAN设备

这些设备可用于嗅探CAN总线的内容并注入数据包。它们包括业余爱好者级别的电路板,以及支持许多自定义功能的专业设备,可同时处理多种不同的CAN总线。

Arduino Shields

许多Arduino和类似Arduino的设备(20美元到30美元)将支持CAN,并增加了Arduino屏蔽。以下是一些支持CAN的Arduino屏蔽:

CANdiy-Shield MCP2515 CAN控制器,带有两个RJ45连接器和一个原型区域ChuangZhou CAN-Bus Shield MCP2515 CAN控制器,带有D-sub连接器和螺钉端子DFRobot CAN-Bus Shield STM32控制器,带有D-sub连接器SeeedStudio SLD01105P CAN -Bus Shield MCP2515 CAN控制器,带D-sub连接器SparkFun SFE CAN-Bus Shield MCP2515 CAN控制器,带D-sub连接器和SD卡座;具有LCD和GPS模块的连接器

这些盾牌都非常相似。大多数运行MCP2515 CAN控制器,尽管DFRobot屏蔽使用STM32,它具有更快的缓冲存储器。

无论您选择哪种屏蔽,您都必须为Arduino编写代码以便嗅探数据包。每个屏蔽都带有一个库,用于以编程方式与屏蔽连接。理想情况下,这些总线应该支持类似于LAWICEL协议的东西,它允许它们通过笔记本电脑上的用户空间工具(如SocketCAN)通过串行发送和接收数据包。

Freematics OBD-II远程信息处理套件

这款基于Arduino的OBD-II蓝牙适配器套件具有OBD-II设备和数据记录器,并配有GPS,加速度计和陀螺仪以及温度传感器。

中心联系

CANtact是Eric Evenchick的开源设备,是一款非常实惠的USB CAN设备,可与Linux SocketCAN配合使用。它使用DB 9连接器,具有使用跳线引脚更改CAN和接地引脚的独特优势 - 这一特性使其能够支持美国和英国式DB9至OBD-II连接器。你可以在这里获得CANtact。

Raspberry Pi Raspberry Pi是Arduino的替代产品,售价约30至40美元。 Pi提供Linux操作系统,但不包括CAN收发器,因此您需要购买屏蔽。

使用Raspberry Pi而不是Arduino的一个优点是它允许您直接使用Linux SocketCAN工具,而无需购买额外的硬件。一般来说,只需一些基本的布线,Raspberry Pi就可以通过SPI与MCP2515通信。以下是一些Raspberry Pi实现:

Canberry MCP2515 CAN控制器仅带螺钉端子(无D-sub连接器; 23美元)Carberry两条CAN总线和两条GMLAN线路,LIN和红外线(似乎不是开源屏蔽; 81美元)PICAN CAN-Bus Board MCP2515 CAN控制器,带D-sub连接器和螺钉端子(40美元至50美元)

ChipKit Max32开发板和NetworkShield

ChipKit板是一个开发板,与NetworkShield一起可以为您提供网络可解释的CAN系统。大约110美元,这个开源硬件解决方案受到OpenXC标准的欢迎,并支持OpenXC的预构建固件,但您也可以为它编写自己的固件并进行原始CAN。

ELM327芯片组

ELM327芯片组是迄今为止最便宜的芯片组(从13美元到40美元不等),它用于大多数便宜的OBD设备。它通过串口与OBD进行通信,并提供您可以想到的任何类型的连接器,从USB到蓝牙,Wi-Fi等。您可以通过串行连接到ELM327设备,并且它们能够发送除OBD / UDS数据包之外的数据包。有关使用ELM327的完整命令列表,请参阅数据表。

遗憾的是,可用的CAN Linux工具无法在ELM327上运行,但Open Garages已经开始实施一项网络计划,其中包括称为CANiBUS的ELM327的嗅探驱动程序。预先警告ELM327具有有限的缓冲空间,因此当嗅探和传输可能有点不精确时,您将丢失数据包。但是,如果你处于紧张状态,这是最便宜的路线。

如果您愿意打开设备并将几根电线焊接到ELM327,您可以重新刷新固件并将其转换为兼容LAWICEL的设备,这样可以让超便宜的ELM327与Linux配合使用并显示为slcanX设备! (您将在爱荷华州得梅因市的Area 515创客空间博客上找到有关如何刷新ELM327的信息。)

GoodThopter董事会

知名硬件黑客Travis Goodspeed发布了一款带有CAN接口的开源低成本电路板GoodThopter。 GoodThopter基于其流行的GoodFet设备,使用MCP2515并通过串行通信与自己的自定义接口进行通信。您需要完全自行组装和焊接设备,但这样做只需几美元,具体取决于您在当地黑客空间可用的部件。

ELM-USB接口OBDTester以约60美元的价格销售商用ELM-32x兼容设备。 OBDTester.com是PyOBD库的维护者。

CAN232和CANUSB接口

LAWICEL AB生产商用CAN设备CAN232,它插入带有DB9连接器的RS232端口,以及称为CANUSB的USB版本(后者售价110美元至120美元)。因为它们是由LAWICEL协议的发明者制作的,所以这些设备可以保证与can-utils串行链路模块一起使用。

VSCOM适配器

VSCOM是Vision Systems的一款经济实惠的商用USB CAN模块,采用LAWICEL协议。 VSCOM通过串行链接(slcan)与Linux can-utils一起使用,并提供良好的结果。该设备的成本约为100美元至130美元。

USB2CAN接口

8devices的USB2CAN转换器是非串行CAN接口的最便宜的替代品。这款小型商用USB设备将作为Linux中的标准can0设备出现,并且在此价格范围内具有最集成的支持。大多数显示为canX原始设备的设备都是PCI卡,通常比此设备的成本要高得多。

EVTV到期董事会

EVTV.me专门从事电动车改装。他们为您的历史车辆制作了很多很棒的工具,比如为它添加特斯拉动力传动系统。他们的工具之一是100美元的开源CAN嗅探器,称为EVTV Due,它基本上是一个Arduino Due,内置CAN收发器和手柄螺丝端子,可与您的CAN线路连接。该板最初只是与他们的SavvyCAN软件一起编写,该软件使用他们的通用车辆逆向工程工具(GVRET),但它现在也支持SocketCAN。

CrossChasm C5数据记录器

CrossChasm C5是一款支持福特VI固件的商用设备,售价约120美元。 C5支持VI,也称为CAN转换器,用于将CAN消息转换为OpenXC格式,并将一些专有的CAN数据包转换为通用格式,以通过蓝牙发送。

CANBus三板

在我写这篇文章时,CANBus Triple仍处于开发阶段。它使用专为支持马自达而设计的线束,但它支持任何车辆的三个CAN总线。

高端CAN设备

高端设备将花费你更多的钱,但他们能够接收更多的同步频道,并提供更多的内存,以帮助防止数据包丢失。高性能工具通常支持8个或更多通道,但除非您正在使用赛车,否则您可能不需要那么多通道,因此请确保在丢弃任何现金之前需要这样的设备。

这些设备通常带有自己的专有软件或软件订阅,有时会增加成本。确保与您选择的设备关联的软件能够满足您的需求,因为您通常会将其锁定在其API和首选硬件中。如果您需要可与Linux配合使用的高端设备,请尝试使用Kvaser,Peak或EMSWünsche。这些公司的设备通常使用sja1000芯片组,价格约为400美元。

CAN总线Y-Splitter

CAN总线Y分配器是一种非常简单的设备,它基本上是一个DLC连接器,分为两个连接器,允许您将设备插入一个端口,将CAN嗅探器插入另一个端口。这些通常在亚马逊上花费大约10美元,实际上很容易让自己制作。

HackRF SDR

HackRF是Great Scott Gadgets的SDR。该开源硬件项目可以接收和发送10 MHz至6 GHz的信号。大约330美元,你无法获得更好的SDR价格。

USRP SDR

USRP是一款专业的模块化SDR设备,可根据您的需求进行构建。 USRP在不同程度上是开源的,价格从500美元到2000美元不等。

ChipWhisperer工具链

NewAE Technologies生产ChipWhisperer。 ChipWhisperer是一种用于旁道攻击的系统,例如功率分析和时钟故障。类似的系统通常花费30,000美元或更多,但ChipWhisperer是一个开源系统,价格在1,000美元到1,500美元之间。

红火龙果板

Red Pitaya是一种开源测量工具,价格约为500美元,可替代昂贵的测量工具,如示波器,信号发生器和频谱分析仪。 Red Pitaya具有LabView和Matlab接口,您可以为它编写自己的工具和应用程序。它甚至支持像Arduino盾牌这样的扩展。

软件

正如我们对硬件所做的那样,我们将首先关注开源工具,然后介绍更昂贵的工具。

Wireshark的

Wireshark是一种流行的网络嗅探工具。只要您运行Linux并使用SocketCAN,就可以在CAN总线网络上使用Wireshark。 Wireshark没有任何功能来帮助对CAN数据包进行排序或解码,但它可能在一个紧要关头。

PyOBD模块

PyOBD(也称为PyOBD2和PyOBD-II)是一个与ELM327设备通信的Python模块。它基于PySerial库,旨在通过方便的界面为您提供有关OBD设置的信息。对于PyOBD的特定扫描工具分支,请参阅Austin Murphy的OBD2 ScanTool,它试图成为诊断故障排除的更完整的开源解决方案。

Linux工具

Linux支持开箱即用的CAN驱动程序,SocketCAN在处理CAN时提供简单的netlink(网卡接口)体验。您可以将其can-utils套件用于命令行实现,并且作为开源软件,可以轻松地将功能扩展到其他实用程序。

CANiBUS服务器

CANiBUS是一个由Open Garages用Go编写的Web服务器。该服务器允许一个充满研究人员的房间同时在同一车辆上工作,无论是出于教学目的还是团队倒车会话。 Go语言可移植到任何操作系统,但在某些平台上可能存在低级驱动程序的问题。例如,即使您在Linux上运行CANiBUS,也无法直接与SocketCAN交互,因为Go不支持必要的套接字标志来初始化CAN接口。 (这个问题可以通过实现socketcand来解决,但在撰写本文时,该功能尚未实现。)CANiBUS确实有一个支持通用嗅探的ELM327驱动程序。您可以了解有关CANiBUS的更多信息,并可以下载源代码。

皮艇

Kayak是一个基于Java的GUI,用于分析CAN流量。它具有多种高级功能,例如GPS跟踪和记录和回放功能。它使用socketcand以便在其他操作系统上工作,因此您至少需要一个基于Linux的嗅探器才能支持Kayak。

SavvyCAN SavvyCAN是由EVTV.me的Collin Kidder编写的工具,它使用由EVTV.me,GVRET设计的另一个框架来与硬件嗅探器(如EVTV Due)交谈。 SavvyCAN是一个基于Qt GUI的开源工具,适用于多种操作系统。它包括几个非常好的功能,如DBC编辑器,CAN总线图形,日志文件差异,几个逆向工程工具,以及您期望的所有常规CAN嗅探功能。 SavvyCAN不与SocketCAN通信,但它可以读取几种不同的日志文件格式,例如Bushmaster日志,Microchip日志,CRTD格式和通用CSV格式的日志文件。

O2OO数据记录器

O2OO是一个开源OBD-II数据记录器,可与ELM327一起将数据记录到SQLite数据库以进行绘图。它还支持在NMEA格式中读取GPS数据。

关怀驯鹿

用Python编写的Caring Caribou旨在成为汽车黑客的Nmap。在撰写本文时,它仍然处于起步阶段,但它显示出很大的潜力。 Caring Caribou具有一些独特的功能,例如强制诊断服务的能力,以及处理XCP。它还具有标准的嗅探和发送CAN功能,并支持您自己的模块。

c0f指纹识别工具

CAN of Fingers(c0f)是一款用于指纹识别CAN总线系统的开源工具。它为识别CAN总线网络流中的模式提供了一些基本支持,这在尝试在嘈杂的总线上查找特定信号时非常有用。

UDSim ECU模拟器

UDSim是一个GUI工具,可以监视CAN总线并通过观察通信自动学习连接到它的设备。它旨在与其他诊断工具一起使用,例如经销商工具或当地汽车商店的扫描工具。

UDSim有三种模式:学习,模拟和攻击。在学习模式中,它识别响应UDS诊断查询并监视响应的模块。在模拟模式下,它模拟CAN总线上的车辆以欺骗或测试诊断工具。在攻击模式下,它会为Peach Fuzzer等工具创建模糊测试配置文件。

Octane CAN Bus Sniffer

Octane是一个开源CAN总线嗅探器和注入器,具有非常好的接口,用于发送和接收CAN数据包,包括XML触发系统。目前,它仅在Windows上运行。

AVRDUDESS GUI

AVRDUDESS是用.NET编写的AVRDUDE的GUI前端,虽然它可以与Linux上的Mono一起使用。

RomRaider ECU调谐器

RomRaider是Subaru引擎控制单元的开源调整套件,可让您查看和记录数据并调整ECU。它是为数不多的开源ECU调谐器之一,它可以处理3D视图和实时数据记录。您需要Tactrix Open Port 2.0电缆和Tactrix EcuFlash软件才能下载和使用ECU的固件。使用EcuFlash下载闪存后,可以使用RomRaider进行编辑。编辑器是用Java编写的,目前适用于Windows和Linux,但Linux上不支持EcuFlash。

Komodo CAN Bus Sniffer

Komodo是一款高端嗅探器,具有很好的多操作系统-Python SDK。它的成本约为350至450美元,具体取决于您是需要单CAN接口还是双CAN接口。 Komodo具有隔离功能,可以防止计算机在错误连接时进行油炸,以及可以配置为触发外部设备操作的8个通用IO引脚。 Komodo附带了一些不错的软件来帮助您启动和运行,但真正的优势在于您可以编写自己的Komodo软件。

车辆间谍

Vehicle Spy是Intrepid Control Systems的商业工具,专为逆转CAN和其他车辆通信协议而设计。该软件每个NeoVI或ValueCAN设备需要一个许可证,这两个都是Vehicle Spy的专有设备。 ValueCAN3是与Vehicle Spy配合使用的最便宜的设备。它有一个CAN接口,价格约300美元。添加Vehicle Spy Basic软件,您的成本将约为1,300美元。

NeoIV设备更高端,具有多个可配置通道,起价约为1,200美元。基本套装包含NeoIV(红色)和Vehicle Spy Basic,售价2000美元,可节省一些钱。 Vehicle Spy Professional的成本约为2,600美元,没有硬件。 (你会在Intrepid的网站上找到几个选项。)

所有Intrepid硬件设备都支持上传脚本以实时在总线上运行。 Vehicle Spy Basic支持CAN / LIN RX / TX操作。只有当汽车黑客将成为您的全职项目或者您想要使用ECU闪存或其他高级功能(例如节点模拟,嗅探器脚本或内存校准)时,您才需要专业版。

分享

发表评论