diff --git a/Makefile b/Makefile index e559179..e149b4a 100644 --- a/Makefile +++ b/Makefile @@ -113,7 +113,7 @@ gateway: $(OUTPUT_D) @[ -d $(BUILD) ] || mkdir -p $(BUILD) @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile EXEC_METHOD=GATEWAY cp tools/LauncherTemplate.dat $(OUTPUT_D)/Launcher.dat - python tools/insert.py $(OUTPUT_D)/Launcher.dat $(OUTPUT).bin 0x16D8D0 + dd if=$(OUTPUT).bin of=$(OUTPUT_D)/Launcher.dat bs=1497296 seek=1 conv=notrunc bootstrap: $(OUTPUT_D) @cd $(CURDIR)/brahma_loader && mkdir -p data diff --git a/scripts/cdn_download.py b/scripts/cdn_download.py index 0f3bed8..0a3f104 100644 --- a/scripts/cdn_download.py +++ b/scripts/cdn_download.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # This script is old and shitty import os diff --git a/scripts/dump_ticket_keys.py b/scripts/dump_ticket_keys.py index 8728138..c246749 100644 --- a/scripts/dump_ticket_keys.py +++ b/scripts/dump_ticket_keys.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # This script is awful, but it 'works for me'(TM) import sys diff --git a/scripts/ncchinfo_gen.py b/scripts/ncchinfo_gen.py index 1bbe961..12f86b7 100644 --- a/scripts/ncchinfo_gen.py +++ b/scripts/ncchinfo_gen.py @@ -188,7 +188,7 @@ def parseNCCH(fh, offs=0, idx=0, titleId='', standAlone=1): data = data + parseNCCHSection(header, ncchSection.exefs, 0, 0, 1, tab) data = data + genOutName(titleId, ncsdPartitions[idx], b'exefs_norm') entries += 1 - if uses7xCrypto: + if uses7xCrypto or usesSeedCrypto: data = data + parseNCCHSection(header, ncchSection.exefs, uses7xCrypto, usesSeedCrypto, 0, tab) data = data + genOutName(titleId, ncsdPartitions[idx], b'exefs_7x') entries += 1 diff --git a/scripts/print_ticket_keys.py b/scripts/print_ticket_keys.py index 96fa9cc..a710999 100644 --- a/scripts/print_ticket_keys.py +++ b/scripts/print_ticket_keys.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + import struct import os import sys diff --git a/scripts/sdinfo_gen.py b/scripts/sdinfo_gen.py index eed2649..99dd04e 100644 --- a/scripts/sdinfo_gen.py +++ b/scripts/sdinfo_gen.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python + import sys import os import struct diff --git a/scripts/seeddb_gen.py b/scripts/seeddb_gen.py new file mode 100644 index 0000000..d02b9e8 --- /dev/null +++ b/scripts/seeddb_gen.py @@ -0,0 +1,65 @@ +import struct,os,sys +from binascii import hexlify + +def GetIDandSEED(filename): + tids = [] + seeds = [] + with open(filename,'rb') as savefile: + savedata = savefile.read() + while savedata.find('SEEDDB')>=0: + SBoffset = savedata.find('SEEDDB') + tidoffset = (struct.unpack('\\sysdata\\0001000f\\'" + print 'Decyrpt NAND FAT16 partition and dump these files for this script.' + sys.exit() + + for filename in sys.argv[1:]: + titleid,seed = GetIDandSEED(filename) + tids += titleid + seeds += seed + + if len(tids)<1: + print 'No SEED found.' + sys.exit() + + outpath = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), 'seeddb.bin') + with open(outpath,'wb') as seeddb: + print '\nGenerating seeddb.bin ...' + seeddb.write(struct.pack('entries[i].size_mb}; memcpy(padInfo.CTR, info->entries[i].CTR, 16); memcpy(padInfo.filename, info->entries[i].filename, 112); - if (info->entries[i].uses7xCrypto && info->entries[i].usesSeedCrypto) { + if (info->entries[i].usesSeedCrypto) { u8 keydata[32]; memcpy(keydata, info->entries[i].keyY, 16); u32 found_seed = 0;