工具
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 的关联。
关于此条目
- 类型
- 工具
- 类别
- 协议分析工具
- 关联
- 基础工具
- 目标
- 协议
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
- requirements.txt GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
- Pipeline GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
- Pipeline_multi-file GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
- R GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8
- LICENSE GitHub · brent-stone/CAN_Reverse_Engineering · 修订 096dfe8