mirror of
https://github.com/d0k3/GodMode9.git
synced 2025-06-26 13:42:47 +00:00
Fix #562
This commit is contained in:
parent
cfae228bcf
commit
da412226be
@ -173,14 +173,17 @@ u32 SetupSecretKey(u32 keynum) {
|
|||||||
if (keynum >= 0x200/0x10)
|
if (keynum >= 0x200/0x10)
|
||||||
return 1; // safety
|
return 1; // safety
|
||||||
|
|
||||||
// try to load full secret sector or key from file
|
// try to load full secret sector
|
||||||
if (!(got_keys & (0x1<<keynum))) {
|
if (!got_keys) {
|
||||||
ReadNandSectors(sector, 0x96, 1, 0x11, NAND_SYSNAND);
|
ReadNandSectors(sector, 0x96, 1, 0x11, NAND_SYSNAND);
|
||||||
if (ValidateSecretSector(sector) == 0) {
|
if (ValidateSecretSector(sector) == 0)
|
||||||
got_keys = 0xFFFFFFFF; // => got them all
|
got_keys = 0xFFFFFFFF; // => got them all
|
||||||
} else if ((keynum < 2) && (LoadKeyFromFile(key, 0x11, 'N', (keynum == 0) ? "95" : "96"))) {
|
}
|
||||||
got_keys |= (0x1<<keynum); // got at least this one
|
|
||||||
}
|
// try to load key from file
|
||||||
|
if (!(got_keys & (0x1<<keynum)) && (keynum < 2)) {
|
||||||
|
if (LoadKeyFromFile(key, 0x11, 'N', (keynum == 0) ? "95" : "96") == 0)
|
||||||
|
got_keys |= (0x1<<keynum); // got at least this key
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup the key
|
// setup the key
|
||||||
|
@ -1037,7 +1037,8 @@ u32 DecryptFirmFile(const char* orig, const char* dest) {
|
|||||||
void* firm_buffer = (void*) malloc(FIRM_MAX_SIZE);
|
void* firm_buffer = (void*) malloc(FIRM_MAX_SIZE);
|
||||||
if (!firm_buffer) return 1;
|
if (!firm_buffer) return 1;
|
||||||
|
|
||||||
// load the whole FIRM into memory & decrypt it
|
// load the whole FIRM into memory & decrypt it
|
||||||
|
ShowProgress(0, 2, dest);
|
||||||
u32 firm_size = fvx_qsize(orig);
|
u32 firm_size = fvx_qsize(orig);
|
||||||
if ((firm_size > FIRM_MAX_SIZE) || (fvx_qread(orig, firm_buffer, 0, firm_size, NULL) != FR_OK) ||
|
if ((firm_size > FIRM_MAX_SIZE) || (fvx_qread(orig, firm_buffer, 0, firm_size, NULL) != FR_OK) ||
|
||||||
(DecryptFirmFull(firm_buffer, firm_size) != 0)) {
|
(DecryptFirmFull(firm_buffer, firm_size) != 0)) {
|
||||||
@ -1050,11 +1051,13 @@ u32 DecryptFirmFile(const char* orig, const char* dest) {
|
|||||||
memcpy(firm->dec_magic, dec_magic, sizeof(dec_magic));
|
memcpy(firm->dec_magic, dec_magic, sizeof(dec_magic));
|
||||||
|
|
||||||
// write decrypted FIRM to the destination file
|
// write decrypted FIRM to the destination file
|
||||||
|
ShowProgress(1, 2, dest);
|
||||||
if (fvx_qwrite(dest, firm_buffer, 0, firm_size, NULL) != FR_OK) {
|
if (fvx_qwrite(dest, firm_buffer, 0, firm_size, NULL) != FR_OK) {
|
||||||
free(firm_buffer);
|
free(firm_buffer);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ShowProgress(2, 2, dest);
|
||||||
free(firm_buffer);
|
free(firm_buffer);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user