# cpu_rec CPU 指令集统计识别工具

> 对任意二进制文件（例如来历不明的固件镜像）中的 CPU 指令集进行统计识别：把字节的马尔可夫链统计与默认语料库比较，语料库涵盖数十种架构，从 6502、8051 到 ARM、MIPS、PowerPC、RISC-V、x86-64 和 WebAssembly。它先给出整个文件的匹配结果，再找出与单一架构匹配的最大数据块，并显示熵值，以便排除加密或压缩区域。可独立运行，也可作为 Python 函数或 binwalk 模块使用。

- 类型：工具
- 目标：二进制 · 固件
- 类别：固件工具
- 关联：基础工具
- 来源复核于：2026-10-19
- 收录于：2026-10-19
- 原始资源：<https://github.com/airbus-seclab/cpu_rec>
- 一手来源：<https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/cpu-rec/>
- 记录 JSON：<https://awesomerea.org/resources/cpu-rec/record.json>
- 英文版：[English](https://awesomerea.org/resources/cpu-rec/index.md)

## 使用条件与局限

- 审阅时最新版本为 v1.1，发布于 2024-03-19，标签正对应所审阅的提交；该版本新增可选的 pickle 语料缓存以加快启动，并可用 LIEF 代替 elfesteem。没有安装包：只需把 cpu_rec.py 和 cpu_rec_corpus 目录复制到同一目录。据 2026-10-20 核查，v1.1 发布后没有新的推送，仓库未归档；README 的“Development status”一节只有 CI 徽章，未标注项目仍在维护、已被取代或已归档。
- 可在 Python 3 或 Python 2 上运行；可移植性工作流在 Ubuntu 和 macOS 上测试 Python 3.10、PyPy 2.7 与 3.9 以及 GraalPy。若没有 lzma 模块，需先解压 .xz 语料文件。可选的 elfesteem 或 LIEF 能提取 ELF、PE、Mach-O 或 COFF 文件的代码段。README 称在作者的笔记本上，每 MB 约需一分钟分析时间，为 70 种架构建立签名需要 1 GB 内存。
- binwalk 模式需安装到 binwalk 的模块目录，并要求 binwalk 包含 devttys0/binwalk 第 241 号合并请求的补丁；这些说明针对的是早期的 Python 版 binwalk。
- 结果属于启发式判断：README 提醒，一个文件可能包含多种架构，小数据块可能被误判，熵值高于 0.9 的数据所得结果大概没有意义。78k 和 TriCore 因许可问题未收入默认语料库，只能由使用者用自有二进制补充。
- cpu_rec.py 采用 Apache-2.0 许可。README 说明默认语料库是由各自带有许可的代码块组成的复合作品，主要来自 Debian、BusyBox、C-Kermit 和作者自行交叉编译的开源程序，另有少数许可不明的代码块，其中包括 Dell 分发的一个 H8S 二进制；build_default_corpus 记录了每一块的来源。

## 一手来源

1. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/README.md>
2. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/README.md#L7-L76>
3. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/README.md#L140-L151>
4. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/README.md#L233-L296>
5. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/cpu_rec.py#L329-L516>
6. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/cpu_rec.py#L517-L645>
7. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/.github/workflows/portability.yml>
8. <https://github.com/airbus-seclab/cpu_rec/blob/6b192399cd56ad6953e568e1263024dd8a4ef38d/LICENCE>
9. <https://github.com/airbus-seclab/cpu_rec/releases/tag/v1.1>
10. <https://www.sstic.org/2017/presentation/cpu_rec/>

## 同分区更多条目：固件与硬件

- [ME Analyzer Intel 引擎与图形固件分析工具](https://awesomerea.org/zh/resources/me-analyzer/index.md) · 工具
- [CHIPSEC 平台安全评估框架](https://awesomerea.org/zh/resources/chipsec/index.md) · 工具
- [binbloom 原始固件端序与基址分析工具](https://awesomerea.org/zh/resources/binbloom/index.md) · 工具
- [m1n1 Apple Silicon 引导与硬件研究工具](https://awesomerea.org/zh/resources/m1n1/index.md) · 工具
- [SVD-Loader：Ghidra CMSIS-SVD 外设映射脚本](https://awesomerea.org/zh/resources/svd-loader-ghidra/index.md) · 工具
- [UEFI Firmware Parser 固件结构解析工具](https://awesomerea.org/zh/resources/uefi-firmware-parser/index.md) · 工具

## 关于此条目

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