gautham-sai05/CAN-Bus-Communication-Security-Toolkit
GitHub: gautham-sai05/CAN-Bus-Communication-Security-Toolkit
基于 Arduino Nano 和 MCP2515 的低成本 CAN 总线安全实验平台,通过模拟 ECU 通信场景帮助研究者学习嗅探、拒绝服务和消息注入等汽车网络安全基础知识。
Stars: 0 | Forks: 0
# CAN 总线通信与安全工具包
基于 Arduino Nano + MCP2515 的实验项目,用于在受控环境中演示 CAN 通信、监控和基础安全测试。
## 概述
本项目实现了一个三节点的 CAN 总线设置,模拟简单的汽车 ECU 网络:
- **ECU A(发送方)** 根据电位器输入生成 RPM 样式的数据。
- **ECU B(接收方)** 监听 CAN 帧并打印接收到的 payload。
- **工具节点** 处于研究和演示目的,可以嗅探流量、向总线泛洪或注入帧。
目标是为学习 CAN 协议基础知识、消息流、仲裁行为以及汽车网络中常见的攻击场景提供一个实用的学习平台。
## 系统架构
所有三个节点共享同一个 CAN 总线:
- CANH ↔ CANH
- CANL ↔ CANL
- 建议所有节点之间共地
### 节点角色
#### ECU A — 发送方
- 读取 A0 引脚上电位器的模拟输入
- 将读数转换为 `rpm=` 格式的文本 payload
- 使用 CAN ID `0x12` 传输消息
#### ECU B — 接收方
- 从总线接收 CAN 帧
- 将 CAN ID、帧长度和 payload 打印到 Serial Monitor
#### 工具节点
- 提供一个简单的串行菜单,包含三种模式:
1. 嗅探
2. 拒绝服务
3. 消息注入
## 硬件需求
- Arduino Nano × 3
- MCP2515 CAN 模块 × 3(带 TJA1050 收发器)
- 电位器 × 1
- 杜邦线
- USB 数据线
## 图片
### 接线 / 设置

### 工具菜单

### 嗅探模式

### 拒绝服务模式

### 信号 / 流量视图

## 数据流
1. 电位器位置由 ECU A 读取
2. 模拟值转换为 RPM 样式的文本 payload
3. ECU A 在总线上广播 CAN 帧
4. ECU B 接收并打印 payload
5. 工具节点可以根据所选模式观察或操纵流量
## 固件文件
### sender.ino
ECU A 发送端程序。
- 以 500 kbps 初始化 CAN
- 从 A0 读取电位器值
- 使用 CAN ID `0x12` 发送 payload
### reader.ino
ECU B 接收端程序。
- 以 500 kbps 初始化 CAN
- 解析传入的 CAN 帧
- 将数据包元数据和 payload 打印到 Serial Monitor
### tool.ino
控制与测试节点程序。
- 启动时显示一个串行菜单
- 嗅探模式持续打印 CAN 流量
- DoS 模式使用 CAN ID `0x1` 向总线泛洪帧
- 注入模式发送用户定义的 RPM payload,并传输一个高优先级帧
## Serial Monitor 使用方法
所有开发板均以 **9600 baud** 打开 Serial Monitor。
### 工具节点菜单
输入以下选项之一:
- `1` — 嗅探
- `2` — 拒绝服务
- `3` — 消息注入
### 示例输出
发送方:
- `CAN Sender`
- `Sending packet ... done`
接收方:
- `Received packet with id 0x12 and length 7`
- `rpm=805`
工具节点:
- `Sniffing....`
- `Denial of Service in process....`
- `Injection in process....`
## 入门指南
1. 将所有三个 MCP2515 模块连接到同一个 CAN 总线。
2. 将电位器连接到 ECU A。
3. 上传程序:
- `sender.ino` 到 ECU A
- `reader.ino` 到 ECU B
- `tool.ino` 到工具节点
4. 以 9600 baud 打开 Serial Monitor。
5. 在工具节点上选择一种模式并观察流量。
## 项目结构
- `sender.ino` — ECU A 发送端
- `reader.ino` — ECU B 接收端
- `tool.ino` — 嗅探、DoS 和注入工具
- `circuit.png` — 接线 / 拓扑参考
- `menu.png` — 工具节点菜单截图
- `sniffer.png` — 嗅探输出截图
- `dos.png` — DoS 输出截图
- `signal.png` — 信号 / 流量可视化
## 学习成果
- CAN 协议基础
- 多节点 ECU 通信
- 仲裁与总线共享
- 嵌入式系统集成
- 汽车网络安全入门概念
## 安全须知
本仓库仅用于教育和研究目的。
请勿将此设置连接到真实车辆或生产环境中的汽车系统。
## 未来改进
- 添加 CAN ID 过滤
- 实现异常检测
- 将日志存储到 SD 卡
- 在 Linux 上与 SocketCAN 集成
- 构建简单的 CAN 入侵检测系统
标签:Arduino, CAN Bus, CAN总线, CISA项目, DoS攻击, ECU仿真, MCP2515, 串口通信, 协议分析, 嗅探, 实验室环境, 报文注入, 拒绝服务, 攻击与防御, 权限提升, 汽车电子, 汽车网络安全, 物联网安全, 硬件黑客, 网络流量分析, 车载网络, 车载通信, 配置错误, 防御绕过