From dc1b4f44f22623cf3c4b7a6ae3b15cec54d35025 Mon Sep 17 00:00:00 2001 From: jacopodl Date: Tue, 30 Jan 2024 14:17:10 +0100 Subject: [PATCH 1/2] fix: LoadFirmwareImage not found --- esp32_image_parser.py | 1 + 1 file changed, 1 insertion(+) diff --git a/esp32_image_parser.py b/esp32_image_parser.py index 6503cf7..aa08b99 100755 --- a/esp32_image_parser.py +++ b/esp32_image_parser.py @@ -6,6 +6,7 @@ import os, argparse from makeelf.elf import * from esptool import * +from esptool.bin_image import * from esp32_firmware_reader import * from read_nvs import * From fe7cb837729406155b27c702905718b49c1e7cd7 Mon Sep 17 00:00:00 2001 From: jacopodl Date: Tue, 30 Jan 2024 14:26:57 +0100 Subject: [PATCH 2/2] feat: added the ability to specify the partition table offset --- esp32_firmware_reader.py | 4 ++-- esp32_image_parser.py | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/esp32_firmware_reader.py b/esp32_firmware_reader.py index b0ddf04..a217abf 100644 --- a/esp32_firmware_reader.py +++ b/esp32_firmware_reader.py @@ -27,8 +27,8 @@ def print_verbose(verbose, value): if verbose: print(value) -def read_partition_table(fh, verbose=False): - fh.seek(0x8000) +def read_partition_table(fh, verbose=False, p_offset=0x8000): + fh.seek(p_offset) partition_table = {} print_verbose(verbose, "reading partition table...") diff --git a/esp32_image_parser.py b/esp32_image_parser.py index aa08b99..3faa275 100755 --- a/esp32_image_parser.py +++ b/esp32_image_parser.py @@ -221,6 +221,7 @@ def main(): arg_parser.add_argument('-output', help='Output file name') arg_parser.add_argument('-nvs_output_type', help='output type for nvs dump', type=str, choices=["text","json"], default="text") arg_parser.add_argument('-partition', help='Partition name (e.g. ota_0)') + arg_parser.add_argument('-partition_offset', help='Set partition offset(HEX) (e.g. 0x8000)') arg_parser.add_argument('-v', default=False, help='Verbose output', action='store_true') args = arg_parser.parse_args() @@ -232,7 +233,10 @@ def main(): verbose = True # parse that ish - part_table = read_partition_table(fh, verbose) + if "partition_offset" in args: + args.partition_offset = int(args.partition_offset, 16) + + part_table = read_partition_table(fh, verbose, p_offset=args.partition_offset) if args.action in ['dump_partition', 'create_elf', 'dump_nvs']: if (args.partition is None):