• Stars
    star
    280
  • Rank 147,492 (Top 3 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Exploit for the Wii U's USB Host Stack

USB Descriptor Parsing Is Hard (UDPIH)

Exploits the Wii U's USB Host Stack descriptor parsing. Pronounced like "mud pie" without the M.

The write-up can be found here!

Requirements

  • A Wii U

  • One of the devices listed below

    Note: Any other linux device capable of USB device emulation should work as well.
    Prebuilt releases and instructions are only available for the Pico and Zero.
    I will add more devices below which are confirmed to work.

Supported devices:

  • A Raspberry Pi Pico or Zero
  • A Nintendo Switch capable of running udpih_nxpayload

Instructions

Pico

  • Download the latest udpih.uf2 from the releases page.
  • Hold down the BOOTSEL button on the board and connect the Pico to your PC.
    Your PC will detect the Pi as a storage device.
  • Copy the .uf2 file to the Pico. It will disconnect after a few seconds.

The Pico is now flashed and can be used for udpih. Continue with "Booting the recovery_menu" below.

Raspberry Pi Zero (Linux)

ℹī¸ To use USB gadgets on the Pi Zero you need to enable the dwc2 module by running the commands below:
echo "dtoverlay=dwc2" | sudo tee -a /boot/config.txt
echo "dwc2" | sudo tee -a /etc/modules
After running the commands reboot the system.

  • Install the required dependencies:
    sudo apt install build-essential raspberrypi-kernel-headers
  • Clone the repo:
    git clone https://github.com/GaryOderNichts/udpih.git
    cd udpih
  • Download the latest arm_kernel.bin.h from the releases page and copy it to the arm_kernel directory.
  • Now build the kernel module:
    cd linux
    make
  • You can now run sudo insmod udpih.ko to insert the kernel module into the kernel.

The Zero is now ready to be used for udpih.
Note that you'll need to insert the module again after rebooting the Zero. You will need 2 USB cables, one for powering the Zero and one which can be connected to the Wii U.

Continue with "Booting the recovery_menu" below.

Booting the recovery_menu

⚠ī¸ Important notes for this to work:

  • Make sure no other USB Devices are attached to the console.
  • Only use USB ports on the front of the console, the back ports will not work.
  • If your console has standby mode enabled, pull the power plug and turn it on from a full coldboot state.
  • Copy the latest release of the recovery_menu to the root of your FAT32 formatted SD Card.
  • Insert the SD Card into the console and power it on.
  • As soon as you see the "Wii U" logo on the TV or Gamepad plug in your Zero/Pico.
    This timing is important. If you're already in the menu, the exploit won't work..
  • After a few seconds you should be in the recovery menu.

Check out the recovery_menu README for more information about this menu.

Building

# build the docker container
docker build -t udpihbuilder .

# build the pico code
docker run -it --rm -v ${PWD}:/project udpihbuilder make pico

# to only build the arm kernel code
docker run -it --rm -v ${PWD}:/project udpihbuilder make arm_kernel

Special thanks to Maschell, rw-r-r-0644, QuarkTheAwesome, vgmoose, exjam, dimok789, and everyone else who contributed to the Wii U scene!

More Repositories

1

Bloopair

Allows connecting controllers from other consoles like native Wii U Pro Controllers on the Wii U
C
344
star
2

StadiaController

Stadia Controller tools for reverse engineering and experimenting.
Python
251
star
3

DNSpresso

Wii U DNS exploit
C
153
star
4

recovery_menu

Recovery Menu for the Nintendo Wii U
C
142
star
5

moonlight-wiiu

Moonlight Wii U port
C
120
star
6

bluubomb

Exploits the Wii U's bluetooth stack to gain IOSU kernel access via bluetooth
C
110
star
7

WiiUIdent

A Wii U Identification homebrew
C
103
star
8

UFDiine

Wii U Update Folder Deleter
Makefile
87
star
9

evwii

Wii U plugin to enhance the vWii mode
C++
71
star
10

re_nfpii

A reimplementation of the Wii U's nn_nfp.rpl library with the goal of research and amiibo emulation
C++
69
star
11

DumpsterU

Wii U Harddrive Dumper
C++
44
star
12

udpih_nxpayload

C
44
star
13

vWii-Decaffeinator

vWii Decaffeinator allows you to restore your vWii without the need of a NAND Backup
C
34
star
14

indexiine-installer

Installer for Indexiine
C
25
star
15

MultiDRCSpaceDemo

A space shooter demo using the Wii U's MultiDRC mode.
C++
25
star
16

wiiu-rcm-payloadinjector

C
23
star
17

vWii-NAND-Restorer

Restore your vWii NAND backups from your Wii U
C
22
star
18

InfraRedChat

C
15
star
19

bluebomb_micro

BlueBomb for embedded systems
C
15
star
20

UStealthPlugin

Stops the Wii U menu from complaining about "PC formatted" drives
Makefile
13
star
21

wiiu-nandextract-c

Wii (U) NAND Extractor written in C
C
10
star
22

alarmo

C++
9
star
23

configurable-payload

Configurable Payload for the Wii U
C
9
star
24

libdrc

Imported from https://bitbucket.org/memahaxx/libdrc
C++
9
star
25

WiiUCommonKeyExtractor

Extract the Wii U Common Key from the otp
C
8
star
26

SimpleAppDowngrader

App for downgrading android apps using apks [Root required]
Java
8
star
27

drc-fw-patches

Python
6
star
28

wiiu-shaders

A quick introduction on writing shaders for the Wii U
5
star
29

DRXUtil

C
5
star
30

ghidra-hc11-lang

A SLEIGH processor spec for Ghidra for the Motorola 68HC11 (HC11) microcontroller family.
5
star
31

wiiu-examples

Makefile
4
star
32

psexec-android

This app lets you use psexec on your ARM Android device
Java
4
star
33

wiiu-miidata-checksum-fixer

Calculates the checksum for the Wii U's Mii Data
C
4
star
34

udpih_payloads

Some random payloads which can be launched using https://github.com/GaryOderNichts/udpih
C
3
star
35

priiloader-patch-gen

HTML
3
star
36

hpad_test

C
3
star
37

gnu-68hc1x

PKGBUILD's for the GNU Development Chain for 68HC11&68HC12
Shell
2
star
38

garyhax

my completely random website
HTML
2
star
39

SAPI4-CLI

Use Microsoft Sam & friends from the commandline.
C++
2
star
40

wut_heap_test

Makefile
2
star
41

slccmpt-fixer

This fixes the modes for slccmpt01 (vwii) on the wii u
C
2
star
42

imgui_overlay_plugin

C++
2
star
43

ntagtool

Tool for working with Nintendo NFC tags
C++
2
star
44

Android-HAL-Tests

Testing with the Android HALs
C++
1
star
45

JPAExec

Java
1
star
46

.github

1
star
47

SDL-Logger

Print debug text to screen using SDL
C
1
star