#wii #exploit #hacking #jailbreak

bin+lib letterbomb

A fork of the classic Wii hacking tool from fail0verflow

1 stable release

Uses new Rust 2024

new 5.0.0 May 3, 2025

#387 in Development tools

MIT license

445KB
530 lines

✉️💣 LetterBomb

Crates.io docs.rs CI/CD License: MIT

A Rust-native fork of the classic Wii hacking tool originally written in Python. by fail0verflow. Offered in both library and binary flavors.

LetterBomb generates the payload files to trigger the LetterBomb exploit for a Wii console on version 4.3.


Minimum supported Rust version

MSRV is 1.85.0, edition 2024.

Getting started

LetterBomb is on crates.io.

[dependencies]
letterbomb = "5.0.0"

Or install the standalone binary:

cargo install letterbomb

Example

As a binary

LetterBomb outputs in color.

# Help
letterbomb -h

# Order of arguments is mac region output
# Region can be U E J K
letterbomb "00:17:ab:5a:6e:f5" K outputdir

# Use -b or --bundle to include HackMii installer
letterbomb "00:17:ab:5a:6e:f5" U outputdir -b

# Errors are printed transparently
letterbomb "00:17:ab:99:99:99"
# => error: invalid value '00:17:ab:99:99:99' for '<mac>': MAC address is for emulated Wii
letterbomb "00:17:ab:5a:6e:f5" A
# => error: invalid value 'A' for '<region>': region "A" not U, E, J, K

# Output isn't allowed to be a file
touch outputfile
letterbomb "00:17:ab:5a:6e:f5" E outputfile
# => error: output is file; will not clobber

# If outputdir does not exist, it will be created
# Intermediate parent directories for output are created if safe
letterbomb "00:17:ab:5a:6e:f5" U outputdir/sub/sub/sub/sub

As a library

use std::collections::HashMap;
use letterbomb::{generate::make_payload_now, mac::WiiMAC, region::Region};

fn test() {
    let mac: WiiMAC = "00:17:AB:5A:6E:F5".parse()?;
    let region = Region::U;
    let include_bundle = true;

    // `payload` maps sub-paths (e.g. "boot.elf", "message.txt", …)
    // to file contents as Vec<u8>.
    let payload: HashMap<String, Vec<u8>> =
        make_payload_now(mac, region, include_bundle)
            .ok_or("failed to build payload")?;
}

What happened to Python?

  • Versions 1.x–4.x of LetterBomb were implemented in Python.
  • Starting with v5.0, the codebase was rewritten in Rust for performance, safety, and cross-platform support. Functionality should be identical, if not improved.
  • If you still need Python bindings, you can wrap the library API yourself or continue to use the old Python release at your own risk.

License

Licensed under MIT.

Dependencies

~12–24MB
~346K SLoC