Go to file
2019-04-15 19:39:32 +02:00
.circleci First commit 2019-04-11 22:27:43 +02:00
src/main/java/de/mas/wiiu/jnus/fuse_wiiu Add support to access the original WUD if the input was compressed (WUX) or splitted (_partX.wud) 2019-04-15 19:39:32 +02:00
.gitignore First commit 2019-04-11 22:27:43 +02:00
LICENSE First commit 2019-04-11 22:27:43 +02:00
pom.xml Update to latest JNUSLIB, this fixes WUD support of non-gm partitions with FST > 0x8000 bytes. 2019-04-15 19:32:19 +02:00
README.md Add support to access the original WUD if the input was compressed (WUX) or splitted (_partX.wud) 2019-04-15 19:39:32 +02:00

fuse-wiiu

fuse-wiiu is an easy way to extract data from Wii U titles in various formats. It's compatible to:

  • Title in the installable format (.tmd, .app, .h3 etc.)
  • Multiple versions of a title in the installable format (.tmd, .app, .h3 etc.)
  • Wii U disc images (WUD and WUX), including kiosk discs

fuse-wiiu requires Java 8 and fuse implementation thats compatible to you OS and CPU architecture.

Setup

Before fuse-wiiu can be used the following steps are required.

Fuse

Linux

libfuse needs to be installed.

Ubuntu

sudo apt-get install libfuse-dev

MacOS

osxfuse needs to be installed.

brew cask install osxfuse

Windows

winfsp needs to be installed.

choco install winfsp

Keys (optional)

To decrypt the titles, some keys are required.

The retail common key is expected in either ~/.wiiu/common.key or ./common.key in binary. It's also possible to provide it via an command line argument -commonkey with the key as hex-string.

The dev common key optional for most titles but is expected in either ~/.wiiu/devcommon.key or ./devcommon.key in binary. It's also possible to provide it via an command line argument -devcommonkey with the key as hex-string.

It's possible to provide the disc keys (for decrypting WUD/WUX) or titles keys (to decrypt tmd+app) in a seperate folder. This step is optional Disc keys are expected in ~/.wiiu/discKeys, and should have the same basename as the WUD/WUX. Example: If a mygame.wux is found, a mygame.key will be searched in folder next the .wux. If it doesn't exist, it'll try to load ~/.wiiu/discKeys/mygame.key. The .key is expected to contain the disc key in binary.

If a installable title doesn't provide a title.tik, it's possible to provide the needed title key in the folder ~/.wiiu/titleKeys. Corresponding to the title id, a TITLEID.key is expected which contains the key in binary. Example: if the title 000500101004B100 doesn't have a title.tik, wiiu-fuse will try to load a 000500101004B100.key from ~/.wiiu/titleKeys.

More information can be found in "Supported formats".

Usage

fuse-wiiu will be started from the command line and requires Java 8 and a fuse implementation (see Setup).

Input path

The most imported argument in the -in argument which defines the input path. In most cases this will be a folder, but it's also possible to choose a WUD/WUX directly. If a folder was chosen as input, it will be mirrored to the mounpath, but normal files be hidden. Directories will still be as expected, and whenever a support titles can be mounted, it will be emulated as directory with the prefix [EMULATED] . More information about the behavious on different fileformats can be found on "Supported formats".

Mount path

The mountpath will be set via the -mountpath argument and will set the target of fuse-wiiu. This can be almost any path (and a drive on Windows). Just make sure:

  • The path doesn't exist - but the parent path (if existing) DOES exist.
  • (unix) The user can only mount on a mountpoint for which he has write permission
  • (unitx) The mountpoint must not be a sticky directory which isn't owned by the user (like /tmp usually is)

Example Windows: To mount the folder H:/WiiU to Q:/ you would use something like this: java "-Dfile.encoding=UTF-8" -jar wiiu-fuse.jar -in H:/WiiU -mountpath Q

To mount the folder H:/WiiU to C:/mounted you would use something like this: java "-Dfile.encoding=UTF-8" -jar wiiu-fuse.jar -in H:/WiiU -mountpath C:/mounted Note: You may need to force Java to use the UTF-8 charset. Quoting the VM argument is need by Powershell

Example Unix: To mount the home folder to ~/test you use something like this: java -jar wiiu-fuse.jar -in ~ -mountpath ~/test

Optional arguments.

  • -commonkey [KEY AS HEX STRING] The Wii U retail common key. If not provided, the key will be tried to be read from ~/.wiiu/common.keyor./common.key`. The argument has priority.
  • -devcommonkey [KEY AS HEX STRING] The Wii U dev common key. If not provided, the key will be tried to be read from ~/.wiiu/devcommon.keyor./devcommon.key`. The argument has priority.
  • -disckeypath [path] Override the path where disc keys will be tried to be loaded from.
  • -titlekeypath [path] Override the path where titles keys will be tried to be loaded from.

Forcing the UTF-8 charset to the JVM

java "-Dfile.encoding=UTF-8" -jar wiiu-fuse.jar or java -Dfile.encoding=UTF-8 -jar wiiu-fuse.jar`.

Supported formats

It's possible to use any directory as input, fuse-wiiu will scan will useable formats and mount them on request. If a directory wasn't used for ~5 minutes, it will be unmounted, but automatically remounted on the next access.

If a supported format is found and successfully mounted, a support starting with [EMULATED] will be emulated, which will give you access to the files. The actual content and file layout may differ from format to format.

Wii U disc images - WUD/WUX

Images of Wii U discs are saved .wud (or .wux if compressed, or game_partX.wud when dumped on FAT32). Every .wux or .wud will be emulated as up to three different directories (for image names game.wux).

  • [EMULATED] game.wux
    • This directory is the "normal" representation of a Wii U disc image. It'll have one subfolder for each partition. The GM-Partitions will be mounted and decrypted directly in the common code, content and meta format. The SI contain the ticket and tmd for GM partitions. All other partitions give you files in the "installable" format (tmd,app,tik).
  • [EMULATED] [EXTRA] game.wux
    • In this directory you can find some extra data (or data in a different presentation) of the disc. This includes:
      • The GM partitions in the "installable" format. (Folders with the prefix [ENCRYPTED] )
      • Mounted and decrypted titles from all partitions. (Folder with the prefix [DECRYPTED] [PARTITIONNAME])
        • This includes titles from the non-GM partitions (like updates), and installable titles from the decrypted GM partitions (titles from kiosk discs).
  • [EMULATED] [WUD] game.wux (Only for WUX and splitted WUD)
    • In this directory you can access Wii U disc image as the orginal WUD.

Expected file layout:

game.wux (or game.wud)
(game.key)

For all discs (except kiosk discs), a file containing the disc key is required. This has be either in a .key in the same folder as the wux/wud or in ~/.wiiu/disckeypath (with the same basename e.g game.wux -> game.key).

Multiple WUD/WUX in the same directory are possible, they won't be mounted until you open them.

Installable format (tmd/h3/app)

Supports the

Expected file layout:

- title.tmd
- 0000000X.app
- 0000000X.h3
- (title.tik)

The title.tik is optional. If no ticket was found, a file [titleID].key (where [titleID] is the titleID of the .tmd)containing the key in binary (16 bytes) is expected in ~/.wiiu/titlekeypath.

Extended installable format (tmd/h3/app) with multiple versions.

It's possible to have to mount multiple versions of a installble title. In this case, all .app files are expected in the root, and a title.tmd for each version inside a folder v[version] where [version] is the version number.

Expected file layout:

v0
  - title.tmd
v16
  - title.tmd
v48
  - title.tmd
- 0000000X.app
- 0000000X.h3
- (title.tik)

The title.tik is optional. If no ticket was found, a file [titleID].key (where [titleID] is the titleID of the .tmd)containing the key in binary (16 bytes) is expected in ~/.wiiu/titlekeypath.

Used libraries