学习资源

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 用途,本条目也未构建或运行该项目。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · zombieCraig/ICSim · 修订 2b3333e
  2. meson.build GitHub · zombieCraig/ICSim · 修订 2b3333e
  3. Makefile GitHub · zombieCraig/ICSim · 修订 2b3333e
  4. setup_vcan.sh GitHub · zombieCraig/ICSim · 修订 2b3333e
  5. icsim.c GitHub · zombieCraig/ICSim · 修订 2b3333e
  6. controls.c GitHub · zombieCraig/ICSim · 修订 2b3333e
  7. lib.c GitHub · zombieCraig/ICSim · 修订 2b3333e
  8. data GitHub · zombieCraig/ICSim · 修订 2b3333e
  9. LICENSE GitHub · zombieCraig/ICSim · 修订 2b3333e

同分区更多条目:文档与学习资源

文档与学习资源分区全部 61 项资源