FST
Ian Burgwin edited this page Jan 5, 2018
·
15 revisions
Clone this wiki locally
FST, "Filesystem Table", is the format that Wii U title contents are stored in. Used for digital and disc contents.
Some information from the WiiUBrew FST page, some from cdecrypt with assistance from MarcusD. Numbers are big-endian.
Python parser and extractor can be found at wiiu_extract.py
. Decryptor can be found at wiiu_decrypt.py
.
FST contents
Header
Offset | Size | Description |
---|---|---|
0x0
|
0x4
|
'FST\0' magic
|
0x4
|
0x4
|
Unknown, usually 0x20 (size of entries in secondary header). Seen as 0x1 for things like OSv10.
|
0x8
|
0x4
|
Amount of entries in secondary header |
0xC
|
0x14
|
Unused |
Secondary header
Lists contents. Index corresponds with an entry in the TMD content chunk records.
Offset | Size | Description |
---|---|---|
0x0
|
0x4
|
Offset in 0x8000 (32768 ) sectors (e.g. 0x2 = 0x10000 ). Probably only useful for disc contents. Some titles like OSv10 don't seem to use this.
|
0x4
|
0x4
|
Related to size - TODO: put more details here |
0x8
|
0x8
|
Title ID; only seems to be used for contents containing files in /content .
|
0x10
|
0x4
|
Group ID; not always used. Values can be 0x400 , part of the Title ID(tid >> 8 & 0xFFFF ), or something else.
|
0x14
|
0x2
|
Flags
|
0x16
|
0xA
|
Unused(all zero) |
Group ID was seen to be 0x10000
in Nintendo Land disc FST, despite tid being 0005000010102000
. System titles seem to be limited to nothing/0x400
.
File entries header
Offset | Size | Description |
---|---|---|
0x0
|
0x8
|
Unknown, probably unused |
0x8
|
0x4
|
Total file entries |
0xC
|
0x4
|
Unknown, probably unused |
File entries
Offset | Size | Description |
---|---|---|
0x0
|
0x1
|
Type with bitmasks:
|
0x1
|
0x3
|
Name offset, relative to start of name entry table offset |
0x4
|
0x4
|
File offset, in sectors of 0x20 (e.g. 0x2 = 0x40 ), or bytes if (flags & 4) . Non-inclusive of content hash tree.
|
0x8
|
0x4
|
File size, in bytes |
0xC
|
0x2
|
File flags with bitmasks:
|
0xE
|
0x2
|
Content index; corresponds with an entry in the TMD content chunk records |
Name entry table
Null-terminated item names. Offsets are found in file entries in the above header.
Hash tree
WIP. it sucks.