joemattie
stuff
← index
project pageupdated 2026-08-07

joegen

CUDA-accelerated BIP39 candidate generation for the 9.1 BTC recovery

The generating half of the BIP39 search tooling built for the 9.1 BTC hunt. Testing the theory that a badly copied seed phrase started as valid BIP39 means producing an enormous number of plausible phrases and checking every one: joegen generates, and joerecover checks. The hunt’s full story is in the writeup linked below.

Generating candidates

joegen is a CUDA-accelerated word-permutation engine (the repo is joegen; the binary is word-permutations). Each line of the input describes one slot in the phrase, and the constraint syntax maps directly onto handwriting problems:

[len:5 first:t]        # all 5-letter words starting with 't'
[last:est]             # words ending in "est"
[has:at !has:e]        # contains "at", no letter 'e'
[all]                  # the entire 2,048-word dictionary
toil town tone         # or an explicit shortlist

If a cursive word looks like it starts with a looped ascender, runs about six letters, and ends in something like -est, that’s expressible directly. Constraints combine, exclusions work, and --skip N can resume or divide a job without regenerating the earlier space. It’s a deliberately Unix-shaped tool that writes candidates to standard output, because every existing recovery program wanted its own file format, and in a search like this the candidate list is where most of the intelligence lives.

writing2026-07-05 · 8 min read
Hunting 9.1 BTC with a piece of paper, two Rust programs, and an RTX 3090

A friend inherited 24 handwritten words and a dead hardware wallet. Ten of the words are not in the BIP39 dictionary, and the margin says email.

read the writeup →