mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Remove support for legacy support paths
This commit is contained in:
parent
a18875ea35
commit
30774a09d9
@ -46,7 +46,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// input / output paths
|
// input / output paths
|
||||||
#define SUPPORT_PATHS "0:/gm9/support", "0:", "0:/files9" // legacy paths
|
#define SUPPORT_PATH "0:/gm9/support"
|
||||||
#define SCRIPT_PATH "0:/gm9/scripts"
|
#define SCRIPT_PATH "0:/gm9/scripts"
|
||||||
#define PAYLOAD_PATH "0:/gm9/payloads"
|
#define PAYLOAD_PATH "0:/gm9/payloads"
|
||||||
#define OUTPUT_PATH "0:/gm9/out"
|
#define OUTPUT_PATH "0:/gm9/out"
|
||||||
|
@ -128,15 +128,9 @@ u32 LoadKeyDb(const char* path_db, AesKeyInfo* keydb, u32 bsize) {
|
|||||||
if (fsize) memcpy(keydb, aeskeydb_bin, aeskeydb_bin_size);
|
if (fsize) memcpy(keydb, aeskeydb_bin, aeskeydb_bin_size);
|
||||||
#else
|
#else
|
||||||
// try to load aeskeydb.bin file
|
// try to load aeskeydb.bin file
|
||||||
const char* base[] = { SUPPORT_PATHS };
|
if (f_open(&fp, SUPPORT_PATH "/" KEYDB_NAME, FA_READ | FA_OPEN_EXISTING) == FR_OK) {
|
||||||
for (u32 i = 0; i < (sizeof(base)/sizeof(char*)); i++) {
|
if ((f_read(&fp, keydb, bsize, &fsize) != FR_OK) || (fsize >= bsize)) fsize = 0;
|
||||||
char path[64];
|
f_close(&fp);
|
||||||
snprintf(path, 64, "%s/%s", base[i], KEYDB_NAME);
|
|
||||||
if (f_open(&fp, path, FA_READ | FA_OPEN_EXISTING) == FR_OK) {
|
|
||||||
if ((f_read(&fp, keydb, bsize, &fsize) != FR_OK) || (fsize >= bsize)) fsize = 0;
|
|
||||||
f_close(&fp);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -149,7 +143,6 @@ u32 LoadKeyDb(const char* path_db, AesKeyInfo* keydb, u32 bsize) {
|
|||||||
|
|
||||||
u32 LoadKeyFromFile(void* key, u32 keyslot, char type, char* id)
|
u32 LoadKeyFromFile(void* key, u32 keyslot, char type, char* id)
|
||||||
{
|
{
|
||||||
const char* base[] = { SUPPORT_PATHS };
|
|
||||||
u8 keystore[16] __attribute__((aligned(32))) = {0};
|
u8 keystore[16] __attribute__((aligned(32))) = {0};
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
@ -181,15 +174,13 @@ u32 LoadKeyFromFile(void* key, u32 keyslot, char type, char* id)
|
|||||||
|
|
||||||
// load legacy slot0x??Key?.bin file instead
|
// load legacy slot0x??Key?.bin file instead
|
||||||
if (!found && (type != 'I')) {
|
if (!found && (type != 'I')) {
|
||||||
for (u32 i = 0; !found && (i < (sizeof(base)/sizeof(char*))); i++) {
|
char path[64];
|
||||||
FIL fp;
|
FIL fp;
|
||||||
char path[64];
|
UINT btr;
|
||||||
UINT btr;
|
snprintf(path, 64, "%s/slot0x%02lXKey%s%s.bin", SUPPORT_PATH, keyslot,
|
||||||
snprintf(path, 64, "%s/slot0x%02lXKey%s%s.bin", base[i], keyslot,
|
(type == 'X') ? "X" : (type == 'Y') ? "Y" : (type == 'I') ? "IV" : "", (id) ? id : "");
|
||||||
(type == 'X') ? "X" : (type == 'Y') ? "Y" : (type == 'I') ? "IV" : "", (id) ? id : "");
|
if (f_open(&fp, path, FA_READ | FA_OPEN_EXISTING) == FR_OK) {
|
||||||
if (f_open(&fp, path, FA_READ | FA_OPEN_EXISTING) != FR_OK) continue;
|
found = ((f_read(&fp, key, 16, &btr) == FR_OK) && (btr == 16));
|
||||||
if ((f_read(&fp, key, 16, &btr) == FR_OK) && (btr == 16))
|
|
||||||
found = true;
|
|
||||||
f_close(&fp);
|
f_close(&fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,26 +108,22 @@ u32 GetNcchSeed(u8* seed, NcchHeader* ncch) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// not found -> try seeddb.bin
|
// not found -> try seeddb.bin
|
||||||
const char* base[] = { SUPPORT_PATHS };
|
if (f_open(&file, SUPPORT_PATH "/" SEEDDB_NAME, FA_READ | FA_OPEN_EXISTING) == FR_OK) {
|
||||||
for (u32 i = 0; i < (sizeof(base)/sizeof(char*)); i++) {
|
|
||||||
SeedInfo* seeddb = (SeedInfo*) (TEMP_BUFFER + (TEMP_BUFFER_SIZE/2));
|
SeedInfo* seeddb = (SeedInfo*) (TEMP_BUFFER + (TEMP_BUFFER_SIZE/2));
|
||||||
snprintf(path, 128, "%s/%s", base[i], SEEDDB_NAME);
|
|
||||||
if (f_open(&file, path, FA_READ | FA_OPEN_EXISTING) != FR_OK)
|
|
||||||
continue;
|
|
||||||
f_read(&file, seeddb, TEMP_BUFFER_SIZE / 2, &btr);
|
f_read(&file, seeddb, TEMP_BUFFER_SIZE / 2, &btr);
|
||||||
f_close(&file);
|
f_close(&file);
|
||||||
if (seeddb->n_entries > (btr - 16) / 32)
|
if (seeddb->n_entries <= (btr - 16) / 32) { // check filesize / seeddb size
|
||||||
continue; // filesize / seeddb size mismatch
|
for (u32 s = 0; s < seeddb->n_entries; s++) {
|
||||||
for (u32 s = 0; s < seeddb->n_entries; s++) {
|
if (titleId != seeddb->entries[s].titleId)
|
||||||
if (titleId != seeddb->entries[s].titleId)
|
continue;
|
||||||
continue;
|
memcpy(lseed, seeddb->entries[s].seed, 16);
|
||||||
memcpy(lseed, seeddb->entries[s].seed, 16);
|
sha_quick(sha256sum, lseed, 16 + 8, SHA256_MODE);
|
||||||
sha_quick(sha256sum, lseed, 16 + 8, SHA256_MODE);
|
if (hash_seed == sha256sum[0]) {
|
||||||
if (hash_seed == sha256sum[0]) {
|
memcpy(seed, lseed, 16);
|
||||||
memcpy(seed, lseed, 16);
|
return 0; // found!
|
||||||
return 0; // found!
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// out of options -> failed!
|
// out of options -> failed!
|
||||||
|
@ -105,31 +105,27 @@ u32 FindTitleKey(Ticket* ticket, u8* title_id) {
|
|||||||
// search for a titlekey inside encTitleKeys.bin / decTitleKeys.bin
|
// search for a titlekey inside encTitleKeys.bin / decTitleKeys.bin
|
||||||
// when found, add it to the ticket
|
// when found, add it to the ticket
|
||||||
for (u32 enc = 0; (enc <= 1) && !found; enc++) {
|
for (u32 enc = 0; (enc <= 1) && !found; enc++) {
|
||||||
const char* base[] = { SUPPORT_PATHS };
|
TitleKeysInfo* tikdb = (TitleKeysInfo*) (TEMP_BUFFER + (TEMP_BUFFER_SIZE/2));
|
||||||
for (u32 i = 0; (i < (sizeof(base)/sizeof(char*))) && !found; i++) {
|
const char* path = (enc) ? SUPPORT_PATH "/" TIKDB_NAME_ENC : SUPPORT_PATH "/" TIKDB_NAME_DEC;
|
||||||
TitleKeysInfo* tikdb = (TitleKeysInfo*) (TEMP_BUFFER + (TEMP_BUFFER_SIZE/2));
|
FIL file;
|
||||||
char path[64];
|
UINT btr;
|
||||||
FIL file;
|
|
||||||
UINT btr;
|
if (f_open(&file, path, FA_READ | FA_OPEN_EXISTING) != FR_OK)
|
||||||
|
continue;
|
||||||
snprintf(path, 64, "%s/%s", base[i], (enc) ? TIKDB_NAME_ENC : TIKDB_NAME_DEC);
|
f_read(&file, tikdb, TEMP_BUFFER_SIZE / 2, &btr);
|
||||||
if (f_open(&file, path, FA_READ | FA_OPEN_EXISTING) != FR_OK)
|
f_close(&file);
|
||||||
|
if (tikdb->n_entries > (btr - 16) / 32)
|
||||||
|
continue; // filesize / titlekey db size mismatch
|
||||||
|
for (u32 t = 0; t < tikdb->n_entries; t++) {
|
||||||
|
TitleKeyEntry* tik = tikdb->entries + t;
|
||||||
|
if (memcmp(title_id, tik->title_id, 8) != 0)
|
||||||
continue;
|
continue;
|
||||||
f_read(&file, tikdb, TEMP_BUFFER_SIZE / 2, &btr);
|
if (!enc && (CryptTitleKey(tik, true, TICKET_DEVKIT(ticket)) != 0)) // encrypt the key first
|
||||||
f_close(&file);
|
continue;
|
||||||
if (tikdb->n_entries > (btr - 16) / 32)
|
memcpy(ticket->titlekey, tik->titlekey, 16);
|
||||||
continue; // filesize / titlekey db size mismatch
|
ticket->commonkey_idx = tik->commonkey_idx;
|
||||||
for (u32 t = 0; t < tikdb->n_entries; t++) {
|
found = true; // found, inserted
|
||||||
TitleKeyEntry* tik = tikdb->entries + t;
|
break;
|
||||||
if (memcmp(title_id, tik->title_id, 8) != 0)
|
|
||||||
continue;
|
|
||||||
if (!enc && (CryptTitleKey(tik, true, TICKET_DEVKIT(ticket)) != 0)) // encrypt the key first
|
|
||||||
continue;
|
|
||||||
memcpy(ticket->titlekey, tik->titlekey, 16);
|
|
||||||
ticket->commonkey_idx = tik->commonkey_idx;
|
|
||||||
found = true; // found, inserted
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user