So ideally it would produce every possible 12 word seed key with a correct checksum only utilizing in my instance the 10 words I gave it to use.
That's pretty much what my script does... it simply checks every combination of words and when it finds valid ones, outputs a text file with 100 receive addresses and 100 change addresses and their private keys... So you end up with hundreds of files like this:
https://pastebin.com/WeBPkxjNThis way, you can simply do a search in each file looking for a known address:
find . -name "keys_*.txt" | xargs grep 1BdvycQtKNAt89r6nUPtekb45NsR1YTy3o
gives:
./keys_7.txt:1BdvycQtKNAt89r6nUPtekb45NsR1YTy3o
It isn't anywhere near as polished or user-friendly as the btcrecover and seedrecover scripts... and you'd need to edit the source code to set the derivation path if you want to change it... and it'll probably take quite a while to check all the combinations of 2 missing words and output hundreds of files... but it *should* work.
Source code is here:
https://pastebin.com/3veBTLFgYou run it by passing the "known" seed words... and use an "x" for missing word(s):
python find_missing_seed_word.py sketch hockey elbow property symptom peanut genre bubble popular inherit x x
or
python find_missing_seed_word.py sketch hockey elbow x symptom peanut genre bubble popular inherit x adult
etc etc...
NOTES:
- This script will NOT work if you don't know the position of the missing words
- There will probably be some Python library dependencies (like "bitcoin") that you might need to install... use pip
- if anyone wants to use this with a derivation path (it is currently set to m/44'/
145'/0' for BCH)... you need to change the lines 466-469:
#m/44'/145'/0'/0 - Receive
xprvReceive = bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(xprv, 44 + 2**31), 145 + 2**31), 2**31), 0)
#m/44'/145'/0'/1 - Change
xprvChange = bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(xprv, 44 + 2**31), 145 + 2**31), 2**31), 1)
For instance, if you wanted to use BTC (m/44'/
0'/0') you would need to change to:
#m/44'/0'/0'/0 - Receive
xprvReceive = bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(xprv, 44 + 2**31), 2**31), 2**31), 0)
#m/44'/0'/0'/1 - Change
xprvChange = bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(bitcoin.bip32_ckd(xprv, 44 + 2**31), 2**31), 2**31), 1)