hbc/pywii/pywii-tools/tmdupdatecr.py

33 lines
654 B
Python
Raw Normal View History

2021-03-17 15:53:31 +01:00
#!/usr/bin/env python3
2016-11-23 06:35:12 +01:00
import sys, os, os.path
import pywii as wii
try:
from Cryptodome.Hash import SHA
except ImportError:
from Crypto.Hash import SHA
2016-11-23 06:35:12 +01:00
wii.loadkeys()
args = sys.argv[1:]
tmdfile = args.pop(0)
indir = args.pop(0)
2021-03-17 15:53:31 +01:00
print("updating content records of TMD file %s" % tmdfile)
2016-11-23 06:35:12 +01:00
tmd = wii.WiiTmd(open(tmdfile, "rb").read())
for i, cr in enumerate(tmd.get_content_records()):
data = open(os.path.join(indir, "%08X" % cr.cid), "rb").read()
cr.sha = SHA.new(data).digest()
cr.size = len(data)
tmd.update_content_record(i, cr)
tmd.null_signature()
tmd.brute_sha()
tmd.update()
f = open(tmdfile, "wb")
f.write(tmd.data)
f.close()