工具
CanLab CAN 总线逆向分析工作站
用于离线逆向分析 CAN 总线抓包的 PyQt6 桌面工作站及命令行工具。它可读取 SavvyCAN/GVRET CSV、candump、pcap、Vector BLF/ASC、MDF4 和 openpilot 日志,进而提示计数器、校验和及其算法、字节角色、标志位、多路复用器、基于熵的字段边界和跨 ID 相关性,解码 J1939 与 NMEA 2000 PGN,并重组多帧报文。基于 cantools 的 DBC 构建器会用抓取的帧核对信号定义,可导出 DBC、openpilot DBC、CANdb++、ARXML 和 Wireshark Lua 解析器;可选的 MCP 服务器向 AI 助手提供 29 个只接收、不发送的分析工具。
- 目标
- 协议
- 类别
- 协议分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- README 称 CanLab 是单人开发的测试版项目。所审阅的提交 8aaa6ff(2026-09-23)在 pyproject.toml 中声明版本 2.1.0,而最新发布版本为 v2.0.0(2026-09-15),附 Linux x86_64 构建和演示视频。README 强调分析方法属于启发式,只提示候选结果而非确认信号,且尚未在大量真实车辆上验证。
- 需要 Linux、macOS 或 Windows 上的 Python 3.11+(开发使用 3.12),AI、REST、MCP、硬件适配器、MDF4(asammdf)和 openpilot 日志(pycapnp)为可选扩展;README 要求 4 GB 内存,机器学习功能建议 8 GB。实时采集可使用 SocketCAN、comma.ai Panda、GVRET 板卡或 python-can 适配器;README 称只用过一款实体适配器 CANalyst-II,其余仅在虚拟总线上验证。
- 分析对象是使用者自己的抓包。附带的样例是由脚本生成的合成 Hyundai 风格抓包,测试夹具每个只有几行;真实数据验收测试会下载 SavvyCAN、CSS Electronics 和 comma.ai 公开的记录,而不是把它们提交进仓库。opendbc 匹配功能首次使用时下载 commaai/opendbc 索引;可选的 AI 分析会把所选 ID 的帧统计发送给配置的 Anthropic、OpenAI、Groq 或 Ollama 服务。
- 该应用还具备仅限台架使用的发送功能,受默认关闭的全局 ARM TX 开关和屏蔽 ID 列表约束;README 限定只能在隔离的台架环境中使用,此处不作进一步介绍。MCP 工具无法发送报文。
- README 的测试部分报告 753 个 pytest 测试通过(徽章仍写 578),另有与 can-isotp、udsoncan 和 can-j1939 的互操作测试,以及针对公开真实记录的 99 项检查;诊断请求只在脚本模拟的应答端上测试过。采用 MIT 许可证;NMEA 2000 表源自 CANboat(Apache-2.0),cereal 模式定义来自 comma.ai(MIT)。本次审阅未运行测试,也未打开任何抓包。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- pyproject.toml GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- tests/real_data/README.md GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- canlab/sample_data/generate_sample.py GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- canlab/core/data/CANBOAT-NOTICE.txt GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- canlab/core/data/cereal/NOTICE.txt GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- LICENSE GitHub · Sherin-SEF-AI/CanLab · 修订 8aaa6ff
- https://github.com/Sherin-SEF-AI/CanLab/releases/tag/v2.0.0