Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
uefi-firmware-parser — Разбор структур, связанных с прошивками BIOS/Intel ME/UEFI: Volumes, FileSystems, Files и т.д. | Kitploit
Инструменты/GitHubGitHub/theopolis/uefi-firmware-parser
Безопасность встроенных системОбратная инженерияАппаратная БезопасностьАнализ Бинарных ФайловАнализ Прошивок
GitHubtheopolis/uefi-firmware-parser

uefi-firmware-parser

Разбор структур, связанных с прошивками BIOS/Intel ME/UEFI: Volumes, FileSystems, Files и т.д.

Репозиторий
9191872 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Парсер прошивок UEFI

.. image:: https://travis-ci.org/theopolis/uefi-firmware-parser.svg?branch=master :target: https://travis-ci.org/theopolis/uefi-firmware-parser

Парсер прошивок UEFI — это простой модуль и набор скриптов для разбора, извлечения и воссоздания томов прошивки UEFI. Сюда также входят модули для разбора BIOS, OptionROM, Intel ME и других форматов. Пожалуйста, используйте примеры скриптов для изучения процесса разбора.

Установка

Этот модуль доступен через PyPi как uefi_firmware <https://pypi.python.org/pypi/uefi_firmware>_

::

$ sudo pip install uefi_firmware

Для установки из Github склонируйте этот репозиторий и выполните:

::

$ sudo python ./setup.py install

Требования

  • Заголовочные файлы для разработки на Python, обычно находятся в пакете python-dev.
  • Функции сжатия/распаковки будут использовать заголовочные файлы Python и gcc.

Использование

Самый простой способ использовать модуль для обнаружения или разбора прошивки — через класс AutoParser.

::

import uefi_firmware with open('/path/to/firmware.rom', 'r') as fh: file_content = fh.read() parser = uefi_firmware.AutoParser(file_content) if parser.type() != 'unknown': firmware = parser.parse() firmware.showinfo()

В пакетах uefi, pfs, me и flash есть несколько классов, которые принимают содержимое файла в своем конструкторе. Во всех случаях реализованы абстрактные методы:

  • process() выполняет разбор и возвращает True или False
  • showinfo() выводит иерархию информации о структуре
  • dump() обходит иерархию и записывает каждый элемент в файл

Скрипты

Устанавливается скрипт Python uefi-firmware-parser

::

$ uefi-firmware-parser -h usage: uefi-firmware-parser [-h] [-b] [--superbrute] [-q] [-o OUTPUT] [-O] [-c] [-e] [-g GENERATE] [--test] file [file ...]

Parse, and optionally output, details and data on UEFI-related firmware.

positional arguments: file The file(s) to work on

optional arguments: -h, --help show this help message and exit -b, --brute The input is a blob and may contain FV headers. --superbrute The input is a blob and may contain any sort of firmware object -q, --quiet Do not show info. -o OUTPUT, --output OUTPUT Dump firmware objects to this folder. -O, --outputfolder Dump firmware objects to a folder based on filename ${FILENAME}_output/ -c, --echo Echo the filename before parsing or extracting. -e, --extract Extract all files/sections/volumes. -g GENERATE, --generate GENERATE Generate a FDF, implies extraction (volumes only) --test Test file parsing, output name/success.

Чтобы протестировать файл или каталог файлов:

::

$ uefi-firmware-parser --test ~/firmware/* ~/firmware/970E32_1.40: UEFIFirmwareVolume ~/firmware/CO5975P.BIO: EFICapsule ~/firmware/me-03.obj: IntelME ~/firmware/O990-A03.exe: None ~/firmware/O990-A03.exe.hdr: DellPFS

Если вам нужно разобрать и извлечь большое количество файлов прошивки, воспользуйтесь опцией -O для автоматического создания выходной папки для каждого файла. Если требуется разбор и поиск внутренних структур в оболочке, опция --echo выводит имя входного файла перед разбором.

Проверщик типа прошивки решает, как лучше разобрать файл. Если опция --test не определяет тип или выдает unknown, попробуйте использовать опцию -b или --superbrute. Последняя выполняет побайтовую проверку типа.

::

$ uefi-firmware-parser --test ~/firmware/970E32_1.40 ~/firmware/970E32_1.40: unknown $ uefi-firmware-parser --superbrute ~/firmware/970E32_1.40 [...]

Возможности

  • Разбор томов прошивки UEFI, капсул, файловых систем, файлов, секций

  • Дескрипторы флеш-памяти Intel PCH

  • Разбор модулей Intel ME (ME, TXE и т.д.)

  • Разбор обновлений Dell PFS (HDR)

  • [Распаковка] LZMA (7z) в стиле Tiano/EFI и нативная

  • Полное отображение иерархии объектов тома прошивки UEFI

  • [Повторная] генерация дескриптора прошивки на основе разобранных томов

  • Инъекция секций файлов прошивки

Инъекция GUID

Инъекция или замена GUID (добавление/удаление пока не поддерживаются) может выполняться для секций внутри файла прошивки UEFI или для файлов прошивки UEFI внутри файловой системы прошивки.

::

$ python ./scripts/fv_injector.py -h usage: fv_injector.py [-h] [-c] [-p] [-f] [--guid GUID] --injection INJECTION [-o OUTPUT] file

Search a file for UEFI firmware volumes, parse and output.

positional arguments: file The file to work on

optional arguments: -h, --help show this help message and exit -c, --capsule The input file is a firmware capsule. -p, --pfs The input file is a Dell PFS. -f, --ff Inject payload into firmware file. --guid GUID GUID to replace (inject). --injection INJECTION Pre-generated EFI file to inject. -o OUTPUT, --output OUTPUT Name of the output file.

Примечание: при инъекции в файл прошивки пользователю будет предложено выбрать, какую секцию заменить. На данный момент это нельзя автоматизировать в скрипте.

Поддержка IDA Python

Включен скрипт для генерации дополнительных меток GUID для импорта в IDA Python с помощью плагинов Snare. С опцией -g LABEL скрипт сгенерирует вывод в формате словаря Python. Этот проект будет стараться поддерживать актуальность популярных GUID вендоров автоматически.

::

$ python ./scripts/uefi_guids.py -h usage: uefi_guids.py [-h] [-c] [-b] [-d] [-g GENERATE] [-u] file

Output GUIDs for files, optionally write GUID structure file.

positional arguments: file The file to work on

optional arguments: -h, --help show this help message and exit -c, --capsule The input file is a firmware capsule, do not search. -b, --brute The input file is a blob, search for firmware volume headers. -d, --flash The input file is a flash descriptor. -g GENERATE, --generate GENERATE Generate a behemoth-style GUID output. -u, --unknowns When generating also print unknowns.

Поддерживаемые вендоры

Этот модуль был протестирован на обновлениях BIOS/UEFI/прошивок от следующих вендоров. Не каждое обновление для каждого продукта будет разобрано; некоторым может потребоваться предварительная распаковка или извлечение из механизма распространения обновлений (обычно PE).

  • ASRock
  • Dell
  • Gigabyte
  • Intel
  • Lenovo
  • HP
  • MSI
  • VMware
  • Apple
  • Qualcomm
Скачать инструмент