adaalkimacikyoll/Can-Bus-Analyzer
GitHub: adaalkimacikyoll/Can-Bus-Analyzer
一款用于解析车辆CAN总线日志并自动检测异常的CLI工具,解决工程师人工分析海量帧数据效率低下的问题。
Stars: 0 | Forks: 0
## 🚗 CAN Bus 分析器




一款用于解析、分析和报告 CAN 总线日志文件的 CLI 工具 —— 这是每辆现代车辆用于 ECU 间通信的协议。能够检测异常、生成结构化报告,并模拟真实的驾驶会话以供测试。
## 问题背景
车辆试驾结束后,工程师们通常会面对包含数千帧数据的原始 CAN 总线日志。人工识别洪泛攻击、未知 ID 或信号丢失既缓慢又容易出错。本工具可自动化这一过程。
## 功能特性
- 🔍 **异常检测** — 洪泛、未知 ID、信号丢失
- 📄 **双重报告输出** — 结构化 JSON + 可视化 HTML 报告
- 🎮 **日志模拟器** — 生成注入了异常的真实驾驶会话
- 🐳 **Docker 化** — 完全可复现的环境
- ✅ **13 个 Pytest 测试** — 解析器和分析器逻辑全覆盖
## 架构
```
.log file → Parser → Analyzer → Reporter
↓
Anomaly Detection Engine
(Flooding / Unknown ID / Dropout)
```
## 快速开始
**使用 Docker:**
```
docker build -t can-bus-analyzer .
docker run can-bus-analyzer
```
**不使用 Docker:**
```
pip install pytest
python3 -m src.cli simulate # generate sample log
python3 -m src.cli analyze samples/drive_session.log
```
## CLI 用法
```
# 生成注入异常的模拟 log
python3 -m src.cli simulate --frames 1000
# 生成干净的 log(无异常)
python3 -m src.cli simulate --clean
# 分析 log 文件
python3 -m src.cli analyze samples/drive_session.log
# 自定义 output 路径
python3 -m src.cli analyze samples/drive_session.log \
--json output/my_report.json \
--html output/my_report.html
```
## 示例输出
```
╔══════════════════════════════════════╗
║ 🚗 CAN Bus Analyzer v1.0 ║
║ Automotive Log Analysis Toolkit ║
╚══════════════════════════════════════╝
✅ 500 frames parsed, 0 lines skipped
📊 Total frames : 500
🔑 Unique IDs : 6
🔍 Anomalies : 1
⚠️ Anomalies found:
🟡 [WARNING] UNKNOWN_ID: ID 0X7FF not in known ID list
📁 Reports saved: output/report.json | output/report.html
```
## 异常类型
| 类型 | 严重程度 | 描述 |
|------|----------|-------------|
| `FLOODING` | CRITICAL | 某个 ID 占据了超过 40% 的帧 |
| `UNKNOWN_ID` | WARNING | 不在已知白名单中的 ID |
| `DROPOUT` | WARNING | 预期出现的 ID 在日志中从未出现 |
## 运行测试
```
python3 -m pytest tests/ -v
```
## 项目结构
```
├── src/
│ ├── simulator.py # Drive session log generator
│ ├── parser.py # CAN frame parser
│ ├── analyzer.py # Anomaly detection engine
│ ├── reporter.py # JSON + HTML report generator
│ └── cli.py # Command-line interface
├── tests/
│ ├── test_parser.py
│ └── test_analyzer.py
├── samples/ # Sample log files
├── output/ # Generated reports
├── Dockerfile
└── requirements.txt
```
## 相关性
CAN 总线分析是汽车和电动汽车工程流程中的核心任务。本工具模拟了真实世界的工作流程,即在固件更新或硬件验收之前,处理试驾后的日志文件以验证 ECU 行为。
标签:CAN Bus, CAN总线, Docker, ECU验证, PE 加载器, Python, SecOps, 云安全架构, 代码示例, 信号注入, 安全防御评估, 异常检测, 数据分析, 无后门, 日志模拟, 汽车安全, 溢出攻击检测, 物联网安全, 请求拦截, 车联网, 车载网络, 配置审计, 配置错误