Search code examples
pythoncryptocurrencypassphrase

Implement a brute force algorithm to find three missing word from BIP39 seed


I lost 3 middle words of my 24 words seed phrase for a nano ledger hardware wallet.

As an example (not my real seed phrase)

pledge horror unfair category a.... xxxxxx a...... core abuse tenant crew captain insect angry again deposit detail similar arrest kind copy pony door brass

So I know the missing words in position 5 and 7 start with a and I don't have any clue for word number 6.

I know for sure an ethereum public address that I used back in 2017, but I am not sure about my BTC address.

I believe that cracking the seed phrase is doable, but as I am not a programmer (I have a beginner level in python for data science) I don't know how to do it.

So far, I have explored:

  • BTCRecover but it only handles one missing word and 3 typos
  • Seed Savior but it only handles 1 missing words

Does anyone know how to solve this problem in a practical manner? I understand that the theoretical solution to this problem is trivial but I need to implement it, which is far from trivial for me.


Solution

  • Just use BTCRecover (My updated fork here: https://github.com/3rdIteration/btcrecover) with all the defaults except for adding --big-typos 3

    When prompted for your seed, just put in an X in place of the invalid words. (Any placeholder will do as long as it's not a BIP39 word)

    If you are even slightly unsure of your address, run it once (with what you think it is) and if it doesn't find anything, run it against an AddressDB. (https://btcrecover.readthedocs.io/en/latest/Creating_and_Using_AddressDB/)

    Either way it should take a few days to search all possible seeds each time, so quite straightfoward as far as seed recoveries go.