SD:/private/wii/loc.dat: Difference between revisions

From WiiBrew
< SD:
Jump to navigation Jump to search
No edit summary
Randomdude (talk | contribs)
Undo revision 88045 by Cease and Desist (Talk)
Line 1: Line 1:
This is a warning to the owners of this site. My name is Shigeru Miyamoto and I am disappoint. You are breaking the DCMA laws. DCMA laws protect our freedoms far into the furture. There is over 9000 pages here and I want every single one of them gone by next week. This is not a threat but a promise. Every day after that week is up, I will sue you for $100,000 a day.
=== Layout ===


Thank you for using Nintendo. We must ensure our freedoms through use of the DCMA. This not the analog millennium one passed in 1000 A.D., but the digital one.
Loc.dat is encrypted using the SDKey and SD-IV values.
The general layout of this file is as follows.


==CEASE==
{| class="wikitable"
AND DESIST
|-
! Offset
! Length
! Description
|-
| 0x0
| 0x4
| Magic - "sdal"
|-
| 0x4
| 0x10
| File MD5 Sum (padded with MD5-blanker before hash calculation)
|-
| 0x14
| 0x3C0
| List of channels on the SDMenu. (Each slot is 4 bytes.  Empty slot indicated by 0x00000000.)
|-
| 0x3D4
| 0xC
| Padded with 0s.
|}
 
Here's some C structures:
<pre>
typedef struct
{
char tid[4]; // The lower 4 bytes of the channels Title ID.
} SDList;
 
typedef struct
{
char magic[4]; // The Magic. Always `sdal'
u8 md5[0x10]; // MD5 sum. Pad with MD5-Blanker.
SDList list[240]; // The entries. Same order as on the menu.
u8 padding[12]; // Padding with 0's.
} Locdat;
</pre>
 
Credit to CaitSith2, and Galaxy| for this finding.

Revision as of 20:18, 7 August 2010

Layout

Loc.dat is encrypted using the SDKey and SD-IV values. The general layout of this file is as follows.

Offset Length Description
0x0 0x4 Magic - "sdal"
0x4 0x10 File MD5 Sum (padded with MD5-blanker before hash calculation)
0x14 0x3C0 List of channels on the SDMenu. (Each slot is 4 bytes. Empty slot indicated by 0x00000000.)
0x3D4 0xC Padded with 0s.

Here's some C structures:

typedef struct
{
	char	tid[4];			// The lower 4 bytes of the channels Title ID.
} SDList;

typedef struct
{
	char	magic[4];		// The Magic. Always `sdal'
	u8	md5[0x10];		// MD5 sum. Pad with MD5-Blanker.
	SDList	list[240];		// The entries. Same order as on the menu.
	u8	padding[12];		// Padding with 0's.
} Locdat;

Credit to CaitSith2, and Galaxy| for this finding.