commit 647ae53632f653ae3c8b8c0e1d21d8b6ce78cfc4 Author: Lillian Skinner <56081713+rvtr@users.noreply.github.com> Date: Sat Mar 28 12:56:13 2026 -0400 It works for retail somewhat diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca51080 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +donor/dev/software/* +metadata/* +twltool-git/* +nand.bin +nand_final.bin +nand_dec.bin +temp.bin +test.log +tmp.tik +tmp.tmd +twl_main.img +twl_photo.img +twltool_broken +twltool_linux +twltool-git +mtoolsrc +maketad.pl +remaketad.pl diff --git a/donor/0000 b/donor/0000 new file mode 100644 index 0000000..b57a9ef Binary files /dev/null and b/donor/0000 differ diff --git a/donor/HWINFO_N.dat b/donor/HWINFO_N.dat new file mode 100755 index 0000000..3116144 Binary files /dev/null and b/donor/HWINFO_N.dat differ diff --git a/donor/TWLFontTable.dat b/donor/TWLFontTable.dat new file mode 100755 index 0000000..9d42be0 Binary files /dev/null and b/donor/TWLFontTable.dat differ diff --git a/donor/TWLFontTable_CN.dat b/donor/TWLFontTable_CN.dat new file mode 100755 index 0000000..3fdbc81 Binary files /dev/null and b/donor/TWLFontTable_CN.dat differ diff --git a/donor/TWLFontTable_KR.dat b/donor/TWLFontTable_KR.dat new file mode 100755 index 0000000..a2393bb Binary files /dev/null and b/donor/TWLFontTable_KR.dat differ diff --git a/donor/dev/cert.sys b/donor/dev/cert.sys new file mode 100755 index 0000000..da24c0c Binary files /dev/null and b/donor/dev/cert.sys differ diff --git a/donor/dev/stage2/Stage2_SDMC_20080821-134255_dev.nand b/donor/dev/stage2/Stage2_SDMC_20080821-134255_dev.nand new file mode 100755 index 0000000..d1eab97 Binary files /dev/null and b/donor/dev/stage2/Stage2_SDMC_20080821-134255_dev.nand differ diff --git a/donor/dev/stage2/Stage2_updated_dev.nand b/donor/dev/stage2/Stage2_updated_dev.nand new file mode 100755 index 0000000..95f9e82 Binary files /dev/null and b/donor/dev/stage2/Stage2_updated_dev.nand differ diff --git a/donor/dev/stage2/Stage2_v1935-7470_dev.nand b/donor/dev/stage2/Stage2_v1935-7470_dev.nand new file mode 100755 index 0000000..6799281 Binary files /dev/null and b/donor/dev/stage2/Stage2_v1935-7470_dev.nand differ diff --git a/donor/dev/stage2/Stage2_v2262-8067_dev.nand b/donor/dev/stage2/Stage2_v2262-8067_dev.nand new file mode 100755 index 0000000..3e5e5de Binary files /dev/null and b/donor/dev/stage2/Stage2_v2262-8067_dev.nand differ diff --git a/donor/dev/stage2/Stage2_v2435-8325_dev.nand b/donor/dev/stage2/Stage2_v2435-8325_dev.nand new file mode 100755 index 0000000..08e0b9f Binary files /dev/null and b/donor/dev/stage2/Stage2_v2435-8325_dev.nand differ diff --git a/donor/dev/stage2/Stage2_v2725-9336_dev.nand b/donor/dev/stage2/Stage2_v2725-9336_dev.nand new file mode 100755 index 0000000..95f9e82 Binary files /dev/null and b/donor/dev/stage2/Stage2_v2725-9336_dev.nand differ diff --git a/donor/dev/stage2/Stage2_vNONE-NONE_Unknown_dev.nand b/donor/dev/stage2/Stage2_vNONE-NONE_Unknown_dev.nand new file mode 100755 index 0000000..3027150 Binary files /dev/null and b/donor/dev/stage2/Stage2_vNONE-NONE_Unknown_dev.nand differ diff --git a/donor/dev/stage2/Stage2_vNONE-NONE_Updater_dev.nand b/donor/dev/stage2/Stage2_vNONE-NONE_Updater_dev.nand new file mode 100755 index 0000000..31ae047 Binary files /dev/null and b/donor/dev/stage2/Stage2_vNONE-NONE_Updater_dev.nand differ diff --git a/donor/dev/stage2/Stage2_vNONE-NONE_X4_dev.nand b/donor/dev/stage2/Stage2_vNONE-NONE_X4_dev.nand new file mode 100755 index 0000000..22cf3a5 Binary files /dev/null and b/donor/dev/stage2/Stage2_vNONE-NONE_X4_dev.nand differ diff --git a/donor/hb/HNAALaunch.tmd b/donor/hb/HNAALaunch.tmd new file mode 100644 index 0000000..5ef6f84 Binary files /dev/null and b/donor/hb/HNAALaunch.tmd differ diff --git a/donor/mbr/KMAPF0000M_MBR.bin b/donor/mbr/KMAPF0000M_MBR.bin new file mode 100644 index 0000000..62d731e Binary files /dev/null and b/donor/mbr/KMAPF0000M_MBR.bin differ diff --git a/donor/mbr/NAND02GAH0LZC5r30_MBR.bin b/donor/mbr/NAND02GAH0LZC5r30_MBR.bin new file mode 100644 index 0000000..cda8f48 Binary files /dev/null and b/donor/mbr/NAND02GAH0LZC5r30_MBR.bin differ diff --git a/donor/pit.bin b/donor/pit.bin new file mode 100644 index 0000000..3b14323 Binary files /dev/null and b/donor/pit.bin differ diff --git a/donor/prod/cert.sys b/donor/prod/cert.sys new file mode 100755 index 0000000..d372daa Binary files /dev/null and b/donor/prod/cert.sys differ diff --git a/donor/prod/software/.4b.txt.kate-swp b/donor/prod/software/.4b.txt.kate-swp new file mode 100644 index 0000000..e69de29 diff --git a/donor/prod/software/43.txt b/donor/prod/software/43.txt new file mode 100644 index 0000000..8f038c5 --- /dev/null +++ b/donor/prod/software/43.txt @@ -0,0 +1,24 @@ +ticket/00030005/484e4943.tik +title/00030005/484e4943/content/title.tmd +title/00030005/484e4943/content/00000000.app +ticket/00030005/484e4443.tik +title/00030005/484e4443/content/title.tmd +title/00030005/484e4443/content/00000000.app +ticket/00030017/484e4143.tik +title/00030017/484e4143/content/title.tmd +title/00030017/484e4143/content/00000005.app +ticket/00030005/484e4543.tik +title/00030005/484e4543/content/title.tmd +title/00030005/484e4543/content/00000000.app +ticket/00030015/484e4243.tik +title/00030015/484e4243/content/title.tmd +title/00030015/484e4243/content/00000001.app +ticket/00030015/484e4643.tik +title/00030015/484e4643/content/title.tmd +title/00030015/484e4643/content/00000006.app +ticket/00030005/484e4b43.tik +title/00030005/484e4b43/content/title.tmd +title/00030005/484e4b43/content/00000000.app +ticket/0003000f/484e4c43.tik +title/0003000f/484e4c43/content/title.tmd +title/0003000f/484e4c43/content/00000006.app diff --git a/donor/prod/software/45.txt b/donor/prod/software/45.txt new file mode 100644 index 0000000..3961f31 --- /dev/null +++ b/donor/prod/software/45.txt @@ -0,0 +1,27 @@ +ticket/00030005/484e4945.tik +title/00030005/484e4945/content/title.tmd +title/00030005/484e4945/content/00000003.app +ticket/00030005/484e4441.tik +title/00030005/484e4441/content/title.tmd +title/00030005/484e4441/content/00000001.app +ticket/00030017/484e4145.tik +title/00030017/484e4145/content/title.tmd +title/00030017/484e4145/content/00000007.app +ticket/00030005/484e4a45.tik +title/00030005/484e4a45/content/title.tmd +title/00030005/484e4a45/content/00000003.app +ticket/00030005/484e4541.tik +title/00030005/484e4541/content/title.tmd +title/00030005/484e4541/content/00000000.app +ticket/00030015/484e4245.tik +title/00030015/484e4245/content/title.tmd +title/00030015/484e4245/content/00000003.app +ticket/00030015/484e4645.tik +title/00030015/484e4645/content/title.tmd +title/00030015/484e4645/content/00000009.app +ticket/00030005/484e4b45.tik +title/00030005/484e4b45/content/title.tmd +title/00030005/484e4b45/content/00000002.app +ticket/0003000f/484e4c45.tik +title/0003000f/484e4c45/content/title.tmd +title/0003000f/484e4c45/content/00000009.app diff --git a/donor/prod/software/4a.txt b/donor/prod/software/4a.txt new file mode 100644 index 0000000..ca7c508 --- /dev/null +++ b/donor/prod/software/4a.txt @@ -0,0 +1,27 @@ +ticket/00030005/484e494a.tik +title/00030005/484e494a/content/title.tmd +title/00030005/484e494a/content/00000003.app +ticket/00030005/484e4441.tik +title/00030005/484e4441/content/title.tmd +title/00030005/484e4441/content/00000001.app +ticket/00030017/484e414a.tik +title/00030017/484e414a/content/title.tmd +title/00030017/484e414a/content/00000007.app +ticket/00030005/484e4a4a.tik +title/00030005/484e4a4a/content/title.tmd +title/00030005/484e4a4a/content/00000003.app +ticket/00030005/484e4541.tik +title/00030005/484e4541/content/title.tmd +title/00030005/484e4541/content/00000000.app +ticket/00030015/484e424a.tik +title/00030015/484e424a/content/title.tmd +title/00030015/484e424a/content/00000003.app +ticket/00030015/484e464a.tik +title/00030015/484e464a/content/title.tmd +title/00030015/484e464a/content/00000009.app +ticket/00030005/484e4b4a.tik +title/00030005/484e4b4a/content/title.tmd +title/00030005/484e4b4a/content/00000002.app +ticket/0003000f/484e4c4a.tik +title/0003000f/484e4c4a/content/title.tmd +title/0003000f/484e4c4a/content/00000009.app diff --git a/donor/prod/software/4b.txt b/donor/prod/software/4b.txt new file mode 100644 index 0000000..5abca58 --- /dev/null +++ b/donor/prod/software/4b.txt @@ -0,0 +1,24 @@ +ticket/00030005/484e494b.tik +title/00030005/484e494b/content/title.tmd +title/00030005/484e494b/content/00000000.app +ticket/00030005/484e444b.tik +title/00030005/484e444b/content/title.tmd +title/00030005/484e444b/content/00000000.app +ticket/00030017/484e414b.tik +title/00030017/484e414b/content/title.tmd +title/00030017/484e414b/content/00000005.app +ticket/00030005/484e454b.tik +title/00030005/484e454b/content/title.tmd +title/00030005/484e454b/content/00000000.app +ticket/00030015/484e424b.tik +title/00030015/484e424b/content/title.tmd +title/00030015/484e424b/content/00000001.app +ticket/00030015/484e464b.tik +title/00030015/484e464b/content/title.tmd +title/00030015/484e464b/content/00000006.app +ticket/00030005/484e4b4b.tik +title/00030005/484e4b4b/content/title.tmd +title/00030005/484e4b4b/content/00000000.app +ticket/0003000f/484e4c4b.tik +title/0003000f/484e4c4b/content/title.tmd +title/0003000f/484e4c4b/content/00000006.app diff --git a/donor/prod/software/50.txt b/donor/prod/software/50.txt new file mode 100644 index 0000000..4645a60 --- /dev/null +++ b/donor/prod/software/50.txt @@ -0,0 +1,27 @@ +ticket/00030005/484e4950.tik +title/00030005/484e4950/content/title.tmd +title/00030005/484e4950/content/00000003.app +ticket/00030005/484e4441.tik +title/00030005/484e4441/content/title.tmd +title/00030005/484e4441/content/00000001.app +ticket/00030017/484e4150.tik +title/00030017/484e4150/content/title.tmd +title/00030017/484e4150/content/00000007.app +ticket/00030005/484e4a50.tik +title/00030005/484e4a50/content/title.tmd +title/00030005/484e4a50/content/00000003.app +ticket/00030005/484e4541.tik +title/00030005/484e4541/content/title.tmd +title/00030005/484e4541/content/00000000.app +ticket/00030015/484e4250.tik +title/00030015/484e4250/content/title.tmd +title/00030015/484e4250/content/00000003.app +ticket/00030015/484e4650.tik +title/00030015/484e4650/content/title.tmd +title/00030015/484e4650/content/00000009.app +ticket/00030005/484e4b50.tik +title/00030005/484e4b50/content/title.tmd +title/00030005/484e4b50/content/00000002.app +ticket/0003000f/484e4c50.tik +title/0003000f/484e4c50/content/title.tmd +title/0003000f/484e4c50/content/00000009.app diff --git a/donor/prod/software/55.txt b/donor/prod/software/55.txt new file mode 100644 index 0000000..7ee88f7 --- /dev/null +++ b/donor/prod/software/55.txt @@ -0,0 +1,27 @@ +ticket/00030005/484e4955.tik +title/00030005/484e4955/content/title.tmd +title/00030005/484e4955/content/00000003.app +ticket/00030005/484e4441.tik +title/00030005/484e4441/content/title.tmd +title/00030005/484e4441/content/00000001.app +ticket/00030017/484e4155.tik +title/00030017/484e4155/content/title.tmd +title/00030017/484e4155/content/00000007.app +ticket/00030005/484e4a55.tik +title/00030005/484e4a55/content/title.tmd +title/00030005/484e4a55/content/00000003.app +ticket/00030005/484e4541.tik +title/00030005/484e4541/content/title.tmd +title/00030005/484e4541/content/00000000.app +ticket/00030015/484e4255.tik +title/00030015/484e4255/content/title.tmd +title/00030015/484e4255/content/00000003.app +ticket/00030015/484e4655.tik +title/00030015/484e4655/content/title.tmd +title/00030015/484e4655/content/00000009.app +ticket/00030005/484e4b55.tik +title/00030005/484e4b55/content/title.tmd +title/00030005/484e4b55/content/00000002.app +ticket/0003000f/484e4c55.tik +title/0003000f/484e4c55/content/title.tmd +title/0003000f/484e4c55/content/00000009.app diff --git a/donor/prod/software/ALL.txt b/donor/prod/software/ALL.txt new file mode 100644 index 0000000..8534a84 --- /dev/null +++ b/donor/prod/software/ALL.txt @@ -0,0 +1,15 @@ +ticket/0003000f/484e4841.tik +title/0003000f/484e4841/content/title.tmd +title/0003000f/484e4841/content/00000006.app +ticket/00030017/484e4141.tik +title/00030017/484e4141/content/title.tmd +title/00030017/484e4141/content/00000000.app +ticket/00030015/484e4241.tik +title/00030015/484e4241/content/title.tmd +title/00030015/484e4241/content/00000000.app +ticket/0003000f/484e4c41.tik +title/0003000f/484e4c41/content/title.tmd +title/0003000f/484e4c41/content/00000000.app +ticket/0003000f/484e4341.tik +title/0003000f/484e4341/content/title.tmd +title/0003000f/484e4341/content/00000002.app diff --git a/donor/prod/software/ticket/00030005/484e4441.tik b/donor/prod/software/ticket/00030005/484e4441.tik new file mode 100644 index 0000000..511c0fe Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4441.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4443.tik b/donor/prod/software/ticket/00030005/484e4443.tik new file mode 100644 index 0000000..241855c Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4443.tik differ diff --git a/donor/prod/software/ticket/00030005/484e444b.tik b/donor/prod/software/ticket/00030005/484e444b.tik new file mode 100644 index 0000000..1487188 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e444b.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4541.tik b/donor/prod/software/ticket/00030005/484e4541.tik new file mode 100644 index 0000000..756d46e Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4541.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4543.tik b/donor/prod/software/ticket/00030005/484e4543.tik new file mode 100644 index 0000000..c9407a1 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4543.tik differ diff --git a/donor/prod/software/ticket/00030005/484e454b.tik b/donor/prod/software/ticket/00030005/484e454b.tik new file mode 100644 index 0000000..38ebe63 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e454b.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4943.tik b/donor/prod/software/ticket/00030005/484e4943.tik new file mode 100644 index 0000000..112ffbe Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4943.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4945.tik b/donor/prod/software/ticket/00030005/484e4945.tik new file mode 100644 index 0000000..59234b1 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4945.tik differ diff --git a/donor/prod/software/ticket/00030005/484e494a.tik b/donor/prod/software/ticket/00030005/484e494a.tik new file mode 100644 index 0000000..899be2c Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e494a.tik differ diff --git a/donor/prod/software/ticket/00030005/484e494b.tik b/donor/prod/software/ticket/00030005/484e494b.tik new file mode 100644 index 0000000..7837601 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e494b.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4950.tik b/donor/prod/software/ticket/00030005/484e4950.tik new file mode 100644 index 0000000..79edf7e Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4950.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4955.tik b/donor/prod/software/ticket/00030005/484e4955.tik new file mode 100644 index 0000000..79af408 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4955.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4a45.tik b/donor/prod/software/ticket/00030005/484e4a45.tik new file mode 100644 index 0000000..99a0619 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4a45.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4a4a.tik b/donor/prod/software/ticket/00030005/484e4a4a.tik new file mode 100644 index 0000000..9bae95f Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4a4a.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4a50.tik b/donor/prod/software/ticket/00030005/484e4a50.tik new file mode 100644 index 0000000..8344d2c Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4a50.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4a55.tik b/donor/prod/software/ticket/00030005/484e4a55.tik new file mode 100644 index 0000000..e80bf55 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4a55.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b43.tik b/donor/prod/software/ticket/00030005/484e4b43.tik new file mode 100644 index 0000000..fff8fc2 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b43.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b45.tik b/donor/prod/software/ticket/00030005/484e4b45.tik new file mode 100644 index 0000000..6bc6a12 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b45.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b4a.tik b/donor/prod/software/ticket/00030005/484e4b4a.tik new file mode 100644 index 0000000..919f570 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b4a.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b4b.tik b/donor/prod/software/ticket/00030005/484e4b4b.tik new file mode 100644 index 0000000..5c568ed Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b4b.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b50.tik b/donor/prod/software/ticket/00030005/484e4b50.tik new file mode 100644 index 0000000..74aa989 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b50.tik differ diff --git a/donor/prod/software/ticket/00030005/484e4b55.tik b/donor/prod/software/ticket/00030005/484e4b55.tik new file mode 100644 index 0000000..ab501e9 Binary files /dev/null and b/donor/prod/software/ticket/00030005/484e4b55.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4341.tik b/donor/prod/software/ticket/0003000f/484e4341.tik new file mode 100644 index 0000000..cd8add7 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4341.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4841.tik b/donor/prod/software/ticket/0003000f/484e4841.tik new file mode 100644 index 0000000..db4b38f Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4841.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c41.tik b/donor/prod/software/ticket/0003000f/484e4c41.tik new file mode 100644 index 0000000..8fd6398 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c41.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c43.tik b/donor/prod/software/ticket/0003000f/484e4c43.tik new file mode 100644 index 0000000..f709a61 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c43.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c45.tik b/donor/prod/software/ticket/0003000f/484e4c45.tik new file mode 100644 index 0000000..1f7ca8b Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c45.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c4a.tik b/donor/prod/software/ticket/0003000f/484e4c4a.tik new file mode 100644 index 0000000..596fbc4 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c4a.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c4b.tik b/donor/prod/software/ticket/0003000f/484e4c4b.tik new file mode 100644 index 0000000..5c8b76f Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c4b.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c50.tik b/donor/prod/software/ticket/0003000f/484e4c50.tik new file mode 100644 index 0000000..3767597 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c50.tik differ diff --git a/donor/prod/software/ticket/0003000f/484e4c55.tik b/donor/prod/software/ticket/0003000f/484e4c55.tik new file mode 100644 index 0000000..ef57a99 Binary files /dev/null and b/donor/prod/software/ticket/0003000f/484e4c55.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4241.tik b/donor/prod/software/ticket/00030015/484e4241.tik new file mode 100644 index 0000000..4918b71 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4241.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4243.tik b/donor/prod/software/ticket/00030015/484e4243.tik new file mode 100644 index 0000000..84ec463 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4243.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4245.tik b/donor/prod/software/ticket/00030015/484e4245.tik new file mode 100644 index 0000000..f480c0f Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4245.tik differ diff --git a/donor/prod/software/ticket/00030015/484e424a.tik b/donor/prod/software/ticket/00030015/484e424a.tik new file mode 100644 index 0000000..de5a6d7 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e424a.tik differ diff --git a/donor/prod/software/ticket/00030015/484e424b.tik b/donor/prod/software/ticket/00030015/484e424b.tik new file mode 100644 index 0000000..1f1ff93 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e424b.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4250.tik b/donor/prod/software/ticket/00030015/484e4250.tik new file mode 100644 index 0000000..6b1a9c5 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4250.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4255.tik b/donor/prod/software/ticket/00030015/484e4255.tik new file mode 100644 index 0000000..c65a960 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4255.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4643.tik b/donor/prod/software/ticket/00030015/484e4643.tik new file mode 100644 index 0000000..854a470 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4643.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4645.tik b/donor/prod/software/ticket/00030015/484e4645.tik new file mode 100644 index 0000000..e76ef78 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4645.tik differ diff --git a/donor/prod/software/ticket/00030015/484e464a.tik b/donor/prod/software/ticket/00030015/484e464a.tik new file mode 100644 index 0000000..329b2d0 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e464a.tik differ diff --git a/donor/prod/software/ticket/00030015/484e464b.tik b/donor/prod/software/ticket/00030015/484e464b.tik new file mode 100644 index 0000000..32ed97a Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e464b.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4650.tik b/donor/prod/software/ticket/00030015/484e4650.tik new file mode 100644 index 0000000..674de57 Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4650.tik differ diff --git a/donor/prod/software/ticket/00030015/484e4655.tik b/donor/prod/software/ticket/00030015/484e4655.tik new file mode 100644 index 0000000..b5ccc2f Binary files /dev/null and b/donor/prod/software/ticket/00030015/484e4655.tik differ diff --git a/donor/prod/software/ticket/00030017/484e4141.tik b/donor/prod/software/ticket/00030017/484e4141.tik new file mode 100644 index 0000000..c3ef76b Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e4141.tik differ diff --git a/donor/prod/software/ticket/00030017/484e4143.tik b/donor/prod/software/ticket/00030017/484e4143.tik new file mode 100644 index 0000000..50a83a6 Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e4143.tik differ diff --git a/donor/prod/software/ticket/00030017/484e4145.tik b/donor/prod/software/ticket/00030017/484e4145.tik new file mode 100644 index 0000000..10df6f9 Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e4145.tik differ diff --git a/donor/prod/software/ticket/00030017/484e414a.tik b/donor/prod/software/ticket/00030017/484e414a.tik new file mode 100644 index 0000000..f2b3a58 Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e414a.tik differ diff --git a/donor/prod/software/ticket/00030017/484e414b.tik b/donor/prod/software/ticket/00030017/484e414b.tik new file mode 100644 index 0000000..b6ab8e9 Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e414b.tik differ diff --git a/donor/prod/software/ticket/00030017/484e4150.tik b/donor/prod/software/ticket/00030017/484e4150.tik new file mode 100644 index 0000000..fbc7f88 Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e4150.tik differ diff --git a/donor/prod/software/ticket/00030017/484e4155.tik b/donor/prod/software/ticket/00030017/484e4155.tik new file mode 100644 index 0000000..3b3e7bf Binary files /dev/null and b/donor/prod/software/ticket/00030017/484e4155.tik differ diff --git a/donor/prod/software/title/00030005/484e4441/content/00000001.app b/donor/prod/software/title/00030005/484e4441/content/00000001.app new file mode 100644 index 0000000..8b85015 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4441/content/00000001.app differ diff --git a/donor/prod/software/title/00030005/484e4441/content/title.tmd b/donor/prod/software/title/00030005/484e4441/content/title.tmd new file mode 100644 index 0000000..a6904df Binary files /dev/null and b/donor/prod/software/title/00030005/484e4441/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4443/content/00000000.app b/donor/prod/software/title/00030005/484e4443/content/00000000.app new file mode 100644 index 0000000..2e362b9 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4443/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4443/content/title.tmd b/donor/prod/software/title/00030005/484e4443/content/title.tmd new file mode 100644 index 0000000..ac27406 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4443/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e444b/content/00000000.app b/donor/prod/software/title/00030005/484e444b/content/00000000.app new file mode 100644 index 0000000..e8ed4db Binary files /dev/null and b/donor/prod/software/title/00030005/484e444b/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e444b/content/title.tmd b/donor/prod/software/title/00030005/484e444b/content/title.tmd new file mode 100644 index 0000000..3278fa9 Binary files /dev/null and b/donor/prod/software/title/00030005/484e444b/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4541/content/00000000.app b/donor/prod/software/title/00030005/484e4541/content/00000000.app new file mode 100644 index 0000000..a4d9e3c Binary files /dev/null and b/donor/prod/software/title/00030005/484e4541/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4541/content/title.tmd b/donor/prod/software/title/00030005/484e4541/content/title.tmd new file mode 100644 index 0000000..a36f6c1 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4541/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4543/content/00000000.app b/donor/prod/software/title/00030005/484e4543/content/00000000.app new file mode 100644 index 0000000..b5274e8 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4543/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4543/content/title.tmd b/donor/prod/software/title/00030005/484e4543/content/title.tmd new file mode 100644 index 0000000..ce1fdbb Binary files /dev/null and b/donor/prod/software/title/00030005/484e4543/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e454b/content/00000000.app b/donor/prod/software/title/00030005/484e454b/content/00000000.app new file mode 100644 index 0000000..92037a8 Binary files /dev/null and b/donor/prod/software/title/00030005/484e454b/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e454b/content/title.tmd b/donor/prod/software/title/00030005/484e454b/content/title.tmd new file mode 100644 index 0000000..20b0f1e Binary files /dev/null and b/donor/prod/software/title/00030005/484e454b/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4943/content/00000000.app b/donor/prod/software/title/00030005/484e4943/content/00000000.app new file mode 100644 index 0000000..5eec86a Binary files /dev/null and b/donor/prod/software/title/00030005/484e4943/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4943/content/title.tmd b/donor/prod/software/title/00030005/484e4943/content/title.tmd new file mode 100644 index 0000000..99ec43a Binary files /dev/null and b/donor/prod/software/title/00030005/484e4943/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4945/content/00000003.app b/donor/prod/software/title/00030005/484e4945/content/00000003.app new file mode 100644 index 0000000..39bdf8c Binary files /dev/null and b/donor/prod/software/title/00030005/484e4945/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4945/content/title.tmd b/donor/prod/software/title/00030005/484e4945/content/title.tmd new file mode 100644 index 0000000..a2bdbac Binary files /dev/null and b/donor/prod/software/title/00030005/484e4945/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e494a/content/00000003.app b/donor/prod/software/title/00030005/484e494a/content/00000003.app new file mode 100644 index 0000000..ab098f7 Binary files /dev/null and b/donor/prod/software/title/00030005/484e494a/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e494a/content/title.tmd b/donor/prod/software/title/00030005/484e494a/content/title.tmd new file mode 100644 index 0000000..dd7b6bd Binary files /dev/null and b/donor/prod/software/title/00030005/484e494a/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e494b/content/00000000.app b/donor/prod/software/title/00030005/484e494b/content/00000000.app new file mode 100644 index 0000000..8b5440a Binary files /dev/null and b/donor/prod/software/title/00030005/484e494b/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e494b/content/title.tmd b/donor/prod/software/title/00030005/484e494b/content/title.tmd new file mode 100644 index 0000000..e3328f6 Binary files /dev/null and b/donor/prod/software/title/00030005/484e494b/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4950/content/00000003.app b/donor/prod/software/title/00030005/484e4950/content/00000003.app new file mode 100644 index 0000000..a9f5d0e Binary files /dev/null and b/donor/prod/software/title/00030005/484e4950/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4950/content/title.tmd b/donor/prod/software/title/00030005/484e4950/content/title.tmd new file mode 100644 index 0000000..650e269 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4950/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4955/content/00000003.app b/donor/prod/software/title/00030005/484e4955/content/00000003.app new file mode 100644 index 0000000..e51a7f8 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4955/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4955/content/title.tmd b/donor/prod/software/title/00030005/484e4955/content/title.tmd new file mode 100644 index 0000000..76ed727 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4955/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4a45/content/00000003.app b/donor/prod/software/title/00030005/484e4a45/content/00000003.app new file mode 100644 index 0000000..fc7bed6 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a45/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4a45/content/title.tmd b/donor/prod/software/title/00030005/484e4a45/content/title.tmd new file mode 100644 index 0000000..147be80 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a45/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4a4a/content/00000003.app b/donor/prod/software/title/00030005/484e4a4a/content/00000003.app new file mode 100644 index 0000000..6abbf6f Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a4a/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4a4a/content/title.tmd b/donor/prod/software/title/00030005/484e4a4a/content/title.tmd new file mode 100644 index 0000000..3f6a1b7 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a4a/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4a50/content/00000003.app b/donor/prod/software/title/00030005/484e4a50/content/00000003.app new file mode 100644 index 0000000..659acf1 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a50/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4a50/content/title.tmd b/donor/prod/software/title/00030005/484e4a50/content/title.tmd new file mode 100644 index 0000000..fee83fe Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a50/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4a55/content/00000003.app b/donor/prod/software/title/00030005/484e4a55/content/00000003.app new file mode 100644 index 0000000..487cc8b Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a55/content/00000003.app differ diff --git a/donor/prod/software/title/00030005/484e4a55/content/title.tmd b/donor/prod/software/title/00030005/484e4a55/content/title.tmd new file mode 100644 index 0000000..8a67da3 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4a55/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b43/content/00000000.app b/donor/prod/software/title/00030005/484e4b43/content/00000000.app new file mode 100644 index 0000000..486dbf2 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b43/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4b43/content/title.tmd b/donor/prod/software/title/00030005/484e4b43/content/title.tmd new file mode 100644 index 0000000..06754bf Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b43/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b45/content/00000002.app b/donor/prod/software/title/00030005/484e4b45/content/00000002.app new file mode 100644 index 0000000..3f90fd8 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b45/content/00000002.app differ diff --git a/donor/prod/software/title/00030005/484e4b45/content/title.tmd b/donor/prod/software/title/00030005/484e4b45/content/title.tmd new file mode 100644 index 0000000..e3bf9f7 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b45/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b4a/content/00000002.app b/donor/prod/software/title/00030005/484e4b4a/content/00000002.app new file mode 100644 index 0000000..19ab36f Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b4a/content/00000002.app differ diff --git a/donor/prod/software/title/00030005/484e4b4a/content/title.tmd b/donor/prod/software/title/00030005/484e4b4a/content/title.tmd new file mode 100644 index 0000000..00bf1ab Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b4a/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b4b/content/00000000.app b/donor/prod/software/title/00030005/484e4b4b/content/00000000.app new file mode 100644 index 0000000..72358a1 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b4b/content/00000000.app differ diff --git a/donor/prod/software/title/00030005/484e4b4b/content/title.tmd b/donor/prod/software/title/00030005/484e4b4b/content/title.tmd new file mode 100644 index 0000000..c3b3818 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b4b/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b50/content/00000002.app b/donor/prod/software/title/00030005/484e4b50/content/00000002.app new file mode 100644 index 0000000..4cb6d42 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b50/content/00000002.app differ diff --git a/donor/prod/software/title/00030005/484e4b50/content/title.tmd b/donor/prod/software/title/00030005/484e4b50/content/title.tmd new file mode 100644 index 0000000..ace5385 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b50/content/title.tmd differ diff --git a/donor/prod/software/title/00030005/484e4b55/content/00000002.app b/donor/prod/software/title/00030005/484e4b55/content/00000002.app new file mode 100644 index 0000000..0150d29 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b55/content/00000002.app differ diff --git a/donor/prod/software/title/00030005/484e4b55/content/title.tmd b/donor/prod/software/title/00030005/484e4b55/content/title.tmd new file mode 100644 index 0000000..bfd8806 Binary files /dev/null and b/donor/prod/software/title/00030005/484e4b55/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4341/content/00000002.app b/donor/prod/software/title/0003000f/484e4341/content/00000002.app new file mode 100644 index 0000000..d329e53 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4341/content/00000002.app differ diff --git a/donor/prod/software/title/0003000f/484e4341/content/title.tmd b/donor/prod/software/title/0003000f/484e4341/content/title.tmd new file mode 100644 index 0000000..4b2a0f1 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4341/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4841/content/00000006.app b/donor/prod/software/title/0003000f/484e4841/content/00000006.app new file mode 100644 index 0000000..0a0c320 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4841/content/00000006.app differ diff --git a/donor/prod/software/title/0003000f/484e4841/content/title.tmd b/donor/prod/software/title/0003000f/484e4841/content/title.tmd new file mode 100644 index 0000000..2e79a4c Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4841/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c41/content/00000000.app b/donor/prod/software/title/0003000f/484e4c41/content/00000000.app new file mode 100644 index 0000000..6aa0432 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c41/content/00000000.app differ diff --git a/donor/prod/software/title/0003000f/484e4c41/content/title.tmd b/donor/prod/software/title/0003000f/484e4c41/content/title.tmd new file mode 100644 index 0000000..3e9562d Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c41/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c43/content/00000006.app b/donor/prod/software/title/0003000f/484e4c43/content/00000006.app new file mode 100644 index 0000000..c4a2c90 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c43/content/00000006.app differ diff --git a/donor/prod/software/title/0003000f/484e4c43/content/title.tmd b/donor/prod/software/title/0003000f/484e4c43/content/title.tmd new file mode 100644 index 0000000..0339d42 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c43/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c45/content/00000009.app b/donor/prod/software/title/0003000f/484e4c45/content/00000009.app new file mode 100644 index 0000000..1e9fa6e Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c45/content/00000009.app differ diff --git a/donor/prod/software/title/0003000f/484e4c45/content/title.tmd b/donor/prod/software/title/0003000f/484e4c45/content/title.tmd new file mode 100644 index 0000000..7a9f255 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c45/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c4a/content/00000009.app b/donor/prod/software/title/0003000f/484e4c4a/content/00000009.app new file mode 100644 index 0000000..4028dff Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c4a/content/00000009.app differ diff --git a/donor/prod/software/title/0003000f/484e4c4a/content/title.tmd b/donor/prod/software/title/0003000f/484e4c4a/content/title.tmd new file mode 100644 index 0000000..56804e1 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c4a/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c4b/content/00000006.app b/donor/prod/software/title/0003000f/484e4c4b/content/00000006.app new file mode 100644 index 0000000..9c62629 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c4b/content/00000006.app differ diff --git a/donor/prod/software/title/0003000f/484e4c4b/content/title.tmd b/donor/prod/software/title/0003000f/484e4c4b/content/title.tmd new file mode 100644 index 0000000..a1836dd Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c4b/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c50/content/00000009.app b/donor/prod/software/title/0003000f/484e4c50/content/00000009.app new file mode 100644 index 0000000..d2fd3ba Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c50/content/00000009.app differ diff --git a/donor/prod/software/title/0003000f/484e4c50/content/title.tmd b/donor/prod/software/title/0003000f/484e4c50/content/title.tmd new file mode 100644 index 0000000..63c6667 Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c50/content/title.tmd differ diff --git a/donor/prod/software/title/0003000f/484e4c55/content/00000009.app b/donor/prod/software/title/0003000f/484e4c55/content/00000009.app new file mode 100644 index 0000000..8ad995e Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c55/content/00000009.app differ diff --git a/donor/prod/software/title/0003000f/484e4c55/content/title.tmd b/donor/prod/software/title/0003000f/484e4c55/content/title.tmd new file mode 100644 index 0000000..1d7578e Binary files /dev/null and b/donor/prod/software/title/0003000f/484e4c55/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4241/content/00000000.app b/donor/prod/software/title/00030015/484e4241/content/00000000.app new file mode 100644 index 0000000..711381a Binary files /dev/null and b/donor/prod/software/title/00030015/484e4241/content/00000000.app differ diff --git a/donor/prod/software/title/00030015/484e4241/content/title.tmd b/donor/prod/software/title/00030015/484e4241/content/title.tmd new file mode 100644 index 0000000..08e8481 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4241/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4243/content/00000001.app b/donor/prod/software/title/00030015/484e4243/content/00000001.app new file mode 100644 index 0000000..5b3f760 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4243/content/00000001.app differ diff --git a/donor/prod/software/title/00030015/484e4243/content/title.tmd b/donor/prod/software/title/00030015/484e4243/content/title.tmd new file mode 100644 index 0000000..5451e33 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4243/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4245/content/00000003.app b/donor/prod/software/title/00030015/484e4245/content/00000003.app new file mode 100644 index 0000000..46f2bfb Binary files /dev/null and b/donor/prod/software/title/00030015/484e4245/content/00000003.app differ diff --git a/donor/prod/software/title/00030015/484e4245/content/title.tmd b/donor/prod/software/title/00030015/484e4245/content/title.tmd new file mode 100644 index 0000000..2c9237c Binary files /dev/null and b/donor/prod/software/title/00030015/484e4245/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e424a/content/00000003.app b/donor/prod/software/title/00030015/484e424a/content/00000003.app new file mode 100644 index 0000000..5822ecc Binary files /dev/null and b/donor/prod/software/title/00030015/484e424a/content/00000003.app differ diff --git a/donor/prod/software/title/00030015/484e424a/content/title.tmd b/donor/prod/software/title/00030015/484e424a/content/title.tmd new file mode 100644 index 0000000..72c4547 Binary files /dev/null and b/donor/prod/software/title/00030015/484e424a/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e424b/content/00000001.app b/donor/prod/software/title/00030015/484e424b/content/00000001.app new file mode 100644 index 0000000..70a577e Binary files /dev/null and b/donor/prod/software/title/00030015/484e424b/content/00000001.app differ diff --git a/donor/prod/software/title/00030015/484e424b/content/title.tmd b/donor/prod/software/title/00030015/484e424b/content/title.tmd new file mode 100644 index 0000000..114216a Binary files /dev/null and b/donor/prod/software/title/00030015/484e424b/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4250/content/00000003.app b/donor/prod/software/title/00030015/484e4250/content/00000003.app new file mode 100644 index 0000000..3edf4d3 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4250/content/00000003.app differ diff --git a/donor/prod/software/title/00030015/484e4250/content/title.tmd b/donor/prod/software/title/00030015/484e4250/content/title.tmd new file mode 100644 index 0000000..b4dc2dd Binary files /dev/null and b/donor/prod/software/title/00030015/484e4250/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4255/content/00000003.app b/donor/prod/software/title/00030015/484e4255/content/00000003.app new file mode 100644 index 0000000..1b83d61 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4255/content/00000003.app differ diff --git a/donor/prod/software/title/00030015/484e4255/content/title.tmd b/donor/prod/software/title/00030015/484e4255/content/title.tmd new file mode 100644 index 0000000..3485e2d Binary files /dev/null and b/donor/prod/software/title/00030015/484e4255/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4643/content/00000006.app b/donor/prod/software/title/00030015/484e4643/content/00000006.app new file mode 100644 index 0000000..9e48be4 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4643/content/00000006.app differ diff --git a/donor/prod/software/title/00030015/484e4643/content/title.tmd b/donor/prod/software/title/00030015/484e4643/content/title.tmd new file mode 100644 index 0000000..cf43d31 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4643/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4645/content/00000009.app b/donor/prod/software/title/00030015/484e4645/content/00000009.app new file mode 100644 index 0000000..ef0b436 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4645/content/00000009.app differ diff --git a/donor/prod/software/title/00030015/484e4645/content/title.tmd b/donor/prod/software/title/00030015/484e4645/content/title.tmd new file mode 100644 index 0000000..c56ab15 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4645/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e464a/content/00000009.app b/donor/prod/software/title/00030015/484e464a/content/00000009.app new file mode 100644 index 0000000..bb5b548 Binary files /dev/null and b/donor/prod/software/title/00030015/484e464a/content/00000009.app differ diff --git a/donor/prod/software/title/00030015/484e464a/content/title.tmd b/donor/prod/software/title/00030015/484e464a/content/title.tmd new file mode 100644 index 0000000..7fbe9eb Binary files /dev/null and b/donor/prod/software/title/00030015/484e464a/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e464b/content/00000006.app b/donor/prod/software/title/00030015/484e464b/content/00000006.app new file mode 100644 index 0000000..ee96fb6 Binary files /dev/null and b/donor/prod/software/title/00030015/484e464b/content/00000006.app differ diff --git a/donor/prod/software/title/00030015/484e464b/content/title.tmd b/donor/prod/software/title/00030015/484e464b/content/title.tmd new file mode 100644 index 0000000..1709932 Binary files /dev/null and b/donor/prod/software/title/00030015/484e464b/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4650/content/00000009.app b/donor/prod/software/title/00030015/484e4650/content/00000009.app new file mode 100644 index 0000000..f8549ae Binary files /dev/null and b/donor/prod/software/title/00030015/484e4650/content/00000009.app differ diff --git a/donor/prod/software/title/00030015/484e4650/content/title.tmd b/donor/prod/software/title/00030015/484e4650/content/title.tmd new file mode 100644 index 0000000..20e8a1b Binary files /dev/null and b/donor/prod/software/title/00030015/484e4650/content/title.tmd differ diff --git a/donor/prod/software/title/00030015/484e4655/content/00000009.app b/donor/prod/software/title/00030015/484e4655/content/00000009.app new file mode 100644 index 0000000..bec8698 Binary files /dev/null and b/donor/prod/software/title/00030015/484e4655/content/00000009.app differ diff --git a/donor/prod/software/title/00030015/484e4655/content/title.tmd b/donor/prod/software/title/00030015/484e4655/content/title.tmd new file mode 100644 index 0000000..adb4bfb Binary files /dev/null and b/donor/prod/software/title/00030015/484e4655/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e4141/content/00000000.app b/donor/prod/software/title/00030017/484e4141/content/00000000.app new file mode 100644 index 0000000..a622eb8 Binary files /dev/null and b/donor/prod/software/title/00030017/484e4141/content/00000000.app differ diff --git a/donor/prod/software/title/00030017/484e4141/content/title.tmd b/donor/prod/software/title/00030017/484e4141/content/title.tmd new file mode 100644 index 0000000..6f435ae Binary files /dev/null and b/donor/prod/software/title/00030017/484e4141/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e4143/content/00000005.app b/donor/prod/software/title/00030017/484e4143/content/00000005.app new file mode 100644 index 0000000..2a942ef Binary files /dev/null and b/donor/prod/software/title/00030017/484e4143/content/00000005.app differ diff --git a/donor/prod/software/title/00030017/484e4143/content/title.tmd b/donor/prod/software/title/00030017/484e4143/content/title.tmd new file mode 100644 index 0000000..bc7ee8b Binary files /dev/null and b/donor/prod/software/title/00030017/484e4143/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e4145/content/00000007.app b/donor/prod/software/title/00030017/484e4145/content/00000007.app new file mode 100644 index 0000000..13d9b1d Binary files /dev/null and b/donor/prod/software/title/00030017/484e4145/content/00000007.app differ diff --git a/donor/prod/software/title/00030017/484e4145/content/title.tmd b/donor/prod/software/title/00030017/484e4145/content/title.tmd new file mode 100644 index 0000000..ad280f9 Binary files /dev/null and b/donor/prod/software/title/00030017/484e4145/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e414a/content/00000007.app b/donor/prod/software/title/00030017/484e414a/content/00000007.app new file mode 100644 index 0000000..e608cb1 Binary files /dev/null and b/donor/prod/software/title/00030017/484e414a/content/00000007.app differ diff --git a/donor/prod/software/title/00030017/484e414a/content/title.tmd b/donor/prod/software/title/00030017/484e414a/content/title.tmd new file mode 100644 index 0000000..7c8f104 Binary files /dev/null and b/donor/prod/software/title/00030017/484e414a/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e414b/content/00000005.app b/donor/prod/software/title/00030017/484e414b/content/00000005.app new file mode 100644 index 0000000..f66e112 Binary files /dev/null and b/donor/prod/software/title/00030017/484e414b/content/00000005.app differ diff --git a/donor/prod/software/title/00030017/484e414b/content/title.tmd b/donor/prod/software/title/00030017/484e414b/content/title.tmd new file mode 100644 index 0000000..7f0d5de Binary files /dev/null and b/donor/prod/software/title/00030017/484e414b/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e4150/content/00000007.app b/donor/prod/software/title/00030017/484e4150/content/00000007.app new file mode 100644 index 0000000..dd63c73 Binary files /dev/null and b/donor/prod/software/title/00030017/484e4150/content/00000007.app differ diff --git a/donor/prod/software/title/00030017/484e4150/content/title.tmd b/donor/prod/software/title/00030017/484e4150/content/title.tmd new file mode 100644 index 0000000..313c033 Binary files /dev/null and b/donor/prod/software/title/00030017/484e4150/content/title.tmd differ diff --git a/donor/prod/software/title/00030017/484e4155/content/00000007.app b/donor/prod/software/title/00030017/484e4155/content/00000007.app new file mode 100644 index 0000000..46c679a Binary files /dev/null and b/donor/prod/software/title/00030017/484e4155/content/00000007.app differ diff --git a/donor/prod/software/title/00030017/484e4155/content/title.tmd b/donor/prod/software/title/00030017/484e4155/content/title.tmd new file mode 100644 index 0000000..2e4c387 Binary files /dev/null and b/donor/prod/software/title/00030017/484e4155/content/title.tmd differ diff --git a/donor/prod/stage2/Stage2_SDMC_20080821-140258_prod.nand b/donor/prod/stage2/Stage2_SDMC_20080821-140258_prod.nand new file mode 100755 index 0000000..4964f7c Binary files /dev/null and b/donor/prod/stage2/Stage2_SDMC_20080821-140258_prod.nand differ diff --git a/donor/prod/stage2/Stage2_updated_prod.nand b/donor/prod/stage2/Stage2_updated_prod.nand new file mode 100755 index 0000000..0f70af9 Binary files /dev/null and b/donor/prod/stage2/Stage2_updated_prod.nand differ diff --git a/donor/prod/stage2/Stage2_v1935-7470_prod.nand b/donor/prod/stage2/Stage2_v1935-7470_prod.nand new file mode 100755 index 0000000..27550d8 Binary files /dev/null and b/donor/prod/stage2/Stage2_v1935-7470_prod.nand differ diff --git a/donor/prod/stage2/Stage2_v2262-8067_prod.nand b/donor/prod/stage2/Stage2_v2262-8067_prod.nand new file mode 100755 index 0000000..83e8c47 Binary files /dev/null and b/donor/prod/stage2/Stage2_v2262-8067_prod.nand differ diff --git a/donor/prod/stage2/Stage2_v2435-8325_prod.nand b/donor/prod/stage2/Stage2_v2435-8325_prod.nand new file mode 100755 index 0000000..6173aa7 Binary files /dev/null and b/donor/prod/stage2/Stage2_v2435-8325_prod.nand differ diff --git a/donor/prod/stage2/Stage2_v2665-9336_prod.nand b/donor/prod/stage2/Stage2_v2665-9336_prod.nand new file mode 100755 index 0000000..0f70af9 Binary files /dev/null and b/donor/prod/stage2/Stage2_v2665-9336_prod.nand differ diff --git a/donor/prod/stage2/Stage2_vNONE-NONE_X6_prod.nand b/donor/prod/stage2/Stage2_vNONE-NONE_X6_prod.nand new file mode 100755 index 0000000..3115812 Binary files /dev/null and b/donor/prod/stage2/Stage2_vNONE-NONE_X6_prod.nand differ diff --git a/donor/shared1/TWLCFG0.dat b/donor/shared1/TWLCFG0.dat new file mode 100644 index 0000000..3e1ad93 Binary files /dev/null and b/donor/shared1/TWLCFG0.dat differ diff --git a/donor/shared1/TWLCFG1.dat b/donor/shared1/TWLCFG1.dat new file mode 100644 index 0000000..3e1ad93 Binary files /dev/null and b/donor/shared1/TWLCFG1.dat differ diff --git a/donor/vbr/TWL_MAIN.bin b/donor/vbr/TWL_MAIN.bin new file mode 100644 index 0000000..4de4f79 Binary files /dev/null and b/donor/vbr/TWL_MAIN.bin differ diff --git a/donor/vbr/TWL_PHOTO.bin b/donor/vbr/TWL_PHOTO.bin new file mode 100644 index 0000000..84e0571 Binary files /dev/null and b/donor/vbr/TWL_PHOTO.bin differ diff --git a/donor/wrap.bin b/donor/wrap.bin new file mode 100644 index 0000000..7b0c64f Binary files /dev/null and b/donor/wrap.bin differ diff --git a/hwinfo.py b/hwinfo.py new file mode 100755 index 0000000..fc85558 --- /dev/null +++ b/hwinfo.py @@ -0,0 +1,80 @@ +import os, sys, struct, argparse, hashlib, hmac + +def readle(b): + return int.from_bytes(b, 'little') + +def readbe(b): + return int.from_bytes(b, 'big') + +def hextobytes(s): + return bytes.fromhex(s) + +# RSA keys, (retail, dev) +rsa_key_mod = (bytes.fromhex('BAF198A49F2E78F81DCBDCE57DB54FB77C6A158FA3F10DC19E1B95345CA6E714C93F44F04CD2D71F4E89EBEE2ED5BCFCA2E63F6B821D883C0098E5F67B7D217EDC77A1BBBD4C624D362BF2C6BE3D300E3ED3B8BE336047029E131D50C56EB67C195F968760915CAFDE38CA49F1D332DDA845D660FDCF4872E19CC5635488D5D7'), bytes.fromhex('E51CBFC7630B9DD166598D0F1AADB73A7DA8E94330B57017FF77A13E06F10856EBC63779DEC0CE485CBE81603D36FFBF9F97BFA43C98955C9CDA2BEB31BE72E3CAEBB2ECB0606A809446C6E0A47E52AD1A3F45906471B92020F7E7A3C9C85C9ECF5414F4B2921D61253631D81FC1FC009AC6EAE828F9CC73E738BF36F4A80FF9')) +rsa_key_priv = (None, bytes.fromhex('B57CC285E4F56CBC554116B62241FD64BDE9B16D620637972AECCEB35DB84D0CDD93949A5B538B9452B32DB4D888DAAA2677847D4AEAEB560381E74C55893163B4C5B95919A1CC46B571AFC176825BADB416B875BEF5A559CB3AE2C5784520F2C20674B151D94E904D2B7B85E481C30780A5941B239BAC7E5E8A16018B1EE569')) + +def verify(consoleID, hwinfo, dev): + h = hashlib.sha1() + h.update(consoleID) + hmac_key = h.digest() + + hm = hmac.new(key=hmac_key, digestmod=hashlib.sha1) + hm.update(hwinfo[0x88:0xA4]) + hmac_digest = hm.digest() + + dec = pow(readbe(hwinfo[:0x80]), 0x10001, readbe(rsa_key_mod[dev])).to_bytes(0x80, 'big') + + if dec[-20:] == hmac_digest: + print('Signature is valid') + else: + print('Signature is invalid') + +def resign(consoleID, hwinfo, dev): + if not dev: + print('Not supported for retail') + return + + h = hashlib.sha1() + h.update(consoleID) + hmac_key = h.digest() + + hm = hmac.new(key=hmac_key, digestmod=hashlib.sha1) + hm.update(hwinfo[0x88:0xA4]) + hmac_digest = hm.digest() + hmac_digest_padded = b'\x00\x01' + b'\xff' * 105 + b'\x00' + hmac_digest + + enc = pow(readbe(hmac_digest_padded), readbe(rsa_key_priv[dev]), readbe(rsa_key_mod[dev])).to_bytes(0x80, 'big') + enc += b'\x00' * (0x80 - len(enc)) + + out = 'HWINFO_S_resigned.dat' + with open(out, 'wb') as f: + f.write(enc) + f.write(hwinfo[0x80:]) + print(f'Wrote to {out}') + +parser = argparse.ArgumentParser() +parser.add_argument('--consoleid', required=True, + help='console id in hex') +parser.add_argument('--hwinfo', required=True, + help='path to the HWINFO_S.dat file') +parser.add_argument('mode', nargs=1, + help='verify or resign') +parser.add_argument('--dev', action='store_true', + help='use dev key') +args = parser.parse_args() +mode = args.mode[0] +if mode not in ['verify', 'resign']: + raise Exception('Invalid mode') +if args.dev: + dev = 1 +else: + dev = 0 + +consoleID = hextobytes(args.consoleid) +with open(args.hwinfo, 'rb') as f: + hwinfo = f.read() + +if mode == 'verify': + verify(consoleID, hwinfo, dev) +elif mode == 'resign': + resign(consoleID, hwinfo, dev) \ No newline at end of file diff --git a/makenand.sh b/makenand.sh new file mode 100755 index 0000000..a3859f9 --- /dev/null +++ b/makenand.sh @@ -0,0 +1,261 @@ +# makenand.sh + +# https://problemkaputt.de/gbatek.htm#dsisdmmcinternalnandlayout +# Overall eMMC Layout +# +# Offset Size Description +# 00000000h 200h PC-style MBR, encrypted with a per-console key +# 00000200h 200h Stage 2 Boot Info Block 1 (used) +# 00000400h 200h Stage 2 Boot Info Block 2 (unused, same as above) +# 00000600h 200h Stage 2 Boot Info Block 3 (unused, nonsense NAND offsets) +# 00000800h 26600h Stage 2 ARM9 Bootcode (encrypted with universal key) +# 00026E00h 27600h Stage 2 ARM7 Bootcode (encrypted with universal key) +# 0004E400h 400h Stage 2 Footer -- unknown format, but first 10 bytes +# are (unencrypted) build number of Stage 2 bootloader +# 0004E800h B1000h Unused (all 00h) +# 000FF800h 200h Unused (all 00h) (or No$gba Footer with CID & Console ID) +# 000FFA00h 400h Diagnostic area. (often contains build date of +# device in plaintext) Blank in never-before-booted +# DSi. Might be written to during firmware updates. +# 000FFE00h 200h Unused (all FFh) +# 00100000h EE00h Unused (all 00h) +# 0010EE00h CDF1200h 1st partition (205.9Mbyte) (main, encrypted, FAT16) +# 0CF00000h 9A00h Unused (all 00h) +# 0CF09A00h 20B6600h 2nd partition (32.7Mbyte) (photo, encrypted, FAT12) +# For 240.0MB chips (Samsung KMAPF0000M-S998 or KLM5617EFW-B301): +# 0EFC0000h BA00h Unused (all 00h) +# 0EFCBA00h 34600h 3rd partition (0.2Mbyte) (extra, unformatted) +# 0F000000h - End of 240MByte Address Space +# For 245.5MB chips (ST NAND02GAH0LZC5, both rev30 and rev31): +# 0EFC0000h B600h Unused (all 00h?) (smaller unused area as in 240MB chip) +# 0EFCB600h 5B4A00h 3rd partition (5.7Mbyte) (extra, unformatted) +# 0F580000h - End of 245.5MByte Address Space +# +# Making a new NAND is easy: +# +# - create blank TWL_MAIN +# - copy VBR +# - populate it with system files and firmware +# - create blank TWL_PHOTO +# - copy VBR +# - add the management file +# - create blank nand.bin +# - copy stage2 +# - copy MBR +# - copy in TWL_MAIN and TWL_PHOTO +# - encrypt the NAND +# +# HIIIIII VIKRINOX ENJOY MY SLOPPY SCRIPT! IT'S TERRIBLE! I'M SORRY! + +# mcopy doesn't make directories, this is my shortcut +makemdirs() { + local foldersonly=$(dirname $1) + local current="" + + IFS='/' read -ra PARTS <<< "$foldersonly" + for p in "${PARTS[@]}"; do + #echo "$p" + current="$current/$p" + if ! mdir "$2/$current" >/dev/null 2>&1; then + mmd "$2/$current" + fi + done +} + +rm -f twl_main.img +rm -f twl_photo.img +rm -f nand.bin +rm -r mount + +CONSOLE_SIGNING="$1" + +mkdir mount + +# Start by making a blank partition! +# We'll work on each partition as is, then copy them into a completed NAND. +# +# The "seek" value is the full size of the partition. +echo ">>> Working on TWL_MAIN" +dd if=/dev/zero of=twl_main.img bs=1 count=0 seek=$((0xCDF1200)) status=progress + +# Create TWL_MAIN VBR +# I just copied this from a random NAND. The VBR seems to be standard, and it seems good to keep things standard. I don't want to add the risk of errors from changing things. +dd if="./donor/vbr/TWL_MAIN.bin" of=twl_main.img bs=1 seek=0 count=$(stat -c%s "./donor/vbr/TWL_MAIN.bin") conv=notrunc status=progress +rm -f temp.bin + +# Just "mounting" the drive for writing. Not really mounting but whatever. +cat > mtoolsrc <>> Region not found! Setting as 'ALL'." + echo ">>> Factory firmware will be used." + REGION_CODE="ALL" +else + REGION_CODE=$(xxd -p -s 160 -l 1 "$2") + echo ">>> Region is $REGION_CODE" +fi + +# Make system folders +echo ">>> Making dirs" +mmd d:/sys +mmd d:/sys/log +mmd d:/shared1 +mmd d:/shared2 +mmd d:/shared2/launcher +mmd d:/ticket +mmd d:/title +mmd d:/tmp + +# Copy the font data +if [[ "$REGION_CODE" == "43" ]]; then + echo ">>> Copying CN FontTable" + mcopy ./donor/TWLFontTable_CN.dat "d:/sys/TWLFontTable.dat" +elif [[ "$MODEL" == "4b" ]]; then + echo ">>> Copying KR FontTable" + mcopy ./donor/TWLFontTable_KR.dat "d:/sys/TWLFontTable.dat" +else + echo ">>> Copying World FontTable" + mcopy ./donor/TWLFontTable.dat "d:/sys/TWLFontTable.dat" +fi + +# Copy other important files +echo ">>> Writing cert" +mcopy ./donor/$CONSOLE_SIGNING/cert.sys "d:/sys/cert.sys" +# MelonDS WILL NOT BOOT without these configs: +echo ">>> Writing configs" +mcopy ./donor/shared1/TWLCFG1.dat "d:/shared1/TWLCFG1.dat" +mcopy ./donor/shared1/TWLCFG0.dat "d:/shared1/TWLCFG0.dat" +mcopy ./donor/wrap.bin "d:/shared2/launcher/wrap.bin" +# Not sure if unique, still copying just because. +echo ">>> Writing HWInfo" +mcopy ./donor/HWINFO_N.dat "d:/sys/HWINFO_N.dat" + +# Now we'll install from a region specific title list. +# Each line contains a path like "title/000300xx/xxxxxxxx/file.ext" +while IFS= read -r FILE; do + echo ">>> Working on $FILE" + makemdirs "$FILE" "d:" + if [[ "$FILE" == *".tik" ]]; then + echo ">>> Writing ticket..." + ./twltool syscrypt --consoleid $3 --in "./donor/$CONSOLE_SIGNING/software/$FILE" --out "./tmp.tik" --encrypt + mcopy -D o "./tmp.tik" "d:/$FILE" + else + echo ">>> Moving title datas..." + # If the item is a title TMD, we will intentionally break it to trigger the backup unlaunch. + # This is only needed for region specific firmware. Since ALL/HNAA has the backup unlaunch as a TMD, it will automatically trigger. + if [[ "$FILE" == *"00030017"* ]] && [[ "$FILE" == *"title.tmd" ]]; then + cp "./donor/$CONSOLE_SIGNING/software/$FILE" "./tmp.tmd" + echo "47" | dd of="./tmp.tmd" bs=1 seek=400 conv=notrunc status=none + mcopy -D o "./tmd.tmd" "d:/$FILE" + else + mcopy -D o "./donor/$CONSOLE_SIGNING/software/$FILE" "d:/$FILE" + fi + fi +done < "./donor/$CONSOLE_SIGNING/software/$REGION_CODE.txt" +# Now we'll install the general title list (yes this is redundant code, I DON"T CARE IT'S 6AM!!!!!!!!!!!!!!) +# This contains things like the wifi firmware, and full factory firmware. +while IFS= read -r FILE; do + echo ">>> Working on $FILE" + makemdirs "$FILE" "d:" + if [[ "$FILE" == *".tik" ]]; then + echo ">>> Writing ticket..." + # Encrypt ticket to console. + ./twltool syscrypt --consoleid $3 --in "./donor/$CONSOLE_SIGNING/software/$FILE" --out "./tmp.tik" --encrypt + mcopy "./tmp.tik" "d:/$FILE" + else + echo ">>> Moving title datas..." + mcopy "./donor/$CONSOLE_SIGNING/software/$FILE" "d:/$FILE" + fi +done < "./donor/$CONSOLE_SIGNING/software/ALL.txt" + +# Create backup unlaunch for safety +makemdirs "title/00030017/484e4141/content/title.tmd" "d:" +mcopy -D o "./donor/hb/HNAALaunch.tmd" "d:/title/00030017/484e4141/content/title.tmd" + +nogba_consoleid=$(echo $3 | tac -rs .. | echo "$(tr -d '\n')") +if [[ "$CONSOLE_SIGNING" == "dev" ]]; then + HWINFO_STATUS=$(python hwinfo.py --consoleid $nogba_consoleid --hwinfo $2 --dev verify) +else + HWINFO_STATUS=$(python hwinfo.py --consoleid $nogba_consoleid --hwinfo $2 verify) +fi + +if [[ "$HWINFO_STATUS" == "Signature is invalid" ]] || [[ "$2" == "" ]]; then + echo ">>> HWInfo is bad! HNAA unlaunch will be needed." +else + echo ">>> HWInfo is good!" + mcopy "$2" "d:/sys/HWINFO_S.dat" +fi + +mdir -/ d:/ + +# Make blank photo partition, same idea as before +echo ">>> Working on TWL_PHOTO" +dd if=/dev/zero of=twl_photo.img bs=1 count=0 seek=$((0x20B6600)) status=progress + +# Create TWL_PHOTO VBR +dd if="./donor/vbr/TWL_PHOTO.bin" of=twl_photo.img bs=1 seek=0 count=$(stat -c%s "./donor/vbr/TWL_PHOTO.bin") conv=notrunc status=progress +rm -f temp.bin + +cat > mtoolsrc <>> Working on full NAND" +dd if=/dev/zero of=nand.bin bs=1 count=0 seek=$((0xF000040)) status=progress + +echo ">>> Installing bootloader (stage2)" +dd if="./donor/$CONSOLE_SIGNING/stage2/Stage2_v2435-8325_${CONSOLE_SIGNING}.nand" of=nand.bin bs=1 count=$(stat -c%s "./donor/$CONSOLE_SIGNING/stage2/Stage2_v2435-8325_${CONSOLE_SIGNING}.nand") conv=notrunc status=progress + +echo ">>> Writing NAND MBR" +NAND_BRAND=$(printf "%s" "$4" | xxd -r -p | xxd -p -s 14 -l 1) +if [[ "$NAND_BRAND" == "15" ]]; then + echo ">>> Looks like Samsung" + dd if="./donor/mbr/KMAPF0000M_MBR.bin" of=nand.bin bs=1 count=$(stat -c%s "./donor/mbr/KMAPF0000M_MBR.bin") skip=0 seek=0 conv=notrunc status=progress +elif [[ "$NAND_BRAND" == "fe" ]]; then + echo ">>> Looks like ST" + dd if="./donor/mbr/NAND02GAH0LZC5r30_MBR.bin" of=nand.bin bs=1 count=$(stat -c%s "./donor/mbr/NAND02GAH0LZC5r30_MBR.bin") skip=0 seek=0 conv=notrunc status=progress +fi +echo "$NAND_BRAND" + +# Offsets for both partitions are in the "seek" parameter (just ignore the /256) +echo ">>> Copying partitions into NAND" +dd if=twl_main.img of=nand.bin bs=256 count=$(( $(stat -c%s twl_main.img) / 512 )) skip=0 seek=$((0x10EE00 / 256)) conv=notrunc status=progress +dd if=twl_photo.img of=nand.bin bs=256 count=$(( $(stat -c%s twl_main.img) / 512 )) skip=0 seek=$((0xCF09A00 / 256)) conv=notrunc status=progress + +echo '>>> Writing NO$GBA footer' +echo "44536920654D4D43204349442F435055${4}${nogba_consoleid}000000000000000000000000000000000000000000000000" | xxd -r -p > temp.bin +dd if=temp.bin of=nand.bin bs=1 count=$(stat -c%s temp.bin) skip=0 seek=$((0xF000000)) conv=notrunc status=progress + +echo ">>> Encrypting NAND" +./twltool nandcrypt --consoleid $3 --cid $4 --in nand.bin --out nand_final.bin + +# Final notes: +# +# We need to stop negative compression. +# +# The work in progress NAND is zerofilled and decrypted. It will compress down to nothing. Great! +# However, when we encrypt it for "nand_final.bin", all those zerobytes will turn into encrypted data. +# The NAND will then compress to a crazy 239mb... not great. +# +# We'll turn those zerobytes into compressed data during processing. +# THEN we'll encrypt, turning everything back into compressable zeroes. +# +# This would look like: +# - Create zerofilled partition +# - Encrypt partition (keeping in mind the counter for AES-CTR when the partition is actually in the NAND) +# - Write VBRm and this time zerofill the file tables (encrypted data will otherwise cause errors) +# - Continue as normal diff --git a/twltool b/twltool new file mode 100755 index 0000000..3677bc7 Binary files /dev/null and b/twltool differ