kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 01, 2024, 08:56:12 PM |
|
Hello to all old timers and newcomers. First and foremost I want to thank the ones that helped me so much years back. I wouldn't still be on this path if it wasn't for all your insights and support. Here are the links to previous runs I've had trying to determine what I got and how to get it back. https://bitcointalk.org/index.php?topic=5325117.0https://bitcointalk.org/index.php?topic=5326228.0So, here are the facts - In late 2011 to January 2012 I was running an offline version of Electrum using a thumbdrive with the blockchain on it. (Yeah, back then the blockchain was that small!) When I ran the wallet.dat data through it, Electrum generated a 12 word seed that uses the BIP 39 list. I also derived an xpub and verified funds. The xpub is on a disk as a string of text...somewhere. In 2012 I confirmed the mnemonic phrase worked and could access them at least through Electrum as it would at the very least give me access to the keys. Fast forward to now. I have been trying to get BTCrecover to work for me but it has been quite challenging over the years. I had to give up after the machine I was using just didnt have the "Guramba" to parse the data and kept crashing. So now I have a beast of a PC to run BTCrecover in Linux. I am still tinkering with the seedtoken file to make it work and to pare down the possibilities. I am also trying to figure out the derivation path as this was Electrum and I got no clue which version my January 2012 build was. I've gotten many problems with Ubuntu lately. I just doesn't want to update correctly. So I've resorted to using POP OS and it delivers where Ubuntu 22.04 fails. I am however still having trouble getting GPU acceleration and pyopencl to work correctly. Here is a pic of what I am currently running. https://imgur.com/3hwjYs7 I know I have something, just gotta find the right way to get at it.
|
|
|
|
Yamane_Keto
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 01:25:52 AM |
|
So, here are the facts - In late 2011 to January 2012 I was running an offline version of Electrum using a thumbdrive with the blockchain on it. (Yeah, back then the blockchain was that small!)
When I ran the wallet.dat data through it, Electrum generated a 12 word seed that uses the BIP 39 list. I also derived an xpub and verified funds. The xpub is on a disk as a string of text...somewhere.
You have already created two topics, there is no need to create a new topic. wallet.dat is not used in Electrum Wallet. In 2011 and 2012, Electrum did not use BIP39 because it was agreed upon as a standard of generating mnemonic sentences in 2013. Before that date, Electrum was using mnemonic codes from a 1626 word dictionary, so you need to modify the BTCrecover to the words dictionary and not the BIP39 word list. The new Electrum client uses mnemonic codes to represent random wallet seeds. A seed is encoded with 12 words from a 1626 words dictionary. If you lose your wallet, these 12 words are the only thing you need in order to recover it. If you do not get positive results, contact a team of experts Bitcoin Wallet Recovery Services https://bitcointalk.org/index.php?topic=240779.0
|
自信は成功です
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 01:49:38 AM Last edit: March 02, 2024, 05:01:47 AM by kauai_lost_boi |
|
Slow down there, Lord Yahoo. First of all, this is not the warm welcoming back I was expecting.
Second, I suppose you want me to consolidate all my posts into one? Is there a shortage of virtual territory here?
Most importantly when you say Electrum didn't use wallet.dat, then how did I generate the mnemonic? Or the xpub? And I can clearly read that the current mnemonic is from the BIP39 list and I do have memory of switching from the old list to the new one. There are words from both list that are very distinctive and I wouldn't spin my wheels on this YEARS later if i didn't have an idea of what I did and did not do.
There are plenty of people that helped me before and others that inquired as to my progress. Since you're the antithesis of these people, no more bleating your useless rhetoric in my painfully redundant thread and don't come back unless you got a better attitude. Possibly take a lesson from some of the other contributors to maybe share something that actually helps.
|
|
|
|
nc50lc
Legendary
Online
Activity: 2534
Merit: 6080
Self-proclaimed Genius
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 06:02:48 AM |
|
So, here are the facts - In late 2011 to January 2012 I was running an offline version of Electrum using a thumbdrive with the blockchain on it. (Yeah, back then the blockchain was that small!) -snip- I know I have something, just gotta find the right way to get at it.
It checks-out since the old version had both client and server which can use a modified bitcoin node to connect to. When I ran the wallet.dat data through it, Electrum generated a 12 word seed that uses the BIP 39 list. I also derived an xpub and verified funds. The xpub is on a disk as a string of text...somewhere.
In 2012 I confirmed the mnemonic phrase worked and could access them at least through Electrum as it would at the very least give me access to the keys. Now, here's the uncertain parts. Electrum in Dec2011~Jan 2012 didn't used BIP39 word list but an old_mnemonic ( until v2.0 - 4Q-2015), they still host it in their GitHub Repo, here: https://github.com/spesmilo/electrum/blob/master/electrum/old_mnemonic.pyAnd even though it's the newer versions ( up to the latest) that uses BIP39 word list by default, It's not BIP39 standard compatible so bruteforce programs that specializes in BIP39 wont yield positive results. Lastly, let's consider that it uses the old mnemonic, since you may have used the versions with " key derivation bug" in 2011 ( namely <0.31 and 0.34), a program that's compatible with electrum's old seed may still get false-negative results. You might have to audit those versions instead and build a bruteforce tool based from its code.
There are plenty of people that helped me before and others that inquired as to my progress. -snip-
Unfortunately, it's because of the premise that it's actually a BIP39 mnemonic based from the phrase " I (you) created a BIP39 mnemonic". That's despite the fact that BIP39 was created in 2013. But here, you mentioned that Electrum generated it.
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 07:14:20 AM |
|
It checks-out since the old version had both client and server which can use a modified bitcoin node to connect to. Right on, man! Yeah it was a crazy time in the bitcoin world for sure. Went from 'hey, let's do this crazy thing with computers for a couple years and get this thing that could be considered theoretical currency!' to 'hey, now this is REAL currency..? Now how do I store it?!' I was working with the Bitcoin core and Armory mostly at that crucial time. Then Electrum really streamlined things. When I saw it could run offline and work off the same blockchain as Core, I did all kinds of silly things. Electrum even provided a QR code that I tried to save as an AUTO CAD file. It really was like the wild West of cryptocurrency. In 2012 I confirmed the mnemonic phrase worked and could access them at least through Electrum as it would at the very least give me access to the keys. Now, here's the uncertain parts. Electrum in Dec2011~Jan 2012 didn't used BIP39 word list but an old_mnemonic ( until v2.0 - 4Q-2015), they still host it in their GitHub Repo, here: https://github.com/spesmilo/electrum/blob/master/electrum/old_mnemonic.pyAnd even though it's the newer versions ( up to the latest) that uses BIP39 word list by default, It's not BIP39 standard compatible so bruteforce programs that specializes in BIP39 wont yield positive results. You are absolutely correct. I remember it was the very week they made the addition of the 2048 wordlist. I had a phrase made from the old list. I made sure when the new list was generated, the words would mean something to me. Like my favorite color, animal, etc. Except later after the latest mnemonic was crafted, I had the option of upgrading to a HD wallet type. Since I never had the funds live, I figured it was as cold as cold storage should be. What I had was a way to get to the key. Lastly, let's consider that it uses the old mnemonic, since you may have used the versions with "key derivation bug" in 2011 (namely <0.31 and 0.34), a program that's compatible with electrum's old seed may still get false-negative results. You might have to audit those versions instead and build a bruteforce tool based from its code. You got a forensic minded approach. Nothing is impossible, just very VERY difficult. ![Cheesy](https://bitcointalk.org/Smileys/default/cheesy.gif)
There are plenty of people that helped me before and others that inquired as to my progress. -snip-
Unfortunately, it's because of the premise that it's actually a BIP39 mnemonic based from the phrase " I (you) created a BIP39 mnemonic". That's despite the fact that BIP39 was created in 2013. But here, you mentioned that Electrum generated it. Now one of the goals is to identify the right version of Electrum that I used during that time in Jan 2012 but in all the years I've been at this, I've not seen one clear answer. Thank you for giving me confirmation on some things and helping me theory craft some plausible suppositions of what might have been and might be.
|
|
|
|
apogio
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 08:15:16 AM |
|
OP I saw your initial post. Are you sure the phrase uses the BIP39 standard? Can you also give us an update of the words you know (or perhaps the one you have found during these 2 years) ? Let me guide your answer a little bit: word 1 - known word 2 - knownwords 3, 4, 5, 6 - you only know one word for positions 3 - 6 but don't know it's position, so you basically have 3 missing words in these positions?words 7, 8 - you know the words but don't know the positions, so you don't have any missing words, but only ther order missing? words 9, 10 - you know the words but don't know the positions, so you don't have any missing words, but only ther order missing?word 11 - known word 12 - knownNow one of the goals is to identify the right version of Electrum that I used during that time in Jan 2012 but in all the years I've been at this, I've not seen one clear answer. Thank you for giving me confirmation on some things and helping me theory craft some plausible suppositions of what might have been and might be.
Here are the older versions that are available for download: https://download.electrum.org/Unfortunately 2012 seems too long ago...
|
|
|
|
Pmalek
Legendary
Offline
Activity: 2884
Merit: 7443
Playgram - The Telegram Casino
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 10:17:26 AM |
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway.
|
|
|
|
▄▄███████▄▄███████ ▄███████████████▄▄▄▄▄ ▄████████████████████▀░ ▄█████████████████████▄░ ▄█████████▀▀████████████▄ ██████████████▀▀█████████ █████████████████████████ ██████████████▄▄█████████ ▀█████████▄▄████████████▀ ▀█████████████████████▀░ ▀████████████████████▄░ ▀███████████████▀▀▀▀▀ ▀▀███████▀▀███████ | ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ Playgram.io ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | ▄▄▄░░ ▀▄ █ █ █ █ █ █ █ ▄▀ ▀▀▀░░
| │ | ▄▄▄███████▄▄▄ ▄▄███████████████▄▄ ▄███████████████████▄ ▄██████████████▀▀█████▄ ▄██████████▀▀███▄██▐████▄ ██████▀▀████▄▄▀▀█████████ ████▄▄███▄██▀█████▐██████ ██████████▀██████████████ ▀███████▌▐██▄████▐██████▀ ▀███████▄▄███▄████████▀ ▀███████████████████▀ ▀▀███████████████▀▀ ▀▀▀███████▀▀▀ | | │ | ██████▄▄███████▄▄████████ ███▄███████████████▄░░▀█▀ ███████████░█████████░░█ ░█████▀██▄▄░▄▄██▀█████░█ █████▄░▄███▄███▄░▄██████ ████████████████████████ ████████████████████████ ██░▄▄▄░██░▄▄▄░██░▄▄▄░███ ██░░░█░██░░░█░██░░░█░████ ██░░█░░██░░█░░██░░█░░████ ██▄▄▄▄▄██▄▄▄▄▄██▄▄▄▄▄████ ███████████████████████ ███████████████████████ | | │ | ► | |
|
|
|
apogio
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 02:59:02 PM |
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway. It seems to me that the seed phrase perhaps isn't a BIP39 but a prior version of electrum's seed phrase. I think Electrum started using versioning in seed phrases since version 2.0 [1]. So, if this is correct, then OP perhaps owns a seed phrase that was produced without the current versioning system, so OP must try and find the old code to make it work. Am I right? [1] https://electrum.readthedocs.io/en/latest/seedphrase.html
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 05:33:18 PM |
|
OP I saw your initial post. Are you sure the phrase uses the BIP39 standard? Can you also give us an update of the words you know (or perhaps the one you have found during these 2 years) ? Let me guide your answer a little bit: word 1 - known word 2 - knownwords 3, 4, 5, 6 - you only know one word for positions 3 - 6 but don't know it's position, so you basically have 3 missing words in these positions?words 7, 8 - you know the words but don't know the positions, so you don't have any missing words, but only ther order missing? words 9, 10 - you know the words but don't know the positions, so you don't have any missing words, but only ther order missing?word 11 - known word 12 - knownNow one of the goals is to identify the right version of Electrum that I used during that time in Jan 2012 but in all the years I've been at this, I've not seen one clear answer. Thank you for giving me confirmation on some things and helping me theory craft some plausible suppositions of what might have been and might be.
Here are the older versions that are available for download: https://download.electrum.org/Unfortunately 2012 seems too long ago... The words that I know are still the same. I was using the previous approach on BTCrecover to make sure there were no mistakes. The latest attempts using an updated seedtoken.txt looked like this ^1^knownwordlocked ^2^knownwordlocked ^7^knownwordlocked ^8^knownwordlocked ^9^knownwordlocked ^10^knownwordlocked ^11^knownwordlocked ^12^knownwordlocked 5 words including the known word that is position 3 or 4 5 words including the known word that is position 3 or 4 5 words NOT including the known word that is position 3 or 4 2 words that are position 6 But, if the notion of what we have been nudging at is true, that the version of Electrum I used had it's own way of using the same 2048 words but NOT implementing the BIP 39 standard, then not only do I have a unique situation, I also have a very difficult path to get the mnemonic correct. I was using anything from Electrum version 0.29 to 0.46. Maybe there is some backwards compatibility in those versions. I will have to research more
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 05:41:57 PM |
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway. It might be a benefit that my suspected version of Electrum doesn't connect to any servers anymore as outmoded software are kinda like rare antiques. Unique in their design, and I made my mnemonic offline anyway. Optimistically, I might be able to dig up the installation method on the disk that was used back then. Was Electrum installed on Windows using EXE or something else? Or an even more specific question, what derivation path did Electrum use when it very first implemented the 2048 wordlist if BIP 39 wasn't even a thing?
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 02, 2024, 05:46:39 PM |
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway. It seems to me that the seed phrase perhaps isn't a BIP39 but a prior version of electrum's seed phrase. I think Electrum started using versioning in seed phrases since version 2.0 [1]. So, if this is correct, then OP perhaps owns a seed phrase that was produced without the current versioning system, so OP must try and find the old code to make it work. Am I right? [1] https://electrum.readthedocs.io/en/latest/seedphrase.htmlTook much head banging into walls, but I think we might be onto something here. Thanx to you and the others for giving me good council and now we have a whole new point of view. I'd rather have the facts albeit more difficult.
|
|
|
|
nc50lc
Legendary
Online
Activity: 2534
Merit: 6080
Self-proclaimed Genius
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway. For older versions, he can look for a specific commit in GitHub and browse the repository at that point. For example; from initial commit onwards: github.com/spesmilo/electrum/commits/master?after=bdbd59300fbd35b01605e66145458e5f396108e8+14035By clicking "<>" ( Browse repository at this point), you can get to the source code at that time to try to run it with old version of Python. ( only useful if the seed is complete) For example; v0.31: github.com/spesmilo/electrum/tree/eaedbae083529fc12044ecfb5b0b613c32c70691But, if the notion of what we have been nudging at is true, that the version of Electrum I used had it's own way of using the same 2048 words but NOT implementing the BIP 39 standard, then not only do I have a unique situation, I also have a very difficult path to get the mnemonic correct.
I was using anything from Electrum version 0.29 to 0.46. Maybe there is some backwards compatibility in those versions. I will have to research more
The good news is, Electrum keeps backward compatibility from v0.34 to the latest, the old mnemonic will be detected as " old" and can be restored in the latest version without issues. The bad news is, older versions than those have a key derivation bug that had to be patched which causes the private keys derived in those versions different than the keys derived in the newer versions. In case it was v0.34~v1.9.8, BTCRecover's seedrecover can still be used with the right options when prompted: specifically seed type: " Electrum 1.x". But before doing it, double-check the words if those are included to the " old_mnemonic" in my reply above. Otherwise, it's newer that you thought or from a different wallet entirely.
|
|
|
|
Pmalek
Legendary
Offline
Activity: 2884
Merit: 7443
Playgram - The Telegram Casino
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 03, 2024, 08:28:49 AM |
|
Was Electrum installed on Windows using EXE or something else? I think they were .exe files. The earliest loadable achieve of Electrum's download site I could load from Wayback machine goes back to May 2013 and version 1.6. It had a Windows executable in .exe format. There is also a zip archive you can download and several third-party releases. Starting with version 1.7.3, we see similar executables as today. There is the standalone executable, a Windows installer, and a portable version. They are all in .exe format. The source I posted from GitHub with the earlier releases are ziped. If you are interested in checking the type of files, you'll have to download some of them to see. My guess is that they were also .exe.
|
|
|
|
▄▄███████▄▄███████ ▄███████████████▄▄▄▄▄ ▄████████████████████▀░ ▄█████████████████████▄░ ▄█████████▀▀████████████▄ ██████████████▀▀█████████ █████████████████████████ ██████████████▄▄█████████ ▀█████████▄▄████████████▀ ▀█████████████████████▀░ ▀████████████████████▄░ ▀███████████████▀▀▀▀▀ ▀▀███████▀▀███████ | ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ Playgram.io ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ | ▄▄▄░░ ▀▄ █ █ █ █ █ █ █ ▄▀ ▀▀▀░░
| │ | ▄▄▄███████▄▄▄ ▄▄███████████████▄▄ ▄███████████████████▄ ▄██████████████▀▀█████▄ ▄██████████▀▀███▄██▐████▄ ██████▀▀████▄▄▀▀█████████ ████▄▄███▄██▀█████▐██████ ██████████▀██████████████ ▀███████▌▐██▄████▐██████▀ ▀███████▄▄███▄████████▀ ▀███████████████████▀ ▀▀███████████████▀▀ ▀▀▀███████▀▀▀ | | │ | ██████▄▄███████▄▄████████ ███▄███████████████▄░░▀█▀ ███████████░█████████░░█ ░█████▀██▄▄░▄▄██▀█████░█ █████▄░▄███▄███▄░▄██████ ████████████████████████ ████████████████████████ ██░▄▄▄░██░▄▄▄░██░▄▄▄░███ ██░░░█░██░░░█░██░░░█░████ ██░░█░░██░░█░░██░░█░░████ ██▄▄▄▄▄██▄▄▄▄▄██▄▄▄▄▄████ ███████████████████████ ███████████████████████ | | │ | ► | |
|
|
|
apogio
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 03, 2024, 08:45:40 AM |
|
Great! However, if we know how the seed phrase generation worked back then, we could implement a solution to brute force the missing words. The problem is, I am not aware of the way the used to generate the seed phrases from the entropy. IF (and ONLY IF) it's a BIP39:The algorithm is: 1. ENT = generate random bits as the entropy (128 bits) 2. B = parse ENT in SHA256 3. CHECK = retrieve the first 4 bits from B 4. FINAL = ENT + CHECK (appended) 5. MNEMONIC = split FINAL into 12 segments of 11 bits each. Convert the 11 bit numbers into decimals. Go to BIP39 wordlist and find in the words in the corresponding decimal places. So if you wanted to bruteforce it, you could theoretically brute force the missing bits. Let's move backwards, shall we? So since you have some of the words, you have something like this: MNEMONIC = [WORD 1] [WORD 2] [XXXXX] [XXXXX] [XXXXX] [XXXXX] [WORD 7] [WORD 8] [WORD 9] [WORD 10] [WORD 11] [WORD 12] So, if you find the words in BIP39 word list and get their decimal numbers, then you can convert the decimals to binaries and you will have something like this: FINAL = [10011001110] [01011111101] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [00000000111] [00110010111] [00011000000] [00000000111] [00111100111] [11000010101] So, now you can split the FINAL variable into ENT + CHECK (4 bits). It should look like this: FINAL = ENT + CHECK FINAL = ENT + [0101] FINAL = [10011001110] [01011111101] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [00000000111] [00110010111] [00011000000] [00000000111] [00111100111] [1100001] + [0101] So, now the difficult part... 1. You must generate random bits for all the places where you have an X and parse the whole ENT through SHA256. 2. Then you must take the first 4 bits of the result and check if they are [0101]. Be careful! You will get more than one sequence that starts with 0101. But you will have a much narrower space to search into. 3. Then for every binary sequence that produces the correct checksum, you must produce the mnemonic again and try it to see if it produces your wallet. If it's Electrum's seed, I will leave it to someone more knowledgeable than me.
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 03, 2024, 07:03:55 PM |
|
That only goes as far back as to version 1.8 from 2015. Electrum's GitHub releases date back to 0.56 from 2012 ( https://github.com/spesmilo/electrum/tags?after=0.57a). I am not sure if it's possible to find versions of the software that are older than that. I think anything older than 3.3.4 can't connect to servers anyway. For older versions, he can look for a specific commit in GitHub and browse the repository at that point. For example; from initial commit onwards: github.com/spesmilo/electrum/commits/master?after=bdbd59300fbd35b01605e66145458e5f396108e8+14035By clicking "<>" ( Browse repository at this point), you can get to the source code at that time to try to run it with old version of Python. ( only useful if the seed is complete) For example; v0.31: github.com/spesmilo/electrum/tree/eaedbae083529fc12044ecfb5b0b613c32c70691But, if the notion of what we have been nudging at is true, that the version of Electrum I used had it's own way of using the same 2048 words but NOT implementing the BIP 39 standard, then not only do I have a unique situation, I also have a very difficult path to get the mnemonic correct.
I was using anything from Electrum version 0.29 to 0.46. Maybe there is some backwards compatibility in those versions. I will have to research more
The good news is, Electrum keeps backward compatibility from v0.34 to the latest, the old mnemonic will be detected as " old" and can be restored in the latest version without issues. The bad news is, older versions than those have a key derivation bug that had to be patched which causes the private keys derived in those versions different than the keys derived in the newer versions. In case it was v0.34~v1.9.8, BTCRecover's seedrecover can still be used with the right options when prompted: specifically seed type: " Electrum 1.x". But before doing it, double-check the words if those are included to the " old_mnemonic" in my reply above. Otherwise, it's newer that you thought or from a different wallet entirely. Seems like this isn't nc50lc's first rodeo - https://bitcointalk.org/index.php?topic=5293070.0The conversation in this thread is highly similar if not identical to my current developing dilemma. And the fact you just linked the method to possibly find the exact version build I may have used is nothing short of miracle work. I have another set of irons to introduce to the fire. I will create either a virtualbox or just run it on an airgapped linux distro if all i need is an older version of python. That is one approach. Was Electrum installed on Windows using EXE or something else? I think they were .exe files. The earliest loadable achieve of Electrum's download site I could load from Wayback machine goes back to May 2013 and version 1.6. It had a Windows executable in .exe format. There is also a zip archive you can download and several third-party releases. Starting with version 1.7.3, we see similar executables as today. There is the standalone executable, a Windows installer, and a portable version. They are all in .exe format. The source I posted from GitHub with the earlier releases are ziped. If you are interested in checking the type of files, you'll have to download some of them to see. My guess is that they were also .exe. It would be interesting to see if the later versions have backwards compatibility and maybe some improvements in identifying, possibly resolving the compatibility dilemma. Might take me awhile to remember exactly how my version was installed. But at least now I have many more methods of approach. Great! However, if we know how the seed phrase generation worked back then, we could implement a solution to brute force the missing words. The problem is, I am not aware of the way the used to generate the seed phrases from the entropy. IF (and ONLY IF) it's a BIP39:The algorithm is: 1. ENT = generate random bits as the entropy (128 bits) 2. B = parse ENT in SHA256 3. CHECK = retrieve the first 4 bits from B 4. FINAL = ENT + CHECK (appended) 5. MNEMONIC = split FINAL into 12 segments of 11 bits each. Convert the 11 bit numbers into decimals. Go to BIP39 wordlist and find in the words in the corresponding decimal places. So if you wanted to bruteforce it, you could theoretically brute force the missing bits. Let's move backwards, shall we? So since you have some of the words, you have something like this: MNEMONIC = [WORD 1] [WORD 2] [XXXXX] [XXXXX] [XXXXX] [XXXXX] [WORD 7] [WORD 8] [WORD 9] [WORD 10] [WORD 11] [WORD 12] So, if you find the words in BIP39 word list and get their decimal numbers, then you can convert the decimals to binaries and you will have something like this: FINAL = [10011001110] [01011111101] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [00000000111] [00110010111] [00011000000] [00000000111] [00111100111] [11000010101] So, now you can split the FINAL variable into ENT + CHECK (4 bits). It should look like this: FINAL = ENT + CHECK FINAL = ENT + [0101] FINAL = [10011001110] [01011111101] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [XXXXXXXXXXX] [00000000111] [00110010111] [00011000000] [00000000111] [00111100111] [1100001] + [0101] So, now the difficult part... 1. You must generate random bits for all the places where you have an X and parse the whole ENT through SHA256. 2. Then you must take the first 4 bits of the result and check if they are [0101]. Be careful! You will get more than one sequence that starts with 0101. But you will have a much narrower space to search into. 3. Then for every binary sequence that produces the correct checksum, you must produce the mnemonic again and try it to see if it produces your wallet. If it's Electrum's seed, I will leave it to someone more knowledgeable than me.With BTCrecover I am running my seedtoken off an address.db file. When I tried to use the electrum 1.* option, I got the error saying there was a conflict with 'lang' and I have no idea what that means yet. I will have to make another attempt and copy/paste the exact error. The seedtoken argument worked fine in electrum2 but got no results. I will try to make a run as if it's a basic bitcoin derivation specific to that time and start working with the different versions of Electrum. Hopefully I will get a sense of familiarity immediately when I get the right version. Once again, thank you all for the great advice, knowledge and confirmed references. Even though it's proving to be far more difficult than expected, just learning more facts, confirming suspicions and ruling out previous beliefs based on evidence, it's a good feeling to know maybe this wasn't all for nothing.
|
|
|
|
nc50lc
Legendary
Online
Activity: 2534
Merit: 6080
Self-proclaimed Genius
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 04, 2024, 07:21:08 AM |
|
With BTCrecover I am running my seedtoken off an address.db file. When I tried to use the electrum 1.* option, I got the error saying there was a conflict with 'lang' and I have no idea what that means yet. -snip-
Oh, that's pertaining to --language arg that you've included to the command. I've tested it and apparently, selecting " electrum 1.x" will prohibit you from using certain args like --mnemonic-length as well as --tokenlist. It'll ask about your " best guess" of the mnemonic instead, then proceed to do its programmed 5-phase bruteforce attack ( if used the deafult) to the provided phrase. ( pretty much the same in the old original version of BTCRecover) I tested BTCRecover v.1.12.0 ( seedrecover.py) with an easy 'wrong seed' with 1 wrong word: v1.x Seed: flutter weak friendship painful shy dirty play forgotten settle double ask season./python seedrecover.py --addrs 1MdagXmBnbfGTWjrq2atoK8NY4SqkS5xq6 --addr-limit 10 --dsw --no-eta --no-dupcheck Best Guess ( wrong seed): flutter ask friendship painful shy dirty play forgotten settle double ask seasonStarting seedrecover 1.12.0-CryptoGuide, btcrecover 1.12.0-Cryptoguide on Python 3.10.2 64-bit, 21-bit unicodes, 64-bit ints 2024-03-04 15:00:00 : Phase 1/5: 1 mistake, excluding entirely different seed words. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:00:01 : Using 8 worker threads | 86 elapsed: 0:00:04 rate: 17.54 P/s 2024-03-04 15:00:06 : Search Complete Seed not found 2024-03-04 15:00:06 : Phase 2/5: up to 2 mistakes, excluding entirely different seed words. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:00:07 : Using 8 worker threads | 3324 elapsed: 0:01:56 rate: 28.48 P/s 2024-03-04 15:02:04 : Search Complete Seed not found 2024-03-04 15:02:04 : Phase 3/5: 1 mistake which can be an entirely different seed word. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:02:04 : Using 8 worker threads / 2129 elapsed: 0:01:14 rate: 28.46 P/s 2024-03-04 15:03:19 : Search Complete --Correct mnemonic seed in the POP-UP-- Yours should be provided with --big-typos 8 arg to limit it to 1 phase with " 8" being the number of possible " entirely different seed words". And that's quite a lot of search space and I don't know how to optimize the bruteforce for electrum 1.x seed in seedrecover though. Note: this is considering that your mnemonic seed is created in versions 0.34 and above, otherwise you'l have to " ask" someone to modify the seedrecover code to mimic the old bug.
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 05, 2024, 09:17:12 PM |
|
With BTCrecover I am running my seedtoken off an address.db file. When I tried to use the electrum 1.* option, I got the error saying there was a conflict with 'lang' and I have no idea what that means yet. -snip-
Oh, that's pertaining to --language arg that you've included to the command. I've tested it and apparently, selecting " electrum 1.x" will prohibit you from using certain args like --mnemonic-length as well as --tokenlist. It'll ask about your " best guess" of the mnemonic instead, then proceed to do its programmed 5-phase bruteforce attack ( if used the deafult) to the provided phrase. ( pretty much the same in the old original version of BTCRecover) I tested BTCRecover v.1.12.0 ( seedrecover.py) with an easy 'wrong seed' with 1 wrong word: v1.x Seed: flutter weak friendship painful shy dirty play forgotten settle double ask season./python seedrecover.py --addrs 1MdagXmBnbfGTWjrq2atoK8NY4SqkS5xq6 --addr-limit 10 --dsw --no-eta --no-dupcheck Best Guess ( wrong seed): flutter ask friendship painful shy dirty play forgotten settle double ask seasonStarting seedrecover 1.12.0-CryptoGuide, btcrecover 1.12.0-Cryptoguide on Python 3.10.2 64-bit, 21-bit unicodes, 64-bit ints 2024-03-04 15:00:00 : Phase 1/5: 1 mistake, excluding entirely different seed words. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:00:01 : Using 8 worker threads | 86 elapsed: 0:00:04 rate: 17.54 P/s 2024-03-04 15:00:06 : Search Complete Seed not found 2024-03-04 15:00:06 : Phase 2/5: up to 2 mistakes, excluding entirely different seed words. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:00:07 : Using 8 worker threads | 3324 elapsed: 0:01:56 rate: 28.48 P/s 2024-03-04 15:02:04 : Search Complete Seed not found 2024-03-04 15:02:04 : Phase 3/5: 1 mistake which can be an entirely different seed word. Wallet Type: btcrseed.WalletElectrum1 2024-03-04 15:02:04 : Using 8 worker threads / 2129 elapsed: 0:01:14 rate: 28.46 P/s 2024-03-04 15:03:19 : Search Complete --Correct mnemonic seed in the POP-UP-- Yours should be provided with --big-typos 8 arg to limit it to 1 phase with " 8" being the number of possible " entirely different seed words". And that's quite a lot of search space and I don't know how to optimize the bruteforce for electrum 1.x seed in seedrecover though. Note: this is considering that your mnemonic seed is created in versions 0.34 and above, otherwise you'l have to " ask" someone to modify the seedrecover code to mimic the old bug. The work and knowledge you & the others shared is amazing. I have a lot of work to do in the coming days. I will configure my BTCrecover either on the current POP OS or try to get a flavor that can get pyopencl running correctly for GPU acceleration. I will then go over the different Electrum versions while trying to get the V-1.* derivation path to work along with the other possible avenues of approach discussed. Might take me some days but I will update the progress as it rolls out.
|
|
|
|
nc50lc
Legendary
Online
Activity: 2534
Merit: 6080
Self-proclaimed Genius
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
March 07, 2024, 07:16:03 AM |
|
-snip- I will configure my BTCrecover either on the current POP OS or try to get a flavor that can get pyopencl running correctly for GPU acceleration. I will then go over the different Electrum versions while trying to get the V-1.* derivation path to work along with the other possible avenues of approach discussed. Might take me some days but I will update the progress as it rolls out.
BTW, some clarifications with the " quite huge search space" for --big-typos 8, based from the uncertain words in the other post. I mean that it's huge that it's not humanly possible to brutefoce even with your GPU; and for the follow-up, I can't find other options in seedrecover to set a tokenlist in v1.x electrum seed so it has to rely on " best guess" and " --big-typos", maybe someone else does. If you can make a bunch of manual " 3 mistakes" iterations of your mnemonic phrase based from the know and possible words, that will make it plausible. Example ( now based from this): ^1^knownwordlocked ^2^knownwordlocked ^7^knownwordlocked ^8^knownwordlocked ^9^knownwordlocked ^10^knownwordlocked ^11^knownwordlocked ^12^knownwordlocked 5 words including the known word that is position 3 or 4 5 words including the known word that is position 3 or 4 5 words NOT including the known word that is position 3 or 4 2 words that are position 6
There's only two attempts that should be made with --big-typos 3: 1st " best guess": word1 word2 word3A word4A word5A word6A word7 word8 word9 word10 word11 word12 2nd " best guess": word1 word2 word3A word4A word5A word6B word7 word8 word9 word10 word11 word12 Since there are only 4 uncertain words in this case and word6 has only two possible words, you can let it bruteforce up to 3 mistakes in two separate attempts with word6-A and word6-B. That's faster than setting it to --big-typos 4.
|
|
|
|
kauai_lost_boi (OP)
Jr. Member
Offline
Activity: 56
Merit: 19
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 16, 2024, 08:44:24 PM |
|
-snip- I will configure my BTCrecover either on the current POP OS or try to get a flavor that can get pyopencl running correctly for GPU acceleration. I will then go over the different Electrum versions while trying to get the V-1.* derivation path to work along with the other possible avenues of approach discussed. Might take me some days but I will update the progress as it rolls out.
BTW, some clarifications with the " quite huge search space" for --big-typos 8, based from the uncertain words in the other post. I mean that it's huge that it's not humanly possible to brutefoce even with your GPU; and for the follow-up, I can't find other options in seedrecover to set a tokenlist in v1.x electrum seed so it has to rely on " best guess" and " --big-typos", maybe someone else does. If you can make a bunch of manual " 3 mistakes" iterations of your mnemonic phrase based from the know and possible words, that will make it plausible. Example ( now based from this): ^1^knownwordlocked ^2^knownwordlocked ^7^knownwordlocked ^8^knownwordlocked ^9^knownwordlocked ^10^knownwordlocked ^11^knownwordlocked ^12^knownwordlocked 5 words including the known word that is position 3 or 4 5 words including the known word that is position 3 or 4 5 words NOT including the known word that is position 3 or 4 2 words that are position 6
There's only two attempts that should be made with --big-typos 3: 1st " best guess": word1 word2 word3A word4A word5A word6A word7 word8 word9 word10 word11 word12 2nd " best guess": word1 word2 word3A word4A word5A word6B word7 word8 word9 word10 word11 word12 Since there are only 4 uncertain words in this case and word6 has only two possible words, you can let it bruteforce up to 3 mistakes in two separate attempts with word6-A and word6-B. That's faster than setting it to --big-typos 4. Hey peoples. Just wanted to poke my head in and give an update as to what my latest attempts have lead to. Once again I cannot begin to fathom the amount of invaluable information and assistance I have been given in this new leg of approach and in my entire experience chasing down every lead for years. Thank you all for sharing your time, advice and determination to help me and others along the way. I am at a much more refined place after I researched all the great information gathered in this thread. We have narrowed down the version of Electrum used, we've also come up with ways to implement varying approaches to BTCrecover but the most important fact we've all but confirmed is this key I'm after behaves in a unique and unorthodox way because of the way it was derived by the Electrum version. I was able to not only use the "best guess" method for BTCrecover using the Electrum 1.* derivation selection, but I was also able to forge an argument allowing me to use the token file. But then began the problem. Even though I have one of the most powerful PC configs, when this thing went to work with 32 threads, I was just a few degrees short of hitting red. I think my major issue was getting BTCrecover to use GPU acceleration but I've been having issues finding a Debian based distro that uses the proprietary AMD drivers or finding a way for BTCrecover to recognize the CPU and not label the hardware "generic" in the terminal error data. So now it is a hardware issue that needs to be resolved before I can proceed further. So far, nc50lc, apogio & Pmalek have been exemplary with their spot-on knowledge and when I do get a working method on both the hardware and software end of things, we can move ever more closer to the glorious final resolution.
|
|
|
|
Cricktor
Legendary
Offline
Activity: 882
Merit: 1281
Crypto Swap Exchange
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
April 18, 2024, 08:30:47 PM |
|
I once had a recovery challenge with a forgotten spending PIN number of an Android Schildbach Bitcoin wallet that I managed to find with BTCrecover after weeks of number crunching. I say this, that I gained some knowledge with that tool in the process of my recovery problem.
When you finally have a working hardware and software setup, I highly recommend to first solve a known fabricated recovery case similar to your wallet cracking problem. Make it easier so you don't waste too much energy and time but still being of reasonable complexity to verify your solving setup.
Because if you can't solve a case with a known solution, you likely won't succeed with your real wallet recovery problem.
|
|
|
|
|