Bitcoin Forum
September 02, 2025, 05:00:41 AM *
News: Latest Bitcoin Core release: 29.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 [3]  All
  Print  
Author Topic: Cannot restore my BTC wallet with a seed frase.  (Read 553 times)
Cricktor
Legendary
*
Offline Offline

Activity: 1232
Merit: 2940



View Profile
August 03, 2025, 10:03:17 AM
Last edit: August 03, 2025, 10:27:56 AM by Cricktor
 #41

I created a seed phrase using electrum, it was in electrum format.
Let's assume this is now confirmed and that you don't have a spelling error in your Electrum recovery words used with BIP39 option in Electrum. Can we assume it confirmed too that you didn't alter the sequence of the Electrum recovery words?


But I wanted smth that can be restored without electrum. So I just used it as a Bip39 seed phrase, and it worked, even with a "Bip39 checksum failed".
Most other BIP39 compatible wallets likely won'tI haven't tested it with other decent ones allow you to proceed as Electrum does when your recovery words don't pass the BIP39 checksum test when you use Electrum recovery words as BIP39 recovery words. Likely other wallets assume the BIP39 checksum error is not desired or intended and thus don't continue from there.


Meanwhile I was reading articles about restoring a btc wallet only using a seed phrase. I found out I should use m/44'/0'/0'/0/0 for bitcoin.
Seems like those articles weren't very good or you misinterpreted it as you already said you didn't really know something about derivation paths. It also depends how a wallet expects a derivation path to be specified. There are differences unfortunately in some details.

There are also parts in Electrum that might be confusing to derivation path newbies. When you restore with the BIP39 option, as I and maybe others already wrote, Electrum expects the derivation path spec to be on the account level (m/purpose'/coin'/account'), not further.

Electrum default for legacy P2PKH address type is m/44'/0'/0' or equally m/44h/0h/0h, addresses start with 1....
Electrum default for native Segwit P2WPKH address type is m/84'/0'/0' or equally m/84h/0h/0h (bc1q... addresses).
This will also be displayed for BIP39 derivation when showing wallet details from menu Wallet>Information in Electrum.

Now when you go in Electrum to the "Addresses" tab (assuming default native Segwit addresses), right click on first green receiving address and choose "Details" from context menu, Electrum will display for "Derivation path:" of the first receiving address m/0/0, which might surprise someone who expected to see m/84h/0h/0h/0/0 here.
For Electrum the m in the address details is equal to m/84'/0'/0', both ms are not the same!
In terms of iancoleman.io/bip39 tool m in address details is the Account Extended Private or Public Key, while m in Electrum's wallet information "Derivation path:" is the BIP32 Root Key; the Master Public Key displayed at Electrum's wallet information again is the Account Extended Public Key.

I must say, I don't like this inconsistency in Electrum when the Master Key m at the wallet information display isn't the same as the m in the "Derivation path:" there. And why are address derivation paths not displayed in full path representation which definitely will confuse newbies. (Internally Electrum is consistent because for BIP39 derivation it only stores the Master Account Extended Key, not the BIP39 recovery words at all in the text JSON wallet file!)

nodc3 (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
August 03, 2025, 05:10:34 PM
Last edit: August 03, 2025, 06:46:55 PM by nodc3
 #42

I created a seed phrase using electrum, it was in electrum format.
Let's assume this is now confirmed and that you don't have a spelling error in your Electrum recovery words used with BIP39 option in Electrum. Can we assume it confirmed too that you didn't alter the sequence of the Electrum recovery words?

Yes, no doubt.
Today I came to some more logical conclusions about my actions that day. I did ctrl+c, ctrl+v of m/44'/0'/0'/0/0 to derivation path. Then I clicked a link to IanColeman page https://iancoleman.io/bip39/. Checked that derivation path for BIP44 is m/44'/0'/0'/0. And since they contradicted with each other by one index, I decided that less is better, and that is when my flashback about deleting smth from derivation path actually happened. Then I thought since Electrum originally had even less zero's and I have no idea what corresponds to external and internal, I most likely decided to leave only m/44'/0'/0'. Then when restoring the wallet I was just changing h to ', and that was my second flashback. So most probably I just had to change 8 to 4, and h to ' x2.
And all that with a checkbox on "native segwit (p2wpkh)".
So
60% chance derivation path was m/44'/0'/0'
35% chance derivation path was m/44'/0'/0'/0
5% chance it was smth stupid like m/44'/0'/x', m/44'/0'/x, m/44'/0'/x'/y, m/44'/0'/x/y, where max for x is 1, max for y is 3.
Since I tried all these variations it leaves me with only one conclusion. I most likely had an extension word in my seed phrase.
It couldn't be smth I don’t use constantly, since I didn't even document that.
Will spend my evening bruteforcing in that direction.
Ruttoshi
Hero Member
*****
Offline Offline

Activity: 798
Merit: 737



View Profile
August 04, 2025, 02:35:10 PM
 #43

I most likely had an extension word in my seed phrase.
It couldn't be smth I don’t use constantly, since I didn't even document that.
Will spend my evening bruteforcing in that direction.
That's where the problem lies, without your passphrase you will not be able to restore your wallet, you will lose your coins if you don't have access to your passphrase and cannot remember or brute force it. You were more focused on your seed phrase alone neglecting that your passphrase is as important as your seed phrase in order for you to have full access to your wallet.

Always write down your passphrase and keep it in a seprate place from your seed phrase.

I wish you good luck.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
████████▀▀ ▄▄██▀ ▀▀▀▀▀▀██████████
███▀▀ ▄▄███████            ▀▀▀▀██
█ ▄███████████▀  ███            █
  ██  ▄███████   █▀▀           ▄█
█ ▀███▄███████                 ██
██ ███████████    ▄▄▄▄▄▄▄▄     ██
███ █████████▀    ▀█ █  ▄▀     ██
███▄ ████████      ▀▄█▄▀      ███
████▄▀███████       ▀█▀       ███
█████▄▀█████                  ███
██████ ▀████                 ▄███
███████ ████▄                ████
████████ ▀▀▀▀▀ ▄▄▄▄▄▄▄▄     ▄████
.
.TON Poker..

     ▄▄▄▀▀▀▀▀▀▀▀▀▄▄▄
   ▄▀  ▀█▄▄▄▄▄▄▄█▀ ▀█▄
  █   ▄█▀▀      ▀█▄   █▄
▄█▄ ▄█▀           ▀█▄ ▄█▄
█ ▀██       ▄       ▀█▀ █
█  █       ███       █  █
█  █    ▄███████▄    █  █
█  █     ▀▀▀▄▀▀▀     █  █
▀██▀█▄     ▄█▄     ▄█▀█▄█
  █▄ ▀█▄         ▄█▀  ▄█
   ▀█▄ ▀██▄▄▄▄▄██▀  ▄█▀
     ▀█▄█▀      ▀█▄█▀
         ▀▀▀▀▀▀▀▀▀

▄██████████████████████▄
████████████████████████
████████████████████████
████████████████▀▀██████
███████████▀▀▀    ██████
██████▀▀▀   ▄▀   ███████
███▄     ▄█▀     ███████
██████▄ █▀      ████████
███████▌▐       ████████
████████ ▄██▄  █████████
██████████████▄█████████
████████████████████████
▀██████████████████████▀
.
.Explore Now.
nc50lc
Legendary
*
Online Online

Activity: 2884
Merit: 7535


Self-proclaimed Genius


View Profile
August 05, 2025, 08:21:18 AM
Merited by hosemary (2)
 #44

I noticed this one line in your previous reply:
The list lacks structure, I'm currently trying to contact BTCRecover dev to buy a script, that could automate that.

Because if it's just a simple list, you can already achieve that in BTCRecover by editing its "./btcrecover-master/derivationpath-lists/Electrum.txt" file.
But you should use a derivation path pointing to the target "chain_index" (receiving and change extended prv/pub key) and BTCRecover will search for the next level to match your given address.
The set defaults in the file only search the receiving addresses of legacy and SegWit script types from the actual master private (m) key to the "chain_index":
Quote from: Electrum.txt
m/0 #Electrum Legacy Wallets (BTC + Alts)
m/0'/0 #Electrum Segwit Wallets ( BTC + Alts)

There, you can add an extensive list of derivation paths that you want to check,
And may be important; if you want to include change addresses, add lines with internal chain_index of each:
e.g.:
Code:
#Defaults
m/0 #Electrum Legacy Wallets (BTC + Alts)
m/0'/0 #Electrum Segwit Wallets ( BTC + Alts)
# Change Address Defaults
m/1
m/0'/1

#Standard script types
m/44'/0'/0'/0
m/44'/0'/0'/1
m/49'/0'/0'/0
m/49'/0'/0'/1
m/84'/0'/0'/0
m/84'/0'/0'/1
The gist is, add /0 and another one with /1 to your target account_index derivation path to specify the next level external (receiving) and internal (change) chain_index.

And lastly, the crucial part, for it to work just like how you ticked "BIP39 seed" option in Electrum while using an Electrum seed,
Edit the b"electrum" part in line #1736 in "./btcrecover-master/btcrecover/btcrseed.py" file into b"mnemonic".

Test output (electrum seed restored as BIP39 with Native SegWit BIP84 derivation path):
Code:
python seedrecover.py --tokenlist sample_token-electrum.txt --wallet-type electrum2 --mnemonic-length 12 --language en --addrs bc1q9sgy9rkqwnfgyal8m0lza3akcy0h45ehcmduv5 --addr-limit 1 --dsw

Wallet Type: btcrseed.WalletElectrum2
2025-08-05 16:00:34 : Using 12 worker threads
2025-08-05 16:00:34 : ***MATCHING SEED FOUND***, Matched on Address at derivation path: m/84'/0'/0'/0/0
-snip-
Seed found: inhale festival twenty cave casual vapor slush alley repeat alley illness frozen

Note: if you don't know the address_index of your known address, specify a higher --addr-limit.
The token file; "sample_token-electrum.txt" contains the seed in specified order with achors so BTCRecover wont have to arrange it:
Code:
^1^inhale
^2^festival
^3^twenty
^4^cave
^5^casual
^6^vapor
^7^slush
^8^alley
^9^repeat
^10^alley
^11^illness
^12^frozen

I tested this BTCRecover-1.12.0.

nodc3 (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
August 05, 2025, 11:18:03 AM
Last edit: August 05, 2025, 12:41:44 PM by nodc3
 #45


Huge! I was giving up deep down inside after trying all slightly realistic combinations of derivation path and a passphrase. Thank you, that's what I need.


upd: I tested this and tests run well.
I'm currently struggling to understand how to bruteforce my possible passphrases. Simply adding them to tokenlist and changing --mnemonic-length to 13 didn't work.
nodc3 (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
August 05, 2025, 01:44:33 PM
 #46


If I put something stupid in derivation path like m/39'/0'/0', it doesn't find it, even if I add this derivation path to ./btcrecover-master/derivationpath-lists/Electrum.txt.
nc50lc
Legendary
*
Online Online

Activity: 2884
Merit: 7535


Self-proclaimed Genius


View Profile
August 06, 2025, 03:48:16 AM
 #47

upd: I tested this and tests run well.
I'm currently struggling to understand how to bruteforce my possible passphrases. Simply adding them to tokenlist and changing --mnemonic-length to 13 didn't work.
Oh, that's only a simple edit which isn't intended for bruteforcing the passphrase.
It's mainly for automating the search with your target derivation paths so you don't have to restore to Electrum one at a time.
But you still have to include all your candidate derivation paths in "electrum.txt" file.

Cricktor
Legendary
*
Offline Offline

Activity: 1232
Merit: 2940



View Profile
August 06, 2025, 10:39:41 PM
 #48

I'm currently struggling to understand how to bruteforce my possible passphrases. Simply adding them to tokenlist and changing --mnemonic-length to 13 didn't work.
You can't do that, it won't work like you tried, because the UTF-8 normalized mnemonic recovery words are fed with the mnemonic passphrase (in the form "mnemonic" plus normalized optional passphrase) as kind of salt into the PBKDF2 w/ HMAC-SHA512 2048 iterations.

See here for more details on how to attack optional BIP39 passphrases: https://github.com/3rdIteration/btcrecover/blob/master/docs/TUTORIAL.md#bip-39-passphrases--electrum-extra-words

You will have a hard time if you're not sure about your derivation path. You think you know a few candidates, BUT an attack on the optional BIP39 passphrase would have to be executed for every derivation path candidate seperately.

Too man fuzzy variables are a pain in the ass.

nc50lc
Legendary
*
Online Online

Activity: 2884
Merit: 7535


Self-proclaimed Genius


View Profile
August 07, 2025, 05:12:09 AM
Merited by Cricktor (2)
 #49

If I put something stupid in derivation path like m/39'/0'/0', it doesn't find it, even if I add this derivation path to ./btcrecover-master/derivationpath-lists/Electrum.txt.
Okay, I got a clarification of this in your PM.

That should work, perhaps you forgot to add the chain_index or save the text file?
e.g.: If the derivation path you used in Electrum is m/39'/0'/0'
The entry in electrum.txt file should be: m/39'/0'/0'/0 (for receiving addrs) and m/39'/0'/0'/1 (for change addrs)

Here's two tests because you somehow showed different derivation paths in that reply and in the PM;
My "electrum.txt" file containing the two derivation paths, each appended with internal and external chain_index:

.../0 and .../1 already applied.

Test1:
Electrum derivation path: m/39'/0'/0'

Result:
Code:
python seedrecover.py --token sample_token-electrum.txt --wallet-type electrum2 --mnemonic-length 12 --language en --addrs bc1q59rrluz25ypas2keawfwwprmzh44cfta08mzn2 --addr-limit 1 --dsw

Starting seedrecover 1.12.0-CryptoGuide, btcrecover 1.12.0-Cryptoguide on Python 3.12.8 64-bit, 21-bit unicodes, 64-bit ints
Using the 'en' wordlist.
2025-08-07 12:57:43 : Phase 1/1: up to 12 mistakes, 12 of which can be an entirely different seed word.
Wallet Type: btcrseed.WalletElectrum2
2025-08-07 12:57:44 : Using 12 worker threads
2025-08-07 12:57:44 : ***MATCHING SEED FOUND***, Matched on Address at derivation path: m/39'/0'/0'/0/0
0 of 1 [----------------------------------------------] 0:00:00, ETA:  --:--:--
2025-08-07 12:57:44 : Search Complete
-snip-
Seed found: inhale festival twenty cave casual vapor slush alley repeat alley illness frozen

Test2:
Electrum derivation path: m/39'/0'/0

Result:
Code:
python  seedrecover.py --token sample_token-electrum.txt --wallet-type electrum2 --mnemonic-length 12 --language en --addrs bc1q4a6r5059ru4clfldvp6c4v8nzqt8n9tm7358n8 --addr-limit 1 --dsw

Starting seedrecover 1.12.0-CryptoGuide, btcrecover 1.12.0-Cryptoguide on Python 3.12.8 64-bit, 21-bit unicodes, 64-bit ints
Using the 'en' wordlist.
2025-08-07 13:11:10 : Phase 1/1: up to 12 mistakes, 12 of which can be an entirely different seed word.
Wallet Type: btcrseed.WalletElectrum2
2025-08-07 13:11:10 : Using 12 worker threads
2025-08-07 13:11:11 : ***MATCHING SEED FOUND***, Matched on Address at derivation path: m/39'/0'/0/0/0
0 of 1 [----------------------------------------------] 0:00:00, ETA:  --:--:--
2025-08-07 13:11:11 : Search Complete
-snip-
Seed found: inhale festival twenty cave casual vapor slush alley repeat alley illness frozen

nodc3 (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
August 07, 2025, 10:35:28 AM
Last edit: August 07, 2025, 11:14:52 AM by nodc3
 #50

That should work, perhaps you forgot to add the chain_index or save the text file?
Indeed it worked, sorry for wasting your time.


I'm currently struggling to understand how to bruteforce my possible passphrases. Simply adding them to tokenlist and changing --mnemonic-length to 13 didn't work.
Too man fuzzy variables are a pain in the ass.

What if I want to find my derivation path this way with a known passphrase? How do I add it to the script? Since I don't really want to bruteforce it at this moment, rather than try 10 of my most commonly used passwords.
BTW, is there any difference between "Electrum extended word" and a passphrase?

nc50lc
Legendary
*
Online Online

Activity: 2884
Merit: 7535


Self-proclaimed Genius


View Profile
August 08, 2025, 04:09:15 AM
Merited by Cricktor (1)
 #51

-snip-
BTW, is there any difference between "Electrum extended word" and a passphrase?
Basically: Those are the same when it comes to use-case. It changes the derived binary seed from the mnemonic.

Technically: There's one difference under the hood, Electrum's salt is: "electrum"+ the user's seed phrase extension.
While BIP39 is:  "mnemonic"+ the user's passphrase.

nodc3 (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile
August 08, 2025, 06:38:09 AM
 #52

I've used BTCRecover to check all combinations of my passwords (4 most probable +10 least probable), and 400+ most probable derivation paths (2 of them are most probable, 2 less probable and 4 slightly probable) .
No success.
I will bruteforce short passphrases with lower cases only up to 6 or 7 letters, but the chance of success is close to 0.
I guess its time to say goodbye to my bitcoins. It was a huge sum of money for me, but I still got like 30% of my money left, that will let me live my life comfortably in the next couple years. But I'll have to continue my career and stop playing videogames that much Smiley
Thx to everyone who tried to understand my problem and help.

Lucius
Legendary
*
Offline Offline

Activity: 3710
Merit: 6732


Dum spiro, spero🎗️


View Profile WWW
August 08, 2025, 11:06:35 AM
 #53

ut the chance of success is close to 0.
I guess its time to say goodbye to my bitcoins. It was a huge sum of money for me, but I still got like 30% of my money left, that will let me live my life comfortably in the next couple years. But I'll have to continue my career and stop playing videogames that much Smiley
Thx to everyone who tried to understand my problem and help.


You never give up on things like that - and rest assured that someone somewhere has an idea and a way to get hold of those coins. Maybe one day you'll remember exactly what you did, because it's somewhere in your memory and can surface at any time.

I don't know if anyone has suggested it to you, but maybe you could try contacting Dave and see if he can do something to help you.

Bitcoin Wallet Recovery Services - for forgotten wallet password

Cricktor
Legendary
*
Offline Offline

Activity: 1232
Merit: 2940



View Profile
August 08, 2025, 07:47:37 PM
 #54

I want to strongly suggest that you should test your recovery and brute-force steps with a known test case. For such a test case where you basically already know the solution, you can verify that all you do must lead you to the one and only valid solution. If you can't find the solution for a know case, how could you find a solution for your real case?

Basically do all the stuff you've likely done for your problem case:
  • document every step meticulously, contrary to what you've done and crucial here for repeatability
  • generate an Electrum seed (the mnemonic recovery words which you have to backup)
  • delete the wallet or rather move a copy away to different storage
  • restore from Electrum recovery words, with BIP39 option ticked, choose some non-standard derivation path
  • once you have your wallet's addresses, copy first or few of them carefully
  • now pretend you don't know the derivation path and do whatever you would do if it were your real problem case, use appropriate recovery tools like BTCrecover and whatnot else
  • you must find a solution or you're in trouble
  • repeat all of the above with a wallet that also has a not too complex and short optional mnemonic passphrase
  • you can pretend to know roughly the derivation path and try to brute-force your simple and short optional mnemonic passphrase
  • again: you must find your solution! If not, your tool chain is not used properly or something else is wrong. If your tool chain doesn't work or you use it incorrectly, you're not going to succeed in your test case and far less with your real case!

If I have a recovery job to do, I would always verify first, that my tool chain will lead me to a solution. If it doesn't, there's no point to invest time, energy and nerves to seek a solution, because it's highly improbable to succeed.

Not sure, if I have to point out additionally that all such actions should be done in a secure environment which you would have to use for your real case anyway. I would practice in the safe environment that I'd use anyway if significant amount of coins are at stake.

Pages: « 1 2 [3]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!