Init
This commit is contained in:
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Unpack Lofi-12 XT .bin -> directory with headers.json + sect payloads."""
|
||||
import argparse, json, os, struct, sys
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from lofi_image import parse_image, headers_to_json
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument('image')
|
||||
ap.add_argument('outdir')
|
||||
a = ap.parse_args()
|
||||
d = open(a.image, 'rb').read()
|
||||
info = parse_image(d)
|
||||
os.makedirs(a.outdir, exist_ok=True)
|
||||
open(os.path.join(a.outdir, 'headers.json'), 'w').write(
|
||||
json.dumps(headers_to_json(info), indent=2))
|
||||
for s in info['sects']:
|
||||
fn = f"sect{s['index']}_addr{s['addr']:08X}.bin"
|
||||
open(os.path.join(a.outdir, fn), 'wb').write(s['payload'])
|
||||
m = info['mmtd']
|
||||
print(f"fw {tuple(m['fw'])} entry={m['entry']:08X} nsect={m['nsect']} "
|
||||
f"cksum={info['cmtd']['checksum']:08X} size={len(d)}")
|
||||
for s in info['sects']:
|
||||
print(f" sect{s['index']} off={s['off']:06X} addr={s['addr']:08X} "
|
||||
f"len={s['len']} end={s['end']:08X}")
|
||||
print(f"wrote {a.outdir}/")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user