Share This Page

I am totally new here on GBATemp, but I thought, why not start with something for you.

I know there is DiscU.exe and VGMToolbox to decrypt Wii U Disc images (.wud) if you have the disc key and the common key, but I usually sit in front of my Macbook and both applications only work on Windows (VGMToolbox didn't compile or run with Mono and DiscU.exe isn't a C# application anyway, so both of them didn't work).

That's why I decided to just code my own WUD decryption tool. And because I am a friend of OSS and most probably a soon-to-come Free Software Foundation member, it was clear that I have to release the source code.

It's for sure not the best work and the code has to be optimized and cleaned, there's almost NO documentation about the code itself right now, but you can view it on Github here:

@jimmyleen It is a standard C application that only includes standard C headers that come with every linux. It does run on my Arch Linux VM, my Arch Linux server and my Debian server (though I did not test to decrypt an image yet).

Could you take a look at if the application has execution rights?
Furthermore, it is a command-line program. If you tried to execute it from your file explorer, it most probably just closed before you saw it, as the program terminates right after it prints a small usage header to the console if it wasn't called with the needed command-line arguments.

The "partition identifier" is a two character code for the type of the "partition" on the disc. Every Wii U Disc has different partitions, just like you can have partitions on your HDD. A complete example for a partition name would be "UP000500101004620000000004CF00" for the 5.3.2 update partition on Mario Party 10 (EUR image).

The following partition types are known to me:

SI: Contains information about the other partitions, for example partition keys for GM partitions (each GM partition has its own key for encryption/decryption)

UP: Contains a system firmware update

GI: Never seen it before, though it seems to be something similar to SI

SI, UP and GI partitions are encrypted with the disc specific key, while GM partitions are encrypted with a partition-specific key that is stored in TITLE.TIK files in the SI (or GI?) partitions. The TITLE.TIK file itself is encrypted with the Wii U common key (that's why you need the disc specific key and the common key to extract an image).

WUDecrypt allows you to extract only specific types of partitions, as to play a game, you would only need to extract the GM partition and could discard the data from the UP partitions, as you won't want to extract the unneeded system firmware update. Though some curious people may still want to extract everything and that's why WUDecrypt usually does that

The "partition identifier" is a two character code for the type of the "partition" on the disc. Every Wii U Disc has different partitions, just like you can have partitions on your HDD. A complete example for a partition name would be "UP000500101004620000000004CF00" for the 5.3.2 update partition on Mario Party 10 (EUR image).

The following partition types are known to me:

SI: Contains information about the other partitions, for example partition keys for GM partitions (each GM partition has its own key for encryption/decryption)

UP: Contains a system firmware update

GI: Never seen it before, though it seems to be something similar to SI

SI, UP and GI partitions are encrypted with the disc specific key, while GM partitions are encrypted with a partition-specific key that is stored in TITLE.TIK files in the SI (or GI?) partitions. The TITLE.TIK file itself is encrypted with the Wii U common key (that's why you need the disc specific key and the common key to extract an image).

WUDecrypt allows you to extract only specific types of partitions, as to play a game, you would only need to extract the GM partition and could discard the data from the UP partitions, as you won't want to extract the unneeded system firmware update. Though some curious people may still want to extract everything and that's why WUDecrypt usually does that

Click to expand...

OMG, thanks, that fully detailed

Wondering how scene release groups can have the disc key with the game

Most probably, but that's just a guess, they have something special attached to a legit Wii U or something and they can read its memory. The Wii U could store the key somewhere in memory and they know where.

But they could of course also have something very special they built themselves to read the disc itself and to get the title key.

@OuahOuah
No, currently, WUDecrypt needs binary files of the keys (like the ones you already get with scene releases). So you cannot just post the key as plaintext into the files. You have to use a hex editor or something similar to get every byte of the key into it's binary form. It should be 16 bytes long afterwards and bytes are two hexadecimal characters long (e.g. D7 FF FF FF FF, and so on).

Though I could also add the possibility to read plaintext keys if the file extension ends with .txt
I will add this as a Feature Request on the Github sources.

I am having trouble extracting the GM partition with two separate WUD files. It keeps telling me the partition has no valid file table signature. Can anyone help me with this or point me in the right direction? Thanks.