Need help - Restore wallet

daedalus

#1

Hi,

I am trying to restore my wallet using the 12 word recovery phrase. Whats making the process challenging is that I dont ‘exactly’ remember the last 2 words of the phrase, as I had only written down the starting letters for the last 2 words, asI felt (at the time) should be easy to recall. But now I am having to deal with a number of permutations/combinations barring the invalid phrases (BIP39 checksum I believe) that Daedalus thankfully rejects.

To make things worse, I think I didnt use the default address to send ADA from my exchange, and I actually generated a few new addresses (within Daedalus) to receive each transaction from the exchange.

Now since I dont know the exact phrase, can I try different combinations to try and restore the wallet fully (each attempt taking upto 1 hr) in the hope that it will reflect all the previously generated addresses and incoming transactions? Any help in speeding up this process would he deeply appreciated.

Thanks,


#2
  • If on Windows, make an antivirus exception for Daedalus. Even if you don’t have special AV software installed, Windows Defender will slow Daedalus down significantly.
  • Restoration might be faster using Yoroi. That’s still at least a month away from mainnet release though.
  • Check the BIP39 word list for familiar words.
  • If you have no clue about the words, there are about 10,000-20,000 possibilities, depending on what the letters are. That’s not practical to test manually. However, it’s possible to bruteforce it in an automated way, would take about a year on average hardware and software (my old laptop can do a restore in 30 minutes). Can be accelerated massively by using higher performance hardware and distributing the process across multiple CPU cores and computers. If Yoroi can somehow restore e.g. in under half a minute, then it would only take a week.
  • It’s not an issue that you generated multiple addresses. The reason why wallet restoration takes so long is that it looks for any addresses on the blockchain that belong to your wallet.

#3

Thank you for your helpful response. I would like to learn more on the automated brute force, is there a script that could take in the 12 word mnemonic and spit out the address (primary)? This process could work entirely offline. Maybe I will recognize the correct address.

Is there a better alternative to brute force this please?


#4

Don’t know of an existing solution. Printing the primary key should be fairly simple to script. Cardano SL (which already runs in the background when using Daedalus) has an HTTP API, this would be the algorithm:

For each word combination:

Didn’t do any tests, but I think this should be fast, few seconds per cycle, so a text file containing all word combinations with primary addresses could be produced in a matter of days at most.


#5

This is wonderful! You have really made my day!
Do you happen to know the correct URL (port) for the CardanoSL background process running on localhost please?
Also, I ran some scripts to check BIP39 checksums for the mnemonics and have now distilled down to < 500 potential mnemonic combinations.


#6

Or you can use cardano-cli and do some scripting for getting addresses as @hayamoto_jr recommended, but you need to check which derivation and wallet scheme was used when your address was created. Or just do cardano-cli recover option, but I have not checked how long that recover takes.


#7

Probably not easy to get this to work on Windows. MacOS or Linux should be fine. As @_ilap mentioned, cardano-cli is better suited for this task, I didn’t know it was already released.


#8

Thank you for your response _ilap, not sure I understand what you mean by “need to check which derivation and wallet scheme was used when your address was created”.
Without knowing the above I cant hope to retrieve the address you mean (I am using REST API on cardano-sl, I am not using cardano-CLI)?

My wallet was created during Oct 2017, how does that affect my testing using APIs please?


#9

If you use REST API then nothing would affect your testing.