How typos work
Use--typos N to tell BTCRecover how many typos to apply at once to each password candidate. You must also specify which types of typos to try. BTCRecover generates all combinations up to the specified count, including the no-typo case.
--typos 2 --typos-capslock --typos-repeat, BTCRecover tries:
Cairo(no typos)cAIRO(one typo: caps lock)CCairoo(two typos: both repeats)cAIROO(two typos: one of each)
Typo order of operations
BTCRecover applies typos in a fixed order:- Build a base password from tokens (or take from a passwordlist)
- Apply wildcard expansions and contractions
- Apply at most one
--typos-capslocktypo - Apply zero or more
--typos-swaptypos - Apply zero or more character-changing typos (
--typos-case,--typos-delete, etc.) - Apply zero or more insertion typos (
--typos-insert)
--typos. The --min-typos option sets a lower bound, skipping guesses with fewer typos than specified.
Typo types
--typos-capslock
--typos-capslock
Simulates typing the entire password with Caps Lock turned on. This is a single typo that affects every letter in the password at once.Input
Cairo → also tries cAIROCaps Lock is an exception to the one-typo-per-character rule. A character can be affected by both a Caps Lock typo and another typo in the same guess.
--typos-swap
--typos-swap
Swaps two adjacent characters. Each swap counts as one typo.Input
Cairo → also tries aCiro, Caior, Cairoo, etc.Swap typos also ignore the one-typo-per-character rule. A swapped character can still have a second typo applied to it.
--typos-repeat
--typos-repeat
Doubles a single character (as if a key was held down too long).Input
Cairo → also tries CCairo, Caairoo, etc.--typos-delete
--typos-delete
Deletes a single character from the password.Input
Cairo → also tries airo, Ciro, Caio, Cair, etc.--typos-case
--typos-case
Changes the case (upper/lower) of a single letter in the password.Input
Cairo → also tries cairo, CAIRO, cAIRO, CaIro, etc.--typos-closecase
--typos-closecase
Like Use
--typos-case, but only changes the case of a letter if it is adjacent to a letter of a different case, or if it’s at the beginning or end of the password. This produces fewer combinations and runs faster while still catching the most likely case errors.--typos-closecase instead of --typos-case when the password has a recognizable capitalization pattern.--typos-replace s
--typos-replace s
Replaces each character one at a time with a specified string Using wildcards in the replacement string dramatically increases the number of combinations.
s. The replacement can be a single character, a longer string, or a wildcard expression.--typos-insert s
--typos-insert s
Inserts a string (or wildcard substitution) between each pair of characters, as well as at the beginning and end. Unlike replace, the original character is kept.By default,
--typos-insert will not insert multiple copies of the string at the same position. To allow this, use --max-adjacent-inserts N.Input Cairo with --typos-insert Z → also tries ZCairo, CZairo, CaZiro, CaiZro, CairZo, CairoZ--typos-map file.txt
--typos-map file.txt
Replaces specific characters with specific alternatives, defined in a map file. Each line in the map file has a character (or characters) to match in the first column, and one or more replacement characters in the second column, separated by whitespace.BTCRecover tries replacing each With
typos/us-with-shifts-map.txt
. with ,, /, or ;, and each ; with [, ', /, or ..A leet-speak map is also included:typos/leet-map.txt
--typos 3 and the leet map, P@55words and Pa$sword5 would be tried from Passwords, but P@$$w0rd5 (5 replacements) would not.Included map files:| File | Description |
|---|---|
typos/us-map.txt | Adjacent keys on a US ANSI keyboard (no shifted characters) |
typos/us-with-shifts-map.txt | Adjacent keys including shifted characters |
typos/leet-map.txt | Common leet-speak substitutions |
typos/leet-uncommon-map.txt | Additional less-common leet substitutions |
Per-type limits (—max-typos-xxxx)
For each--typos-xxxx option there is a corresponding --max-typos-xxxx N option that caps how many of that specific typo type can appear in a single guess, even if the total --typos budget is not yet exhausted.
--typos-insert and --typos-replace when combined with wildcards.
Quick start recommendations
The table below gives example command-line option sets along with rough estimates of the number of passwords checked and time taken per input password.| Options | Wallet type | Password length | Passwords checked | Est. hours |
|---|---|---|---|---|
--typos 2 --typos-capslock --typos-swap --typos-repeat --typos-delete --typos-case --typos-map typos/us-with-shifts-map.txt | Armory | 20 | 15,000 | 0.2 |
--typos 3 --typos-capslock --typos-swap --typos-repeat --typos-delete --typos-closecase --typos-map typos/us-with-shifts-map.txt --max-typos-map 1 | Armory | 20 | 200,000 | 3.0 |
--typos 3 --typos-capslock --typos-swap --typos-repeat --typos-delete --typos-closecase --typos-map typos/us-with-shifts-map.txt --max-typos-map 2 | Bitcoin Core | 15 | 200,000 | 2.0 |
--typos 2 --typos-capslock --typos-swap --typos-repeat --typos-delete --typos-closecase --typos-map typos/us-with-shifts-map.txt --typos-insert %a | Bitcoin Core | 15 | 230,000 | 2.0 |
--typos 4 --typos-capslock --typos-delete --typos-insert %P --max-typos-insert 2 --no-dupchecks | MultiBit/Electrum | 15 | 125,000,000 | 0.2 |
--typos 3 --typos-capslock --typos-delete --typos-insert %P --max-typos-insert 2 --typos-replace %P --max-typos-replace 1 --no-dupchecks | MultiBit/Electrum | 15 | 1,700,000,000 | 2.3 |
Previewing combinations
Before running a full search, use--listpass to print all candidate passwords to the terminal:
| more pauses after each screenful. This lets you verify that your configuration generates the kinds of variations you expect without spending time on an actual wallet search.