Talk:Nintendo DS Cart Whitelist

From DSiBrew
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

C representations

typedef struct {
	char ID[4];	// An ID
	unsigned char pad[0x80];
	unsigned long number;	// number of titles
} sHNHA_Header;

typedef struct {
	char TID[4];	// Title ID
	unsigned long ver;	// Title version
	unsigned char SHA[2][20];	// the two SHA-1 sums
} sHNHA_Title;

typedef struct {
	unsigned char pad[0x18];
} sHNHA_Footer;

--Ludo6431 19:59, 5 August 2009 (UTC)

C dumper

void myprint(char *format, unsigned char *data, size_t datasize) {
	while(datasize--)
		printf(format, (unsigned char)*data++);
}

int main(int argc, char *argv[]) {
	if(argc!=2) exit(1);

	FILE *fd=fopen(argv[1], "rb");
	if(!fd) exit(1);

	sHNHA_Header header;
	sHNHA_Title title;
	sHNHA_Footer footer;

	fread(&header, 1, 0x88, fd);	// read the header
	printf("\nnumber of titles : %d", header.number);

	size_t count=header.number;
	while(count--) {		// read each title
		fread(&title, 1, sizeof(sHNHA_Title), fd);

		printf("\nTID=");
		myprint("%c", title.TID, 4);
		printf("\nver=%d", title.version);
		printf("\nSHA=");
		myprint("%02X", title.SHA[0], 20);
		printf("\nSHA=");
		myprint("%02X", title.SHA[1], 20);
	}

	fread(&footer, 1, sizeof(sHNHA_Footer), fd);	// read the footer

	if(fgetc(fd)!=EOF) printf("error");

	fclose(fd);
}

--Ludo6431 19:24, 5 August 2009 (UTC)