原文地址:www.hackers-arise.com/post/2017/0…
原文作者:
发布时间:2017年8月8日
欢迎回来,我有抱负的汽车黑客!
现在我们已经介绍了汽车中最常用的协议,即控制器区域网络或CAN,我们现在可以开始安装can-utils了。can-utils是一套Linux专用的工具,使Linux能够与汽车上的CAN网络进行通信。通过这种方式,我们可以嗅探、欺骗和创建我们自己的CAN数据包,从而骗过车辆!
什么是can-utils?
CAN是一个为车辆设计的基于消息的网络协议。 最初是由罗伯特-博世公司创造的,他们也是开发CAN协议的人。此外,SocketCAN是一套开源的CAN驱动和网络堆栈,由大众汽车研究院贡献给Linux内核。
步骤#1:安装can-utils
如果你使用Kali或其他基于Debian的软件库,你可以用apt-get下载并安装can-utils。
kali > apt-get install can-utils
如果你没有使用 Kali 仓库或任何没有 can-utils 的仓库,你可以随时使用 git clone 命令从 github.com 下载 can-utils。
kali > git clone github.com/linux-can/c…
can-utils的基础知识
CAN实用程序是用于从Linux操作系统中处理车辆内的CAN通信的工具。这些工具可以被分为几个功能组。
- 显示、记录、生成和播放CAN通信的基本工具
- 通过IP套接字访问CAN
- CAN内核网关的配置
- CAN总线测量
- ISO-TP工具
- 日志文件转换器
- 串行线纪律(slc)配置
最初,我们将只关注基本工具和日志文件转换器。
关于can-utils中的工具及其功能的完整列表,见下表。
- 显示、记录、生成和回放CAN流量的基本工具
- candump:显示、过滤和记录CAN数据到文件中
- canplayer:重放CAN日志文件
- cansend:发送一个单帧
- cangen:生成(随机)CAN流量
- cansniffer:显示CAN数据内容的差异(只是11位CAN ID)。
- 通过IP套接字访问CAN
- canlogserver:记录来自远程/本地主机的CAN帧
- bcmserver:交互式BCM配置(远程/本地)。
- socketcand:通过TCP/IP套接字使用RAW/BCM/ISO-TP套接字。
- CAN内核网关配置
- cangw : 用于网络链接配置的CAN网关用户空间工具
- CAN总线测量和测试
- canbusload : 计算和显示CAN总线负载
- can-calc-bit-timing : 内核比特率计算的用户空间版本
- canfdtest:全双工测试程序(DUT和主机部分)。
- 用于Linux的ISO-TP工具ISO15765-2:2016
- isotpsend : 发送一个单一的ISO-TP PDU
- isotprecv:接收ISO-TP PDU(s)。
- isotpsniffer : "窃听 "ISO-TP PDU(s)
- isotpdump:"窃听 "和解释CAN消息(CAN_RAW)。
- isotpserver:用于简单的TCP/IP <-> ISO 15765-2桥接的IP服务器(ASCII HEX)。
- isotpperf : ISO15765-2协议性能可视化
- isotptun : 通过ISO-TP在CAN上创建一个双向的IP隧道
-
日志文件转换器 asc2log : 将ASC日志文件转换为紧凑的CAN框架日志文件
log2asc : 将紧凑的CAN框架日志文件转换为ASC日志文件
log2long : 将紧凑的CAN帧表示法转换为用户可读的。 -
串行线路纪律配置(用于slcan驱动)。 slcan_attach : 用于串行线CAN接口配置的用户空间工具
slcand : 用于串行线CAN接口配置的守护程序
slcanpty:为使用slcan ASCII协议的应用程序创建一个pty。
设置一个虚拟的CAN网络
在本系列的下一篇文章中,我们将用各种硬件设备连接到你的车辆中的CAN网络。这些都是相对便宜的(10-20美元),我强烈建议你购买一个,如果你想掌握汽车黑客技术。如果你不能或不愿购买这些硬件设备,你总是可以建立一个虚拟的CAN网络。
要建立一个虚拟的CAN网络。
首先,加载vcan(虚拟CAN)模块。
kali > modprobe vcan
然后,设置好你的虚拟接口。
kali > ip link add dev can0 type vcan
kali > ip link set up vcan0
一旦我们建立了我们的虚拟CAN连接(vcan0),我们就可以通过使用ifconfig命令来测试它是否正常,就像我们在Linux中使用其他接口一样。
kali > ifconfig vcan0
现在,我们已经准备好开始CAN通信的工作了。我们现在只需要把我们的Linux操作系统连接到车辆上。有许多设备、手段和连接类型可以做到这一点。我们将在本系列的下一篇文章中探讨其中的一些问题,所以请继续回来。
请关注我即将推出的关于汽车黑客的课程。