1
0
Fork 0
mirror of https://github.com/Scandal-UK/Incognito_RCM.git synced 2024-11-25 21:32:28 +00:00

formatting

This commit is contained in:
jimzrt 2019-10-07 20:11:26 +02:00
parent e7a4f341d9
commit eb1b27366e

View file

@ -49,7 +49,7 @@
#define RETRY(exp) \ #define RETRY(exp) \
({ \ ({ \
u8 _attemptc_ = RETRY_COUNT; \ u8 _attemptc_ = RETRY_COUNT; \
bool _resultb_ = false; \ bool _resultb_ = false; \
while (_attemptc_--) \ while (_attemptc_--) \
{ \ { \
if ((_resultb_ = exp)) \ if ((_resultb_ = exp)) \
@ -71,7 +71,6 @@ sdmmc_t sdmmc;
emmc_part_t *system_part; emmc_part_t *system_part;
emmc_part_t *prodinfo_part; emmc_part_t *prodinfo_part;
#define SECTORS_IN_CLUSTER 32 #define SECTORS_IN_CLUSTER 32
#define PRODINFO_SIZE 0x3FBC00 #define PRODINFO_SIZE 0x3FBC00
@ -287,17 +286,20 @@ bool dump_keys()
se_aes_key_set(8, bis_key[0] + 0x00, 0x10); se_aes_key_set(8, bis_key[0] + 0x00, 0x10);
se_aes_key_set(9, bis_key[0] + 0x10, 0x10); se_aes_key_set(9, bis_key[0] + 0x10, 0x10);
gfx_printf("%kGot keys!\n%kValidate...", COLOR_GREEN,COLOR_YELLOW); gfx_printf("%kGot keys!\n%kValidate...", COLOR_GREEN, COLOR_YELLOW);
const char magic[4] = "CAL0"; const char magic[4] = "CAL0";
char buffer[4]; char buffer[4];
readData((u8 *)buffer, 0, 4, NULL); readData((u8 *)buffer, 0, 4, NULL);
if(memcmp(magic, buffer, 4) == 0){ if (memcmp(magic, buffer, 4) == 0)
{
gfx_printf("%kOK!\n", COLOR_GREEN); gfx_printf("%kOK!\n", COLOR_GREEN);
} else { }
else
{
gfx_printf("%kError!\n", COLOR_RED); gfx_printf("%kError!\n", COLOR_RED);
return false; return false;
} }
char serial[15] = ""; char serial[15] = "";
readData((u8 *)serial, 0x250, 14, NULL); readData((u8 *)serial, 0x250, 14, NULL);
@ -343,43 +345,42 @@ bool incognito()
gfx_printf("%kWriting junk serial...\n", COLOR_YELLOW); gfx_printf("%kWriting junk serial...\n", COLOR_YELLOW);
if (!writeSerial()) if (!writeSerial())
return false; return false;
gfx_printf("%kErasing client cert...\n", COLOR_YELLOW); gfx_printf("%kErasing client cert...\n", COLOR_YELLOW);
if (!erase(0x0AE0, 0x800)) // client cert if (!erase(0x0AE0, 0x800)) // client cert
return false; return false;
gfx_printf("%kErasing private key...\n", COLOR_YELLOW); gfx_printf("%kErasing private key...\n", COLOR_YELLOW);
if (!erase(0x3AE0, 0x130)) // private key if (!erase(0x3AE0, 0x130)) // private key
return false; return false;
gfx_printf("%kErasing deviceId 1/2...\n", COLOR_YELLOW); gfx_printf("%kErasing deviceId 1/2...\n", COLOR_YELLOW);
if (!erase(0x35E1, 0x006)) // deviceId if (!erase(0x35E1, 0x006)) // deviceId
return false; return false;
gfx_printf("%kErasing deviceId 2/2...\n", COLOR_YELLOW); gfx_printf("%kErasing deviceId 2/2...\n", COLOR_YELLOW);
if (!erase(0x36E1, 0x006)) // deviceId if (!erase(0x36E1, 0x006)) // deviceId
return false; return false;
gfx_printf("%kErasing device cert 1/2...\n", COLOR_YELLOW); gfx_printf("%kErasing device cert 1/2...\n", COLOR_YELLOW);
if (!erase(0x02B0, 0x180)) // device cert if (!erase(0x02B0, 0x180)) // device cert
return false; return false;
gfx_printf("%kErasing device cert 2/2...\n", COLOR_YELLOW); gfx_printf("%kErasing device cert 2/2...\n", COLOR_YELLOW);
if (!erase(0x3D70, 0x240)) // device cert if (!erase(0x3D70, 0x240)) // device cert
return false; return false;
gfx_printf("%kErasing device key...\n", COLOR_YELLOW); gfx_printf("%kErasing device key...\n", COLOR_YELLOW);
if (!erase(0x3FC0, 0x240)) // device key if (!erase(0x3FC0, 0x240)) // device key
return false; return false;
gfx_printf("%kWriting client cert hash...\n", COLOR_YELLOW); gfx_printf("%kWriting client cert hash...\n", COLOR_YELLOW);
if (!writeClientCertHash()) if (!writeClientCertHash())
return false; return false;
gfx_printf("%kWriting CAL0 hash...\n", COLOR_YELLOW); gfx_printf("%kWriting CAL0 hash...\n", COLOR_YELLOW);
if (!writeCal0Hash()) if (!writeCal0Hash())
return false; return false;
gfx_printf("\n%kIncognito done!\n", COLOR_GREEN); gfx_printf("\n%kIncognito done!\n", COLOR_GREEN);
return true; return true;
@ -630,10 +631,13 @@ bool verifyHash(u32 hashOffset, u32 offset, u32 sz, u8 *blob)
{ {
bool result = false; bool result = false;
u8 *buffer = (u8 *)malloc(sz); u8 *buffer = (u8 *)malloc(sz);
if(blob == NULL){ if (blob == NULL)
if(!readData(buffer, offset, sz, NULL)) {
if (!readData(buffer, offset, sz, NULL))
goto out; goto out;
} else { }
else
{
memcpy(buffer, blob + offset, sz); memcpy(buffer, blob + offset, sz);
} }
u8 hash1[0x20]; u8 hash1[0x20];
@ -641,10 +645,13 @@ bool verifyHash(u32 hashOffset, u32 offset, u32 sz, u8 *blob)
u8 hash2[0x20]; u8 hash2[0x20];
if(blob == NULL){ if (blob == NULL)
if(!readData(hash2, hashOffset, 0x20, NULL)) {
if (!readData(hash2, hashOffset, 0x20, NULL))
goto out; goto out;
} else { }
else
{
memcpy(hash2, blob + hashOffset, 0x20); memcpy(hash2, blob + hashOffset, 0x20);
} }
@ -665,7 +672,8 @@ out:
s32 getClientCertSize() s32 getClientCertSize()
{ {
s32 buffer; s32 buffer;
if(!RETRY(readData((u8 *)&buffer, 0x0AD0, sizeof(buffer), NULL))){ if (!RETRY(readData((u8 *)&buffer, 0x0AD0, sizeof(buffer), NULL)))
{
return -1; return -1;
} }
return buffer; return buffer;
@ -674,25 +682,26 @@ s32 getClientCertSize()
s32 getCalibrationDataSize() s32 getCalibrationDataSize()
{ {
s32 buffer; s32 buffer;
if(!RETRY(readData((u8 *)&buffer, 0x08, sizeof(buffer), NULL))){ if (!RETRY(readData((u8 *)&buffer, 0x08, sizeof(buffer), NULL)))
{
return -1; return -1;
} }
return buffer; return buffer;
} }
bool writeCal0Hash() bool writeCal0Hash()
{ {
s32 calibrationSize = getCalibrationDataSize(); s32 calibrationSize = getCalibrationDataSize();
if(calibrationSize == -1) if (calibrationSize == -1)
return false; return false;
return writeHash(0x20, 0x40, calibrationSize); return writeHash(0x20, 0x40, calibrationSize);
} }
bool writeClientCertHash() bool writeClientCertHash()
{ {
s32 certSize = getClientCertSize(); s32 certSize = getClientCertSize();
if(certSize == -1) if (certSize == -1)
return false; return false;
return writeHash(0x12E0, 0xAE0, certSize); return writeHash(0x12E0, 0xAE0, certSize);
@ -701,7 +710,7 @@ bool writeClientCertHash()
bool verifyCal0Hash(u8 *blob) bool verifyCal0Hash(u8 *blob)
{ {
s32 calibrationSize = getCalibrationDataSize(); s32 calibrationSize = getCalibrationDataSize();
if(calibrationSize == -1) if (calibrationSize == -1)
return false; return false;
return verifyHash(0x20, 0x40, calibrationSize, blob); return verifyHash(0x20, 0x40, calibrationSize, blob);
@ -709,8 +718,8 @@ bool verifyCal0Hash(u8 *blob)
bool verifyClientCertHash(u8 *blob) bool verifyClientCertHash(u8 *blob)
{ {
s32 certSize = getClientCertSize(); s32 certSize = getClientCertSize();
if(certSize == -1) if (certSize == -1)
return false; return false;
return verifyHash(0x12E0, 0xAE0, certSize, blob); return verifyHash(0x12E0, 0xAE0, certSize, blob);
@ -723,12 +732,15 @@ bool verifyProdinfo(u8 *blob)
if (verifyClientCertHash(blob) && verifyCal0Hash(blob)) if (verifyClientCertHash(blob) && verifyCal0Hash(blob))
{ {
char serial[15] = ""; char serial[15] = "";
if(blob == NULL){ if (blob == NULL)
{
readData((u8 *)serial, 0x250, 14, NULL); readData((u8 *)serial, 0x250, 14, NULL);
} else { }
else
{
memcpy(serial, blob + 0x250, 14); memcpy(serial, blob + 0x250, 14);
} }
gfx_printf("%kVerification successful!\n%kSerial:%s\n", COLOR_GREEN, COLOR_BLUE, serial); gfx_printf("%kVerification successful!\n%kSerial:%s\n", COLOR_GREEN, COLOR_BLUE, serial);
return true; return true;
} }
@ -853,7 +865,8 @@ bool backupProdinfo()
gfx_printf("\n%kError reading from NAND!\n", COLOR_RED); gfx_printf("\n%kError reading from NAND!\n", COLOR_RED);
goto out; goto out;
} }
if(!verifyProdinfo(bufferNX)){ if (!verifyProdinfo(bufferNX))
{
goto out; goto out;
} }
gfx_printf("%k\nWriting to file...\n", COLOR_YELLOW); gfx_printf("%k\nWriting to file...\n", COLOR_YELLOW);
@ -889,7 +902,7 @@ bool restoreProdinfo()
{ {
name = BACKUP_NAME_EMUNAND; name = BACKUP_NAME_EMUNAND;
} }
gfx_printf("%kRestoring from %s...\n", COLOR_YELLOW, name); gfx_printf("%kRestoring from %s...\n", COLOR_YELLOW, name);
FIL fp; FIL fp;
@ -907,7 +920,8 @@ bool restoreProdinfo()
gfx_printf("\n%kError reading from file!\n", COLOR_RED); gfx_printf("\n%kError reading from file!\n", COLOR_RED);
goto out; goto out;
} }
if(!verifyProdinfo(bufferNX)){ if (!verifyProdinfo(bufferNX))
{
goto out; goto out;
} }
gfx_printf("%kWriting to NAND...\n", COLOR_YELLOW); gfx_printf("%kWriting to NAND...\n", COLOR_YELLOW);