ameersmu2004-rgb/DOOR_ECU

GitHub: ameersmu2004-rgb/DOOR_ECU

一款基于Python的车门ECU模拟器,集成UDS/ISO-TP诊断协议栈与漏洞引擎,用于汽车CAN总线安全研究与诊断测试。

Stars: 0 | Forks: 0

# ◈ 车门 ECU 模拟器 一款基于 UDS/CAN 诊断框架构建的未来感、全息 HUD 风格车门 ECU 模拟器。具有实时动画的车门控制系统,可实时模拟 ECU 状态。 ## 快速开始 ``` cd DOOR_ECU chmod +x run.sh ./run.sh ``` 该脚本将自动安装缺失的依赖项并设置 vcan0。 ## 手动运行 ``` # 安装 deps pip3 install python-can --break-system-packages # 设置 vcan(可选 — 用于真实的 CAN tester tools) sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 # 启动 python3 main_door.py ``` ## 功能 ### 🖥 未来感车门 ECU 仪表盘 - 动画车门锁定/解锁控制 - 实时车窗升降模拟 - 儿童锁指示器 - 后视镜折叠/展开动画 - 车内照明状态指示器 - 实时 ECU 状态更新 ### 📊 实时遥测指示器 - 车门锁止状态 - 车窗位置 - 儿童锁状态 - 后视镜位置 - 车厢照明状态 - ECU 电源状态 ### ⚠ 激活的警告指示器 - 车门开启 - 儿童锁已激活 - 车窗卡住警告 - 电量过低 - 通信错误 ### 🔬 UDS 诊断支持 支持所有标准 UDS 服务: | SID | 服务 | |------|---------| | 0x10 | DiagnosticSessionControl (Default / Extended / Programming) | | 0x11 | ECUReset | | 0x27 | SecurityAccess (seed/key challenge) | | 0x22 | ReadDataByIdentifier | | 0x2E | WriteDataByIdentifier | | 0x3E | TesterPresent | | 0x19 | ReadDTCInformation | | 0x14 | ClearDTC | | 0x28 | CommunicationControl | ### 📋 支持的 DID | DID | 描述 | |--------|-------------| | 0xF190 | 车门锁止状态 | | 0xF191 | 车窗位置 | | 0xF192 | 儿童锁状态 | | 0xF193 | 后视镜位置 | | 0xF194 | 车厢照明状态 | | 0xF186 | 激活的会话 | | 0xF187 | 零件号 | | 0xF189 | 软件版本 | ### 🔴 Oracle / 漏洞引擎 加载内置的 `door_vulns.json`(或任何兼容的 JSON)以激活漏洞引擎: - **DOOR-001** — 车门锁止状态溢出 - **DOOR-002** — 儿童锁绕过 - **DOOR-003** — 高频 ReadDID DoS 攻击 - **DOOR-004** — 编程会话绕过 - **DOOR-005** — 弱安全种子挑战 - **DOOR-006** — 未经授权的车窗控制写入 ### 📁 日志面板 - **UDS 诊断日志** — 所有 UDS 请求/响应 - **原始帧日志** — CAN 帧(当 vcan0 处于活动状态时) - **Oracle / 漏洞日志** — 漏洞检测和 oracle 事件 ### 💾 JSON 加载/卸载 无需重启 ECU 即可热切换漏洞配置文件。 ### 📤 导出日志 将会话日志保存为 `.log` 或 `.jsonl` 文件。 ## 使用 cantools / isotp 进行测试 ``` # 安装 tools pip3 install can-isotp python-can # 为 Door Lock Status 发送 ReadDataByIdentifier python3 -c " import can, isotp, time bus = can.Bus('vcan0', bustype='socketcan') addr = isotp.Address(isotp.AddressingMode.Normal_11bits, txid=0x7E0, rxid=0x7E8) stack = isotp.CanStack(bus, address=addr) stack.send(bytes([0x22, 0xF1, 0x90])) time.sleep(0.2) stack.process() if stack.available(): print('Response:', stack.recv().hex().upper()) bus.shutdown() " ``` ## 文件结构 ``` DOOR_ECU/ ├── main_door.py ← Entry point ├── door_gui.py ← Futuristic GUI ├── door_ecu.py ← UDS service handler ├── door_state.py ← ECU state simulation ├── door_vulns.json ← Vulnerability profiles ├── run.sh ← One-click launcher │ │ (Shared ECU framework:) ├── uds_core.py ← UDS protocol core ├── uds_constants.py ← SID / NRC constants ├── uds_helpers.py ← Hex formatting helpers ├── isotp_server.py ← ISO-TP transport layer ├── vulnerability_engine.py ← Vulnerability evaluation engine ├── vulnerability_config.py ← JSON config loader ├── logger.py ← Structured logger ├── ecu_memory.py ← Virtual memory / NVM └── logs/ ← Auto-created log directory ```
标签:CAN总线, UDS诊断, 汽车电子, 漏洞模拟, 逆向工具