ToolboxToolbox/KernelExtractor.py

36 lines
678 B
Python
Executable File

#!/usr/bin/env python3
from sys import argv
# USAGE: KernelExtractor.py DESTDIR ROM1 [ROM2 ...]
kerns = {}
for fname in argv[2:]:
print(fname)
with open(fname, 'rb') as f:
b = f.read()
if len(b) != 0x400000: print('--- bad size')
b = b[0x310000:]
l = b.index(bytes(1024))
l += 3
l -= l % 4
b = b[:l]
if not b:
print('--- no kernel')
continue
vers = '%02x%02x' % tuple(b[4:6])
# if not vers.startswith('02'): continue
print('---', vers)
if vers in kerns:
if kerns[vers] != b:
print('--- bad motivator')
kerns[vers] = None
else:
kerns[vers] = b
for v, k in kerns.items():
if k is None: continue
with open(argv[1] + v, 'wb') as f:
f.write(k)