1 stable release
Uses new Rust 2024
new 5.0.0 | May 3, 2025 |
---|
#387 in Development tools
445KB
530 lines
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