Skip to content

Sierraffinity/wfslib

 
 

Repository files navigation

wfslib

WFS (WiiU File System) Library and Tools

Status

Build StatusBuild status

Usage

wfs-extract

wfs-extract --help
Usage: wfs-extract --input <input file> --output <output directory> --otp <opt path> [--seeprom <seeprom path>] [--mlc] [--usb] [--dump-path <directory to dump>] [--verbos]
Allowed options:
  --help                produce help message
  --input arg           input file
  --output arg          ouput directory
  --otp arg             otp file
  --seeprom arg         seeprom file (required if usb)
  --dump-path arg (=/)  directory to dump (default: "/")
  --mlc                 device is mlc (default: device is usb)
  --usb                 device is usb
  --verbos              verbos output

wfs-file-injector

Change the content of files in wfs image. The injected file size must be smaller than the allocated size on the disk. WARNING: May corrupt the file system, Use at your own risk. Make sure to backup the wfs image.

Usage: wfs-file-injector --image <wfs image> --inject-file <file to inject> --inject-path <file path in wfs> --otp <opt path> [--seeprom <seeprom path>] [--mlc] [--usb]
Allowed options:
  --help                produce help message
  --image arg           wfs image file
  --inject-file arg     file to inject
  --inject-path arg     wfs file path to replace
  --otp arg             otp file
  --seeprom arg         seeprom file (required if usb)
  --mlc                 device is mlc (default: device is usb)
  --usb                 device is usb

wfs-fuse (Linux only)

wfs-fuse --help
usage: wfs-fuse <device_file> <mountpoint> --otp <otp_path> [--seeprom <seeprom_path>] [--usb] [--mlc] [fuse options]

options:
    --help|-h              print this help message
    --otp <path>           otp file
    --seeprom <path>       seeprom file (required if usb)
    --usb                  device is usb (default)
    --mlc                  device is mlc
    -d   -o debug          enable debug output (implies -f)
    -o default_permissions check access permission instead the operation system
    -o allow_other         allow access to the mount for all users
    -f                     foreground operation
    -s                     disable multi-threaded operation

Example

Dump mlc from backup

wfs-extract --input mlc.full.img --output dump_dir --otp otp.bin --mlc

Dump USB device under Windows

(Needed to be run with administrator previliges, so run from privileged command line)

wfs-extract --input \\.\PhysicalDrive3 --output dump_dir --otp otp.bin --seeprom seeprom.bin

You need to replace PhsyicalDrive3 with the correct device, you can figure it out with this PowerShell command

Get-WmiObject Win32_DiskDrive

Inject rom.zip

wfs-file-injector --image usb.img --inject-file rom.zip --inject-path /usr/title/00050000/101c3500/content/0010/rom.zip --otp otp.bin --seeprom seeprom.bin

Mount USB device in Linux

sudo wfs-fuse /dev/sdb /mnt --otp otp.bin --seeprom seeprom.bin -o default_permissions,allow_other

Build

Linux

Install the requirements

sudo apt-get install git g++ make pkg-config libfuse-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-program-options-dev libcrypto++-dev

Get the code:

git clone https://github.com/koolkdev/wfslib.git
cd wfslib

Build

make

Visual Studio

Visual Studio 2015 solution file is provided. (The dependencies are Nuget packages)

Mac OS X

Install Xcode command line tools:

xcode-select --install

Install Homebrew
Install the requirements

brew install pkg-config boost cryptopp
brew cask install osxfuse

Get the code:

git clone https://github.com/koolkdev/wfslib.git
cd wfslib

Build

make

Note: You must provide "-o default_permissions,allow_other" argument for wfs-fuse

About

WFS (WiiU File System) Library and Tools

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 96.1%
  • Makefile 3.6%
  • C 0.3%