工具

CAN 负载自动逆向分析流水线

一组研究用途的 Python 和 R 脚本,用于自动逆向分析从乘用车采集的控制器局域网(CAN)报文负载,实现了 Brent Stone 在 AFIT 的博士论文所述的流水线。Python 流水线先把 CAN 日志预处理为按仲裁 ID 组织的数据框,提取公开的 SAE J1979 诊断数据,再通过词法分析推测各信号时间序列的边界,随后通过语义分析构建相关性矩阵并对相关信号做层次聚类,输出图表和树状聚类图。另一组 R 脚本调用 rEDM 经验动力学建模包,对发动机转速、刹车压力和车速时间序列分析因果关系。

使用条件与局限

  • 这是论文研究代码,没有发布版或标签;所审阅的提交日期为 2022-02-01。README 称脚本在 Python 3.6 上开发和测试,需要 requirements.txt 中列出的 NumPy、Pandas、scikit-learn 和(用于绘图的)matplotlib;R 脚本需要安装了 rEDM 包的 R 环境。没有打包或安装步骤,README 也说明克隆后脚本无法立即运行。
  • 两个 Python 文件夹实现同一套思路:Pipeline 是由 Main.py 驱动的基础单文件版本,Pipeline_multi-file 是更完整的批处理版本,README 称其中包含未回移到 Pipeline 的缺陷修复。输入为随附 loggerProgram0.log 所示的 delta 时间/ID/DLC/十六进制格式 CAN 采集;2020 年 4 月新增可通过 -c/--can-utils 参数读取 can-utils 日志格式,其他格式需修改 PreProcessor.py。
  • 使用者需自备 CAN 采集数据。仓库附带作者自有的示例数据:loggerProgram0.log 车辆采集、示例流水线输出、一份 OBD2 PID 表,以及 R 文件夹中不同驾驶条件下发动机转速、刹车压力和车速的 CSV 时间序列,另含作者的博士论文 PDF。其结果是信号边界和聚类的估计值,需要分析者验证,而非已确认的信号定义。
  • 仓库包含 GPL-3.0 许可证文件,而 README 声明该代码属于美国政府作品,在美国不受版权保护,并已获准公开发布(案号 88ABW-2019-0910)。脚本读取被动日志、仅做分析,未描述任何设备交互或帧发送。本次未运行任何内容,所审来源未确立与 REA 的关联。

关于此条目

类型
工具
类别
协议分析工具
关联
基础工具
目标
协议

来源复核于

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

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

一手来源

  1. README.md GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
  2. requirements.txt GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
  3. Pipeline GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
  4. Pipeline_multi-file GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
  5. R GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
  6. LICENSE GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8

同分区更多条目:协议

协议分区全部 33 项资源