CAN Commander: CAN总线逆向工程工具
简介
CAN Commander是一款为CAN(控制器局域网)总线系统逆向工程设计的综合工具。该项目旨在为汽车爱好者、工程师和安全研究人员提供一个强大的平台,用于与CAN网络进行交互和分析,促进对车辆通信系统的深入理解和操作。
功能特点
- 报文注入:发送自定义CAN报文以测试不同模块的响应。
- 报文记录:记录和日志化CAN通信流量以供分析。
- 网络嗅探:监控CAN网络以观察不同组件之间的通信。
- 报文解码:解码CAN报文并理解底层数据结构。
- 中间人功能:用作即插即用的中间人设备,进行实时数据包交换。
- 用户友好界面:直观的CAN网络交互界面。-应用版本
- 实时数据可视化:图形化展示CAN通信流量,便于分析。
- 故障诊断码和诊断:获得标准OBDII PID扫描仪的所有功能。
- 无线选项:通过有线接入、WiFi或蓝牙低功耗(BLE)进行通信。
入门指南
要开始使用CAN Commander,请按以下步骤操作:
- 克隆仓库:
- 然后安装autowp的mcp2515库:https://github.com/autowp/arduino-mcp2515
1.5 使用CAN Commander官方板:
- 所有CAN Commander官方板出厂时已预先刷入固件 :)
- 使用更新工具或从本仓库下载最新代码进行更新
- CAN Commander FlipperZero应用的新说明将在未来几天内发布。
- 所有功能将通过完整的GUI界面提供,使用简单的按钮/开关即可访问
- 这包括访问板载GPS、外部CC1101模块和用户可编程的Neopixels
- 设置和安装:
-
刷入主应用程序:
- CAN Commander的核心是
CAN_Commander.ino
脚本。 - 必须使用Arduino IDE将此脚本刷入兼容的微控制器,如Arduino Uno、Mega或Nano。
- CAN Commander的核心是
-
MCP2515 CAN控制器:
-
MCP2515是一个CAN(控制器局域网)控制器,通过SPI(串行外设接口)与微控制器通信。
-
它通常以分线板形式提供,需要连接到您的微控制器。
-
将MCP2515的MOSI、MISO、SCK和CS引脚连接到Arduino对应的SPI引脚。请验证您的Arduino型号
-
对于Arduino Uno、Mega和Nano,SPI引脚通常位于以下位置:
- MOSI:引脚11
- MISO:引脚12
- SCK:引脚13
- CS:引脚10(可以使用其他数字引脚,但引脚10是大多数库的标准)
-
-
使用3.3V逻辑微控制器
- 如果使用ESP32或Raspberry Pi Pico等3.3V逻辑的微控制器,需要一个电平转换器。
- 电平转换器将MCP2515的5V信号转换为3.3V,使其可以安全地连接到这些微控制器。
可选:移动应用
除了主要的CAN_Commander.ino
应用程序外,还有一个可选的移动应用。如果选择使用它,可以在AndroidEnvironment/CANCommanderApp_BLE_Edition
和AndroidEnvironment/CANCommanderApp_WiFi_Edition
目录中找到源代码。
1. 运行工具:
- 将CAN_WiFi刷入ESP32或支持WiFi的Arduino
使用方法
-
基本操作:
-
读取所有CAN数据: 在终端输入
1
开始读取所有CAN通信。输入a
可将接收到的报文数据转换为ASCII。 -
过滤和读取: 在终端输入
4
,然后以十六进制输入过滤掩码,最后输入要过滤的帧ID并回车。默认过滤掩码为7FF,可以在该步骤直接按回车使用。 -
发送CAN报文: 在终端输入
2
,然后输入报文的帧ID,接着以十六进制格式输入报文数据。然后指定帧的发送/报文频率(每秒报文数)。(输入5
表示每秒发送5条报文)
-
-
高级功能:
-
跟踪数据变化: 在终端输入
5
进入数据跟踪器。然后输入过滤掩码,再输入要跟踪的帧ID并回车。程序将只显示该CAN ID的数据变化及其变化内容。 -
跟踪最小/最大值: 按照跟踪数据变化的步骤操作,然后在任意时刻输入
max
显示该帧ID的最大值。同样,随时输入min
显示最小值。重启程序/功能时这些值会重置。 -
查看诊断数据: 在终端输入
6
进入诊断模式/PID管理器。然后以十六进制格式输入要查看的PID。这些是可以在线查找的通用代码,或者输入0x0
作为PID。进入诊断模式时会列出几个PID作为起点。这将很快大幅扩展,支持所有可用的PID。DTC(诊断故障码)查看器和清除器正在开发中,将很快发布,包括清除"永久"DTC和关闭检查引擎灯的功能。敬请期待!
-
硬件要求
- 微控制器(Arduino Uno、Mega、Nano、Pico、ESP8266、ESP32)
- MCP2515(确保验证晶振8/16/等)
软件依赖
- Arduino IDE
- USB、WiFi或蓝牙串口终端
贡献
我欢迎对CAN Commander项目的贡献!我目前正在编写贡献指南和相关文档。在完成之前,我会定期审核PR,因此您仍可以贡献。
致谢
- 感谢autowp提供的出色mcp2515库:https://github.com/autowp/arduino-mcp2515