#!/usr/bin/env python import sys, os, os.path import pywii as wii args = sys.argv[1:] if args[0] == "-dpki": wii.loadkeys_dpki() args.pop(0) else: wii.loadkeys() tmdfile = args.pop(0) certs = None if len(args) > 0: certs, certlist = wii.parse_certs(open(args.pop(0), "rb").read()) print "TMD file %s:" % tmdfile tmd = wii.WiiTmd(open(tmdfile, "rb").read()) tmd.showinfo(" ") if certs is not None: tmd.showsig(certs, " ") print "Certificates:" for cert in certlist: cert.showinfo(" - ") cert.showsig(certs, " ")
#!/usr/bin/env python import sys, os, os.path import pywii as wii wii.loadkeys() wadfile = sys.argv[1] indir = sys.argv[2] tmd = wii.WiiTmd(open(indir + os.sep + "tmd", "rb").read()) tik = wii.WiiTik(open(indir + os.sep + "cetk", "rb").read()) certs, certlist = wii.parse_certs( open(os.path.join(indir, "certs"), "rb").read()) footer = open(indir + os.sep + "footer", "rb").read() wad = wii.WiiWadMaker(wadfile, tmd, tik, certlist, footer, nandwad=True) for i, ct in enumerate(tmd.get_content_records()): data = open(indir + os.sep + "%08X" % ct.cid, "rb").read() wad.adddata(data, ct.cid) wad.finish() if not wad.tik.signcheck(wad.certs): wad.tik.null_signature() wad.tik.brute_sha() wad.updatetik()
import sys, os, os.path import pywii as wii args = sys.argv[1:] if args[0] == "-dpki": wii.loadkeys_dpki() args.pop(0) else: wii.loadkeys() wadfile = args.pop(0) indir = args.pop(0) tmd = wii.WiiTmd(open(os.path.join(indir, "tmd"), "rb").read()) tik = wii.WiiTik(open(os.path.join(indir, "cetk"), "rb").read()) certs, certlist = wii.parse_certs( open(os.path.join(indir, "certs"), "rb").read()) footer = open(os.path.join(indir, "footer"), "rb").read() wad = wii.WiiWadMaker(wadfile, tmd, tik, certlist, footer) for i, ct in enumerate(tmd.get_content_records()): data = open(os.path.join(indir, "%08X" % ct.cid), "rb").read() wad.adddata(data, ct.cid) wad.finish()
import sys, os, os.path import pywii pywii.loadkeys_dpki() args = sys.argv[1:] mode = args.pop(0) infile = args.pop(0) outfile = args.pop(0) certfile = args.pop(0) issuer = args.pop(0) if sys.argv[1] == "-cetk": signed = pywii.WiiTik(open(infile, "rb").read()) elif sys.argv[1] == "-tmd": signed = pywii.WiiTmd(open(infile, "rb").read()) else: print "EYOUFAILIT" sys.exit(1) certs, certlist = pywii.parse_certs(open(certfile, "rb").read()) signed.update_issuer(issuer) if not signed.sign(certs): print "dpki signing failed" sys.exit(1) open(outfile, "wb").write(signed.data) print "successfully signed %s" % outfile
titles = list(struct.unpack(">" + "Q" * numtitles, buf.read())) buf.free() titles.sort() buf = ipc.makebuf(4) for t in titles: print("\nTitle 0x%016x (%s)\n" % (t, decode_title(t))) res = ipc.IOSIoctlv(fd, 0x34, "q:d", t, buf) if res < 0: print("Error reading the TMD size %d" % res) continue size = struct.unpack(">I", buf.read())[0] stmd = ipc.makebuf(size) res = ipc.IOSIoctlv(fd, 0x35, "qi:d", t, size, stmd) if res < 0: stmd.free() print("Error reading the TMD %d" % res) continue tmd = wii.WiiTmd(stmd.read()) tmd.showinfo() stmd.free() buf.free() ipc.IOSClose(fd)