# 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.

- Type: Tool
- Targets: Firmware
- Category: Firmware tools
- Relationship: Foundation tool
- Sources reviewed: 2026-10-27
- Added to the catalog: 2026-11-03
- Original resource: <https://github.com/tenable/esp32_image_parser>
- Primary source: <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/README.md>
- Catalog page: <https://awesomerea.org/resources/esp32-image-parser/>
- Record JSON: <https://awesomerea.org/resources/esp32-image-parser/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/esp32-image-parser/index.md)

## 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).

## Primary sources

1. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/README.md>
2. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/esp32_image_parser.py>
3. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/esp32_firmware_reader.py>
4. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/read_nvs.py>
5. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/requirements.txt>
6. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/symbols_dump.txt>
7. <https://github.com/tenable/esp32_image_parser/blob/0c9ff48d56c8e1e65ba93213400b4d469b84c8ce/LICENSE.md>

## More in Firmware and hardware

- [Tigard](https://awesomerea.org/resources/tigard/index.md) · Tool
- [UBI Reader](https://awesomerea.org/resources/ubi-reader/index.md) · Tool
- [payload-dumper-go](https://awesomerea.org/resources/payload-dumper-go/index.md) · Tool
- [mithril](https://awesomerea.org/resources/mithril-iot-scanner/index.md) · Tool
- [img4tool](https://awesomerea.org/resources/img4tool/index.md) · Tool
- [payload dumper](https://awesomerea.org/resources/payload-dumper/index.md) · Tool

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
