学习资源
ICSim 汽车仪表盘 CAN 总线模拟器
OpenGarages 开发的仪表盘模拟器,可在 Linux 虚拟 CAN 接口上练习 CAN 总线逆向分析,而无需真车。一个 SDL 窗口绘制仪表盘,其车速表、转向灯和车门锁指示会根据它监听到的 CAN 帧变化;另一个控制程序把手柄或键盘输入转换成这些帧,并回放一段录制的通用 CAN 流量作为背景噪声。训练模式下,两个程序依据共享的随机种子打乱各信号对应的仲裁 ID 和字节位置,最高难度还会在目标报文中加入额外的随机数据,学习者必须自己找出相关报文。
- 目标
- 协议
- 类别
- 学习资源
- 关联
- 学习资源
- 来源复核于
使用条件与局限
- 审阅基于 master 分支 2025-09-18 的最新提交,该提交合并了一处画面闪烁问题的修复;此前的改动集中在 2023 年 12 月至 2024 年 1 月,加入了 Meson 构建并清理了编译警告。仓库没有标签、发布版本、测试或 CI。默认信号布局是通用的,-m bmw 会把部分信号切换为源码中标注为 BMW X1 的 ID。
- 需在支持 SocketCAN 的 Linux 上运行:README 用 sudo 加载 can 和 vcan 内核模块来创建 vcan0 虚拟接口,setup_vcan.sh 中是同样的命令。构建需要 SDL2、SDL2_image 和 can-utils,Meson 通过 candump 检查后者;控制程序会调用 canplayer 回放 data/sample-can.log,并从 ./data/ 读取数据文件。README 建议使用 Xbox 式手柄,源码也映射了键盘按键;其故障排除说明涉及 SDL 头文件路径,以及一例 Arch Linux 上需要 sdl2_gfx 的报告。
- 仓库提交了 lib.o,这是 can-utils 中 lib.c 的预编译 x86-64 ELF 目标文件,Makefile 和 Meson 都会把它链接进 icsim;README 说明在其他架构上无法链接时,应从 can-utils 重新编译。仓库还附带 data/sample-can.log(一段录制的通用 CAN 流量,用作背景噪声)以及 PNG、SVG 和分层图像素材;不含任何车辆固件或软件。
- 练习方式是监听模拟总线(例如使用 candump),推断哪些 ID 和字节驱动各个仪表;控制程序的用法说明把用 -X 关闭背景流量称为这种练习中的作弊。难度分 0 到 2 级,默认为 1,只有第 2 级会加入随机字节。
- GPL-3.0(LICENSE;meson.build 声明 GPL-3)。lib.c 保留了来自 can-utils 的 Volkswagen Group Electronic Research 版权声明,可按 BSD 式条款或 GPL-2.0 使用。所审来源未提及任何 AI 或 REA 用途,本条目也未构建或运行该项目。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · zombieCraig/ICSim · 修订 2b3333e
- meson.build GitHub · zombieCraig/ICSim · 修订 2b3333e
- Makefile GitHub · zombieCraig/ICSim · 修订 2b3333e
- setup_vcan.sh GitHub · zombieCraig/ICSim · 修订 2b3333e
- icsim.c GitHub · zombieCraig/ICSim · 修订 2b3333e
- controls.c GitHub · zombieCraig/ICSim · 修订 2b3333e
- lib.c GitHub · zombieCraig/ICSim · 修订 2b3333e
- data GitHub · zombieCraig/ICSim · 修订 2b3333e
- LICENSE GitHub · zombieCraig/ICSim · 修订 2b3333e
同分区更多条目:文档与学习资源
- CNNPRE:基于 CNN 的协议逆向方法(IEEE Access 2023) · 研究
- 安装与客户端配置 · 文档
- CLI 与 Evidence · 文档
- MCP 接口约定与生成目录 · 文档
- 原生二进制调查 · 文档
- 跨层 JavaScript 应用工作流 · 文档