工具
UEFI Firmware Parser 固件结构解析工具
Python 库及 uefi-firmware-parser 命令行工具,用于识别、解析和提取 PC 固件镜像:UEFI 固件卷、胶囊(capsule)、固件文件系统、文件与节(section),以及 Intel PCH Flash Descriptor、Intel ME 模块和 Dell PFS 更新包。AutoParser 可自动判断格式,暴力扫描模式则在未识别的数据块中查找固件卷及其他已知对象;结果可打印为对象层级或导出为文件,Tiano/EFI 与 LZMA 压缩的节由内置 C 扩展解压。附带的脚本可按 GUID 替换固件卷中的节或文件,根据解析出的固件卷生成 FDF 闪存描述文件,并输出供 IDA 脚本使用的 GUID 标签。
使用条件与局限
- 审阅时最新版本为 v1.16,于 2026-06-04 在 GitHub 和 PyPI 发布,提供适用于 Linux、Windows 和 macOS 的 abi3 wheel。所审阅的 master 提交日期为 2026-10-12,领先该版本三个提交:新增 AMI 胶囊支持和用于导出文件路径的安全路径工具,并移除了 future 依赖,这些改动尚未发布。
- 需要 Python 3.10+。从源码安装时会编译内置的 efi_compressor C 扩展,README 称这需要 Python 开发头文件和 gcc;该软件包未声明其他运行时依赖。CI 在 Ubuntu 上用 Python 3.12 运行单元测试。
- 输入为使用者自备的固件文件,例如厂商 BIOS/UEFI 更新包或闪存转储。README 提醒,并非每个厂商更新包都能解析,有些需要先从更新机制(通常是 PE 可执行文件)中解压或解包;--test 会报告识别出的类型,-b 在数据块中搜索固件卷头,--superbrute 则逐字节检查任何已知对象。README 列出 ASRock、Dell、Gigabyte、Intel、Lenovo、HP、MSI、VMware、Apple 和 Qualcomm 的更新包为已测试来源,但没有按版本给出结果。
- fv_injector.py 的 GUID 注入只能替换已有的节或文件,不能增删;向固件文件注入时会交互式询问要替换哪个节。它负责解析容器结构并提取内容,分析提取出的模块仍需另用反汇编器或反编译器。CI 还会解析一个另行托管的样本仓库,本合集未审阅该仓库。
- LICENSE 文件为 MIT 式授权文本,并提示贡献代码另附内联许可证;而 setup.py 和 PyPI 元数据声明的是 BSD-3-Clause。内置的 Intel Tiano 压缩源码采用 BSD-2-Clause-Patent,LZMA SDK 文件属于公有领域。本次未安装,也未解析任何固件。
关于此条目
- 类型
- 工具
- 类别
- 固件工具
- 关联
- 基础工具
- 目标
- 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.rst GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- setup.py GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- uefi_firmware/__init__.py GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- bin/uefi-firmware-parser GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- scripts/fv_injector.py GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- .github/workflows/ci.yml GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- LICENSE GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- uefi_firmware/compression/Tiano/Decompress.c GitHub · theopolis/uefi-firmware-parser · 修订 c4b8c64
- https://github.com/theopolis/uefi-firmware-parser/releases/tag/v1.16
- https://pypi.org/project/uefi_firmware/1.16/