{
  "added_at": "2026-11-03",
  "additional_evidence_urls": [
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/pyproject.toml",
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/tests/real_data/README.md",
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/canlab/sample_data/generate_sample.py",
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/canlab/core/data/CANBOAT-NOTICE.txt",
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/canlab/core/data/cereal/NOTICE.txt",
    "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/LICENSE",
    "https://github.com/Sherin-SEF-AI/CanLab/releases/tag/v2.0.0"
  ],
  "category": "protocol-analysis",
  "description_en": "PyQt6 desktop workstation and command-line tool for reverse-engineering CAN bus captures offline. It reads SavvyCAN/GVRET CSV, candump, pcap, Vector BLF/ASC, MDF4 and openpilot logs, then suggests counters, checksums and their algorithms, byte roles, flags, multiplexers, entropy-based field boundaries and cross-ID correlations, decodes J1939 and NMEA 2000 PGNs and reassembles multi-frame messages. A cantools-backed DBC builder checks signal definitions against the captured frames and exports DBC, openpilot DBC, CANdb++, ARXML and Wireshark Lua dissectors, and an optional MCP server offers 29 receive-only analysis tools to assistants.",
  "description_zh": "用于离线逆向分析 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 个只接收、不发送的分析工具。",
  "entry_url": "https://awesomerea.org/resources/canlab/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/canlab/",
  "evidence_url": "https://github.com/Sherin-SEF-AI/CanLab/blob/8aaa6fff2bdfb1099574661c415a7d07a3a6a3de/README.md",
  "group": "tools",
  "id": "canlab",
  "json_url": "https://awesomerea.org/resources/canlab/record.json",
  "kind": "tool",
  "markdown_url": "https://awesomerea.org/resources/canlab/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/canlab/index.md",
  "name": "CanLab",
  "name_zh": "CanLab CAN 总线逆向分析工作站",
  "record_type": "resource",
  "relationship": "foundation",
  "requirements": [
    "README calls CanLab a beta, single-author project. The reviewed commit 8aaa6ff (2026-09-23) declares version 2.1.0 in pyproject.toml, while the latest release is v2.0.0 (2026-09-15) with a Linux x86_64 build and demo videos. README stresses that the analysis is heuristic, suggests candidates rather than identifying signals, and has not been validated on many real vehicles.",
    "Python 3.11+ on Linux, macOS or Windows (developed on 3.12), with optional extras for AI, REST, MCP, hardware adapters, MDF4 (asammdf) and openpilot logs (pycapnp); README asks for 4 GB RAM, 8 GB for the machine-learning features. Live capture uses SocketCAN, a comma.ai Panda, GVRET boards or python-can adapters; README reports one physical adapter used, a CANalyst-II, and the others only on a virtual bus.",
    "Inputs are the user's own captures. The bundled sample is a synthetic Hyundai-style capture generated by a script, the test fixtures are a few lines each, and the real-data acceptance runs fetch public SavvyCAN, CSS Electronics and comma.ai recordings instead of committing them. The opendbc matcher downloads the commaai/opendbc index on first use, and the optional AI analysis sends the selected ID's frame statistics to the configured Anthropic, OpenAI, Groq or Ollama provider.",
    "The application also has bench-only transmit functions behind a global ARM TX switch that is off by default and a blocked-ID list; README restricts them to isolated bench setups. The MCP tools cannot transmit.",
    "README's Testing section reports 753 passing pytest tests (its badge still says 578), interoperability tests against can-isotp, udsoncan and can-j1939, and 99 checks over public real-world recordings; diagnostic requests were tested only against scripted responders. MIT; the NMEA 2000 table derives from CANboat (Apache-2.0) and the cereal schema from comma.ai (MIT)."
  ],
  "requirements_zh": [
    "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）。"
  ],
  "targets": [
    "protocol"
  ],
  "url": "https://github.com/Sherin-SEF-AI/CanLab",
  "verification": "source-reviewed",
  "verified_at": "2026-10-27"
}
