In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

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

From WiiBrew
< SD:
Jump to navigation Jump to search
(←Created page with '=== Layout === The general layout of this file is as follows. {| class="wikitable" |- ! Length ! Description |- | | Header "sdal" |- | | File MD5 Sum (padded with MD5...')
 
m (Navbox)
 
(11 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
=== Layout ===
 
=== Layout ===
  
 +
Loc.dat is encrypted using the SDKey and SD-IV values.
 
The general layout of this file is as follows.
 
The general layout of this file is as follows.
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 +
! Offset
 
! Length  
 
! Length  
 
! Description  
 
! Description  
 
|-
 
|-
|  
+
| 0x0
| Header "sdal"  
+
| 0x4
 +
| Magic - "sdal"  
 
|-
 
|-
|  
+
| 0x4
 +
| 0x10
 
| File MD5 Sum (padded with MD5-blanker before hash calculation)
 
| File MD5 Sum (padded with MD5-blanker before hash calculation)
 
|-
 
|-
|  
+
| 0x14
| Channel TitleID corresponding to slots 1-240 on the SDMenu.  
+
| 0x3C0
 +
| List of channels on the SDMenu. (Each slot is 4 bytes.  Empty slot indicated by 0x00000000.)
 
|-
 
|-
|
+
| 0x3D4
 +
| 0xC
 
| Padded with 0s.
 
| 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.
 +
 +
{{Navbox filebrowser}}

Latest revision as of 19:43, 20 August 2021

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.