Star on GitHubStar1.1k stars

Tool

esp32_image_parser

Tenable's Python command-line tool, described in its repository as a toolkit for reverse engineering ESP32 firmware, that reads the partition table of an ESP32 flash dump and rebuilds an app partition such as factory or ota_0 as an Xtensa ELF file. Other actions list the partitions, dump a partition's raw bytes and parse an NVS partition's key-value entries as text or JSON; create_elf loads the app image with esptool, maps its flash, DRAM and IRAM segments to ELF sections and adds symbols from a bundled ROM symbol table.

Targets
Firmware
Category
Firmware tools
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • No commits since 2020-02-29 and no releases or tags. Setup is pip install -r requirements.txt, which lists makeelf, esptool and hexdump without versions; the script imports esptool's module namespace and calls its LoadFirmwareImage for the original esp32 chip type.
  • Input is a full flash dump from the analyst's own device. The parser reads the partition table at the default 0x8000 offset, and create_elf accepts only app-type partitions and needs an output file name; segments it cannot map, such as RTC IRAM, are reported rather than converted.
  • The repository commits no firmware images: besides the Python scripts it holds symbols_dump.txt, a readelf-style table of about 890 symbols mostly at ESP32 ROM addresses, which create_elf reads from the current working directory into every ELF. MIT licensed (LICENSE.md).

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  2. esp32_image_parser.py GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  3. esp32_firmware_reader.py GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  4. read_nvs.py GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  5. requirements.txt GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  6. symbols_dump.txt GitHub · tenable/esp32_image_parser · Revision 0c9ff48
  7. LICENSE.md GitHub · tenable/esp32_image_parser · Revision 0c9ff48

More in Firmware and hardware

All 89 entries in Firmware and hardware

↑↓ move↵ open⌘↵ new tab