# ICSim 汽车仪表盘 CAN 总线模拟器

> OpenGarages 开发的仪表盘模拟器，可在 Linux 虚拟 CAN 接口上练习 CAN 总线逆向分析，而无需真车。一个 SDL 窗口绘制仪表盘，其车速表、转向灯和车门锁指示会根据它监听到的 CAN 帧变化；另一个控制程序把手柄或键盘输入转换成这些帧，并回放一段录制的通用 CAN 流量作为背景噪声。训练模式下，两个程序依据共享的随机种子打乱各信号对应的仲裁 ID 和字节位置，最高难度还会在目标报文中加入额外的随机数据，学习者必须自己找出相关报文。

- 类型：学习资源
- 目标：协议
- 类别：学习资源
- 关联：学习资源
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/zombieCraig/ICSim>
- 一手来源：<https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/icsim/>
- 记录 JSON：<https://awesomerea.org/resources/icsim/record.json>
- 英文版：[English](https://awesomerea.org/resources/icsim/index.md)

## 使用条件与局限

- 审阅基于 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 使用。

## 一手来源

1. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/README.md>
2. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/meson.build>
3. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/Makefile>
4. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/setup_vcan.sh>
5. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/icsim.c>
6. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/controls.c>
7. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/lib.c>
8. <https://github.com/zombieCraig/ICSim/tree/2b3333ef866987d8adc9c15ff15b9b9189edf85b/data>
9. <https://github.com/zombieCraig/ICSim/blob/2b3333ef866987d8adc9c15ff15b9b9189edf85b/LICENSE>

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

- [CNNPRE：基于 CNN 的协议逆向方法（IEEE Access 2023）](https://awesomerea.org/zh/resources/cnnpre/index.md) · 研究
- [RPISEC 恶意软件分析课程（CSCI 4976）](https://awesomerea.org/zh/resources/rpisec-malware-analysis-course/index.md) · 学习资源
- [Corkami 文件格式图解海报集](https://awesomerea.org/zh/resources/corkami-pics/index.md) · 学习资源
- [《Practical Malware Analysis》恶意软件分析实战指南](https://awesomerea.org/zh/resources/practical-malware-analysis/index.md) · 学习资源
- [Windows 恶意软件分析培训第一卷（malware_training_vol1）](https://awesomerea.org/zh/resources/malware-training-vol1/index.md) · 学习资源
- [esp-idf-injection-ng ESP-IDF 帧发送限制分析](https://awesomerea.org/zh/resources/esp-idf-injection-ng/index.md) · 研究

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
