Exemplo n.º 1
0
Arquivo: tmdinfo.py Projeto: t0mab/hbc
#!/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, "    ")
Exemplo n.º 2
0
#!/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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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)