1
0
Fork 0
mirror of https://github.com/suchmememanyskill/TegraExplorer.git synced 2024-09-16 20:13:24 +01:00
TegraExplorer/source/keys/nca.c
suchmememanyskill 513bd804b1 Add fw dumping
- also fatfs is stupid
- also close files properly on a failed copy
- also check for errors during folder readouts
- also make sure holding vol- doesn't dump the keys anyway
2020-12-28 02:29:58 +01:00

31 lines
752 B
C

#include "nca.h"
#include "keys.h"
#include <libs/fatfs/ff.h>
#include <sec/se.h>
#include <mem/heap.h>
// Thanks switchbrew https://switchbrew.org/wiki/NCA_Format
// This function is hacky, should change it but am lazy
int GetNcaType(char *path){
FIL fp;
u32 read_bytes = 0;
if (f_open(&fp, path, FA_READ | FA_OPEN_EXISTING))
return -1;
u8 *dec_header = (u8*)malloc(0x400);
if (f_lseek(&fp, 0x200) || f_read(&fp, dec_header, 32, &read_bytes) || read_bytes != 32){
f_close(&fp);
free(dec_header);
return -1;
}
se_aes_xts_crypt(7,6,0,1, dec_header + 0x200, dec_header, 32, 1);
u8 ContentType = dec_header[0x205];
f_close(&fp);
free(dec_header);
return ContentType;
}