Star on GitHubStar1.1k stars

Tool

UEFI Firmware Parser

Python library and uefi-firmware-parser command for identifying, parsing and extracting PC firmware images: UEFI firmware volumes, capsules, firmware file systems, files and sections, Intel PCH flash descriptors, Intel ME modules and Dell PFS update packages. An AutoParser picks the format, or a brute-force scan looks for volumes and other known objects inside an unidentified blob; results print as an object hierarchy or dump to files, with Tiano/EFI and LZMA sections decompressed by a bundled C extension. Helper scripts replace a section or file by GUID inside a volume, generate an FDF flash description from parsed volumes and output GUID labels for IDA scripts.

Targets
Firmware
Category
Firmware tools
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • Latest release at review: v1.16, published 2026-06-04 on GitHub and PyPI with abi3 wheels for Linux, Windows and macOS. The reviewed master commit, from 2026-10-12, is three commits ahead: it adds AMI capsule support and a safe-path utility for dumped files and drops the future dependency, so those changes are not yet released.
  • Python 3.10+. A source install compiles the bundled efi_compressor C extension, which the README says needs the Python development headers and gcc; the package declares no other runtime dependencies. CI runs the unit tests on Python 3.12 on Ubuntu.
  • Input is a firmware file the user supplies, such as a vendor BIOS/UEFI update or a flash dump. The README warns that not every vendor update parses and that some must first be decompressed or unpacked from the update mechanism, typically a PE executable; --test reports the detected type, -b searches a blob for volume headers and --superbrute checks every byte offset for any known object. It lists ASRock, Dell, Gigabyte, Intel, Lenovo, HP, MSI, VMware, Apple and Qualcomm updates as tested, without per-version results.
  • GUID injection with fv_injector.py only replaces existing sections or files, with no addition or removal, and asks interactively which section to replace inside a firmware file. It parses containers and extracts their contents; analyzing the extracted modules needs a separate disassembler or decompiler. CI also parses a separately hosted samples repository.
  • LICENSE carries MIT-style permission text and points to inline licenses in contributed work, while setup.py and the PyPI metadata declare BSD-3-Clause. The bundled Intel Tiano compression sources are BSD-2-Clause-Patent and the LZMA SDK files are public domain.

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.rst GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  2. setup.py GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  3. uefi_firmware/__init__.py GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  4. bin/uefi-firmware-parser GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  5. scripts/fv_injector.py GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  6. .github/workflows/ci.yml GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  7. LICENSE GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  8. uefi_firmware/compression/Tiano/Decompress.c GitHub · theopolis/uefi-firmware-parser · Revision c4b8c64
  9. https://github.com/theopolis/uefi-firmware-parser/releases/tag/v1.16
  10. https://pypi.org/project/uefi_firmware/1.16/

More in Firmware and hardware

All 89 entries in Firmware and hardware

↑↓ move↵ open⌘↵ new tab