Video: Recovering from an Error in 24 (or 12) Word Seed Phrase. For Ledger, Trezor, Keepkey, Coinomi, etc.
so just gonna do a quick run-through on some of the tools that are available and the ways to use them that you can use to recover your 24 word seed phrase if you've discovered when you've gone to use it that it's actually an invalid mnemonic or you've given got an error something like recovery failed mnemonic is not valid that's the error Trezor will give you or for ledger you know invalid recovery phrase and it's at this point that you might start freaking out because you know you might already reset your hardware wallet and don't know how you gonna get access to anything but there is still hope and there's a few different tools that can help us to recover that especially if you've already got what you thought was your 24 word seed that probably just has some small errors in it somewhere so what you'll need to start is your twenty four word seed even as errors you'll need your best guess of it this will also work for twelve words seed but I think it's best just to stick with what's the default for Ledger and things which is twenty four and you'll also need to know at least one public address so you need to know at least one address that was used with that wallet attached to that seed phrase so you know ideally one for Bitcoin or Ethereum and you'll see why in a bit though you can also use the Ian Coleman BIP39 tool or edit this one that I forked of seed Saviour to do any coin that's supported by BitcoinJS library so let's just say for this example we purchased some Ethereum on coinbase we could remember we might have done that a few years ago so we log in and we can see that we sent it to this address here and we can remember that that was back in the day when we access it through the old ledger chrome app so that can help us to remember the address and also help us to remember the derivation path which will be more important later so all I'm going to do now is just run through how you'd actually use some of these tools and go from there now the first tool we're going to look at is seed Savior and it's a thing it just runs in your browser and the good thing about it is that it's really very straightforward I've also added forked and edited seed savior somewhat to support out of the box the derivation path for the legacy ledger Ethereum addresses also just throw an XRP litecoin and zencash just because that'll tie it tie in nicely with another video i did so i can demonstrate that everything's working as it should and you can always fork this yourself and with even a small amount of knowledge in coding you should be able to modify that to work with other coins and look if there's enough demand that's something i can always just add to this one here as well you just need to understand that the more coins this has in it the slower it will go so once you've created your air-gapped environment so you know created TAILS live CD or ubuntu or something like that you're gonna want to download the standalone versions of seed savior so if you just jump on to the mnemonic recovery the details will be in the description you'll find the github repository and you can actually just go on to mnemonic standalone and just download it and that'll download the file it's about 4 Meg and while we're at it and we're downloading things can also be worth getting BTC recover and downloading that onto USB as well for later so we can just click just download zip and that'll just give you the whole repository all in one go and you can just unzip both that and seed Savior onto the USB stick that we're going to use for the rest this demo so I thought what'd I do this time as well is show what that would be like running this in an air-gapped environment so we'll just fire up a TAILS virtual machine bearing in mind that again the virtual machine is not a secure air gapped environment this is just to demonstrate how tails would run if you were running this on a laptop or an old computer or even if you just rebooted your computer into it there we go so plugged in the USB and I've actually just stuck the standalone version of Seed Savior and the in common tool so to work entails you just go to stick them into the tor browser folder you put them anywhere else you'll actually get an error message I'll show you so if you just try and run it off the desktop yeah I'll just start anyway we're offline the main reason that I'm suggesting TAILS for this is just a really simple cut-down Linux environment that you can run offline you can also validate the software so you can download it verify that it's all correct and legit and it forgets everything when you reboot all the time so it's a good it's also something where all the components of the operating system have all been validated to be secure so you don't to place your trust in a software stack of a similar size to what you would with say Ubuntu or something like that there we go access file was denied whereas if you've running it from this tor browser folder it will work and behave itself properly so there you go this is the seed saviour recovery tool we're going to use now I've said before that for this example we're going to use this address here be69.
.. as one that we used in our old ledger chrome app so we've created our secure air-gapped environment we've booted into it on a computer that's not connected to the internet so we unplug the network cable we're not going to set up the Wi-Fi anything like that and now we're going to stick our 24 word seed into seed savior or at least our best memory of it now I've actually got a few different seeds I'm going to use for this one so we've got the correct phrase and then we've got this first one which has one word incorrect so instead of tired we might have written down tried when we wrote it down which which i think is a fairly easy mistake to make so if we stick this incorrect one into seed savior this is right so tried is not in the word list did you mean armed or maybe acid or Abel now these first three suggestions it gives words that the software has worked out are close to there that's based on the Ian Coleman tool I've also modified this a little bit to also make some suggestions for words that start and finish with the same letter just because I think they can be really easy ones to make as well and when you just glance at you might not realize it's it's wrong and you can see there that it's actually made the suggestion of one of the correct words but if none of them work just replace it with a question mark can be I think a good suggestion so if we hit question mark what it's going to do is generate a bunch of addresses and it does take a bit longer now that I've added in a bunch more coins so much so that the browser is giving a warning we say no and we just went away that's okay here we go so basically what it's done now is it said that these are all different words that could have been used in place of that question mark and the reason why there aren't the full 2,000 words there that are in the word list is this last word in that actually acts like a checksum so there are only this many valid options for this 24 word phrase with the fourth word unknown so what we've got now is a range of different addresses and if we think to ourselves yes we're looking for an Ethereum address and we're looking for this one here be69.
.. and we can actually just have a look down and go up there it is be69… so we can know then that the correct word is actually tired not tried so you'll see here there's two different options for Ethereum one is what I've labeled as legacy ledger and Coinomi with this derivation path here and the other is what you'll get with ledger live like a Trezor wallet Jaxx wallet something like that which is this longer derivation path and that's just important to know because if you're trying to find Ethereum or something or other and you say using a ledger it would help you to know which set of addresses you're going to be looking for so this seed Savior only generates the first address for each one rather than you know ten deep as you can see here with MyEtherWallet you know that's that'd be69… that's the first address there if we have the old derivation path whereas if we select this one over here we can see that it's the 09ea so that's helpful to know likewise over here you've got these different Bitcoin addresses so you've got like the original legacy Bitcoin addresses you've sort of got the segwit Ones and the new BCH 32 formatted ones and I've also just included XRP litecoin and Zencash (Horizen) on there say it says invalid mnemonic like I've just made side side just there but all of the words are in the word list then another option you can have is just to try and replace each of them with a question mark now this will take a little while because you'll have to generate each one but depending on your level of technical confidence this might still be a good option so you can actually just keep looking in this instance we're looking for this Ethereum address and just keep working through one at a time until you find the address that you want so this seed say view is only good for one word errors it can't do multiple so again it can be useful to go through and work out if one of them's incorrect and you know just to be keeping an eye on the addresses until you find the one you want because frankly it would still take you less time to just work through all of them especially if you're using a coin Litecoin coin or Zencash or something else or Ripple it'll be faster to do this often than to use another tool once you've found your 24 word seed and it's correct you know correct it on your paper back up and just recover it onto your wallet you're good to go so if none of that worked if you've worked through every word in your seed phrase and still can't identify which one was wrong and you think you might have multiple errors in your copy of your 24 word phrase it's time to try a different tool called BTC recover and you might ask you know why didn't we start here but the fact is that BTC recover hasn't really been maintained since late 2017 and it doesn't support the newer format of Bitcoin addresses or nearly as many other coins as seed savior does so and I don't really have the inclination to fork this and expand it at this point in time but yeah single word errors may easily be picked up by seed savior whereas BTC recover can be used effectively to basically recover from multiple word errors and I'm gonna do a demo of showing a two and three word recovery and how long they can take but the important thing to understand is that once you start getting to you know three and four words that are wrong it's gonna take days and weeks and it increases exponentially with every extra word you add so this is why 24 word phrases are secure in the sense that if you want to try and brute force one from scratch you'll be taking thousands upon thousands of years while simply trying to I guess brute force one missing word is quite doable even two or three so that's what we're going to look at so again like everything where you're dealing with your twenty four word seed I'd suggest you do this in a clean environment so I've got a trusty Ubuntu live USB virtual machine on hand and the reason why I'm suggesting to use Ubuntu versus tails is that I suspect that for a lot of the audience watching this trying to download all the packages you need to do a fully offline set up for Python and all those other things in TAILS is perhaps a little bit beyond what people are going to be comfortable with whereas if you just use something like a live USB for Ubuntu download the packages you need so boot it, stay connected to the internet download the packages you need and then disconnect it from the internet and do the seed recovery that is secure as well so I'll just run through the tools you need to you get BTC recover going under Linux mind you it runs just as well on Windows but again I think it's important to emphasize good our practices in terms of not just punching in your 24 words seed on a computer that may or may not be full of malware ok so if you boot a live Ubuntu USB this is pretty much what you can end up with and I'll just sort of plugged in a USB as well with some different files on it so you've got the Ian Coleman standalone tool the mnemonic standalone tool and we're currently online on this one because we are going to download some packages to make BTC recover work so this is just BTC recover that I've downloaded just from their github and I've also downloaded get pip py because you will need some packages from pip to make this work and while you can just do an apt install in Ubuntu it can be faster and easy just to use this for now basically we just want to do the seed recovery QuickStart and just follow the bouncing ball for how to get BTC recover going so the first thing that we're gonna have to do is get pip going so we'll open up the terminal if you're not familiar with the terminal that's okay and there's a little bit of a learning curve for you but that's fine I'm sure you'll survive so we're going to do is just navigate to the USB so that must be you've all you there you go alright so we're just going to run get pip and that will download everything at need Ubuntu just comes with Python built-in so now just let that run that'll take a little while depending on the speed of your internet connection all right done so now we're just gonna have a look at just pretty much walk through the instructions required for seed recover all right so we don't need to do this first step because we've just done that well done the equivalent of that so we are going to be using an Ethereum address so we do want both libraries there we go so we've installed everything we need as per their instructions now we're going to do is just copy this BTC recover just into the home folder here just so we can set the permissions and run it properly rather than run run it off the USB so we'll just go back home alright so you can see BTC recover master now what we need to do is you'll notice whoops you'll notice that seed recover is currently not able to be executed if you try to run it so mission denied so we just want to add mission is to be able to execute it so I sexes and now it's pretty in green which means we can run it all right so we're just going to need to get this Python TK package as well so what we're going to do before we do anything else is just set the mirror for the updates to be something a bit closer to home some in Australia will just select something like our net okay yep reload and I'll take a little while don't all right so let's just get that package too so it makes sounds good all right so now at this point we've actually set up a Linux environment so that it has everything it needs for seed recovery to work we've installed everything through pip and we've also installed the Python TK library so at this point we actually now and disconnect our network so again this is a virtual machine so I'm just clicking disconnect but if you're using your computer this is where you unplug the network cable disconnect the Wi-Fi do all of those things so from this point on this computer is, I'm using a virtual machine here but realistically I'd be using it on a computer this computer is offline stays offline and everything that you were working on here will be lost when you go and reboot and that's the way you want it to be so we're going to do now is we're going to have a look at seed recover and we're just going to check so yep that runs fine so we're actually going to hit cancel because it's going to set up I want to use Bitcoin by default that's not what we want so what we want to do is use some of the different options it gives us so firstly we're going to use this no-dupe-checks because that saves well it says save memory it doesn't save a little bit of memory it saves a lot so basically if you run it without no no-dupe-checks eventually once you start running two or three word recoveries it's going to show up a few gigs of memory and just crash which is not what we want we're also going to use a custom bip32 path because as we mentioned with our little Ethereum address over here that was using the old ledger chrome app we need to use the old derivation path and we also need to tell it the way using in a theory and wallet because again BTC recover is all about Bitcoin and that's one of defaults to if you don't do anything else so so when you say recover so we want no dupe checks we also want bip32 path and want that to be and m44'/60'/0' and we want Ethereum as our wallet right so Xpub so we're dealing with Ethereum so theorem doesn't really use, most Ethereum wallets I've seen don't really give you an Xpub so we're not gonna worry about that please it remember at least one address alright so this is at that address that we remembered from before so we'll stick that in there okay now please enter the address generation limit now one of the reasons why I think Ethereum is a good thing to work with in terms of recovering seeds is that unlike Bitcoin wallets Ethereum wallets tend not to generate a new address every time you go to receive Ethereum just because of the way Ethereum works compared to Bitcoin so we can get away with an address generation limit of 1 for this because we're using the first address and there please enter your best guess seed so we've already done the one test one the one error one so now we're going to do one with two errors in it I'm going to stick it in say go and bang just like that it spits it out so this is a tool that sort of brute forces it but again those two errors were errors where the words weren't even part of valid seed words so it honed in on them really quickly now we'll just do one more test as well where we to run with three errors including a completely wrong word that is in the word list so I've actually done side and then just repeated side again so maybe you can imagine that when you're transcribing your it wrong okay so for this one we're going to need to use some different things so first of all no dupe checks this time we're also looking for three typos but we also want to allow for one big typo and we've got the same options before in terms of derivation path and wallet now the reason why we don't just go straight to like three big typos or something like that is because it makes it take significantly longer same with increasing number of typos there in there by default so we put in the same things as before in terms of the address and the number of address we want to generate for each one and then we stick our faulty or badly remembered or badly written down address in there and then off we go all right so it's about two hours later and it's finished and as you can see it only really went through almost 3,000,000 of the let's see so that's 1.
5 billion possibilities so it could have taken you know over a day and really it was just luck of the draw in terms of how far through the complete set of possible seed phrases had to go for a firm one that matched so there you go so you can see that using seed Savior and BTC recover it's definitely very doable to retrieve your seed phrase if you've got it mostly right and yeah definitely there are still some options there to hopefully get your coins back so yeah if that's been useful to you feel free to send us a tip or whatever and definitely let us know how you go likewise if there are particular seeds that are included in tools like the Ian Coleman tool that's a good indicator of what's in the BitcoinJS library I can just throw them into the seed savior fork pretty easily if the demand is there so just leave a comment or open an issue on github and it can take it from there but yeah I hope you have some luck in terms of recovering your stuff and yeah all the best.