Pages:
Author

Topic: The FinderOuter, a bitcoin recovery tool (v0.16.0 2022-09-19) - page 6. (Read 3801 times)

legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
On the other hand i also have a problem with my private key but your software will not work for my scenario because my key is saved in 64 hexadecimal format: If you would modify the software to accept also  the hexa format and not only base58

OK, let me see what I can do but unlike base-58 it will be very slow since it requires EC point multiplication which is slow by nature and my ECC code is particularly slow since I still haven't had time to optimize it.
I'll post an update here when it is finished.
newbie
Activity: 4
Merit: 7
Hello Coding Enthusiast  / first i want to thank you for working on such a software with a GUI user friendly because as you said ,  there are people who do not know to use/apply  a code or even use the cmd ( and belive me there are a lot of them)   ;  your software just makes the things more easy Cheesy

On the other hand i also have a problem with my private key but your software will not work for my scenario because my key is saved in 64 hexadecimal format: If you would modify the software to accept also  the hexa format and not only base58 , i would send you a small tip as soon as i will recover my private key (i have 7 missing characters out of 64;i know the location of them )  here is the original post of my matter if you want to take a look please : https://bitcointalksearch.org/topic/missing-7-characters-of-a-private-key-in-hexa-format-please-help-5227915   

Also i belive this update will help others too and not only me because there are many people who prefer the hexadecimal format and not base58 because even if the first one it's longer (64 hexa characters instead of 51/52 base58 characters)  , you don't have to deal with capital or small letters Smiley  especially for cold paper wallets it is prefered this method

waiting for a replay from you Cheesy i will keep my prommise and send a tip/donation to you as soon as i recover my private key
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Hi, is there a way for this tool to work for TRX private key? My private key is messing 4 characters at the end of it.

This project is designed to only work for bitcoin but it may be used for any altcoin that is similar to bitcoin.
I took a quick look at Tron's source code and it seems like it is using the same curve (secp256k1) as bitcoin and has base58 encoding although I couldn't figure out if they use the same encoding for WIFs. If your key encoding is hexadecimal then it doesn't work but if it is a base-58 encoded string with a checksum and same additional bytes then you can use this tool.
newbie
Activity: 1
Merit: 0
Hi, is there a way for this tool to work for TRX private key? My private key is messing 4 characters at the end of it.

Thank you
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
I ran some tests with different compressed keys with 3 missing characters at different locations while editing the code to limit the search space (to shorten the time for tests), I couldn't figure out the issue since they all succeed.


https://github.com/Coding-Enthusiast/FinderOuter/commit/e949a711dc5dfcbaa01d393ebaa32e3ea8911507
With this commit, when an invalid but full key (no missing characters) is typed in that text box, the message is more clear about where the problem was.
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
Do you know the reason for the key being invalid (for example is it the checksum, invalid character or out of range value)? Or is it just producing a different address? (You could use bitaddress.org for decoding, it will tell you the reason).
I tried Electrum and Mycelium, both didn't tell me the reason. I didn't use bitaddress because I couldn't run it offline at that moment. I guess the checksum must have failed.
The resulting key was the original, with 2 characters added at one place, and further one 1 character added. I was very hopeful at that moment that it would have found the the correct key.
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Update: After 4.5 hours, it produced a private key! But the key is invalid, so something must have gone wrong in checking the key.
Any idea why this could have happened?

Do you know the reason for the key being invalid (for example is it the checksum, invalid character or out of range value)? Or is it just producing a different address? (You could use bitaddress.org for decoding, it will tell you the reason).
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
Update: After 4.5 hours, it produced a private key! But the key is invalid, so something must have gone wrong in checking the key.
Any idea why this could have happened?
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
I did not know that! As a Linux user, I picked the only tar.gz available, and didn't look at the zip. That indeed gave me the source code, and I followed instructions there.

It is GitHub that automatically adds the repository's source code as both a zip file and a tarball whenever a new release is published there (both named Source code) so that the source code at that exact commit is always available under the same binaries.
In any case, thanks for the report. I've added a short explanation to the ReadMe file that can hopefully prevent similar future confusions.
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
hmm. Did you use the released zip file under "releases" and run it on Linux or did you compile it yourself? Because I can see you needing to install extra stuff for compiling (SDKs, Nuget packages,...) but there is no need to download anything else if you run the compiled version since it is self contained meaning even the framework (.net core) is included.
I did not know that! As a Linux user, I picked the only tar.gz available, and didn't look at the zip. That indeed gave me the source code, and I followed instructions there.
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Why do all of these bruteforce things run on Linux/Ubuntu?  Cheesy
FinderOuter can run on any operating system. You just have to compile it yourself if you want to run it on Windows since I've only released the compiled version for 64-bit Linux OS. I can release more compiled versions if there is an overwhelming demand for it but security-wise it is best if you run it on a clean Linux specially if you are a windows user and want to use the same OS you use daily and may already be infected without you even knowing it.

Why do all of these bruteforce things run on Linux/Ubuntu?  Cheesy
Lol, I actually had to install a bunch of Microsoft tools to run it, so I guess it works on Windows too.
hmm. Did you use the released zip file under "releases" and run it on Linux or did you compile it yourself? Because I can see you needing to install extra stuff for compiling (SDKs, Nuget packages,...) but there is no need to download anything else if you run the compiled version since it is self contained meaning even the framework (.net core) is included.
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
Why do all of these bruteforce things run on Linux/Ubuntu?  Cheesy
Lol, I actually had to install a bunch of Microsoft tools to run it, so I guess it works on Windows too.
legendary
Activity: 2198
Merit: 1150
Freedom&Honor
Why do all of these bruteforce things run on Linux/Ubuntu?  Cheesy
Only btcrecover is for Windows  Undecided
Dunno if it's better to run this on a VM Linux or use btcrecover on Windows?
I have an integrated GPU :S
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
Thanks for the improvements! It's currently running, I expect it to take around 18 hours. I didn't give the VM full CPU access (80% of 2 CPUs) so it shouldn't bother me too much.

I don't have high hopes though: I tested all possible combinations of JBRai's private key with 54 characters, and none of them lead to a valid private key. I've seen what he wrote down, and apart from too many or not enough characters, he also has terrible handwriting, which makes it likely there are more mistakes.
If this doesn't produce any result, I'll stop trying. It's not the first time I've seen someone lose access to funds because of bad hand writing. And that's why I always try to recover anything before funding a key: test your backups!

Update: After 4.5 hours, it produced a private key! But the key is invalid, so something must have gone wrong in checking the key.
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Version 0.1.1 is released.
https://github.com/Coding-Enthusiast/FinderOuter/releases/tag/v0.1.1.0
See changelog for more information.
Most notable changes are:
- A new feature for a special case where a compressed private key has 3 missing characters at unknown locations.
- Some small optimizations, bug fixes and improvements.


Future ideas (as soon as I publish my Bitcoin.Net library):
- Recovering mini private keys with missing characters (eg. a damaged physical coin)
- Converting versioned private keys (BIP-178 and a couple of Electrum versions) to normal keys
- Finding BIP-32 paths by only having the mnemonic/xkeys and a single child address/key
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
I'm trying to recover JBRai's private key with 49 out of 52 characters known. I've installed The FinderOuter (in a VM), but it asks for the locations of the missing characters.
Any chance you can add a loop to search all possible locations for the 3 missing characters? That is, assuming the rest of JBRai's key is correct.

I've tested it with a known key: it takes about 2 seconds to find 3 missing characters. To do the same on 3 unknown locations would take about 58^3 times longer, which means several days, but it'll still be manageable.

I'm not a math expert but I think it should take 20,825 times longer (583=195,112)*. There is also the fact that the underlying algorithm will also be different that lacks most of the pre-computation that the current algorithm for known missing places has so it will be slightly slower. However, as I said before I have no idea how to generalize this so I hardcoded the heck out of it (only for this special case: missing 3 chars, probably will add a couple more smaller cases later), the benefit of it is that I know how to run it in parallel so the more threads your CPU has the faster it would run and I don't think 4 billion is going to take that long to finish.

* The problem with not knowing the missing places is that you'll have to first select different locations then loop through the 58 possible characters and keys are long (52/51 characters) so things get out of hand quickly. Example:
Code:
1 missing char (assuming compressed key):
  known location   -> 58              =            58
  unknown location -> 51*58           =         2,958
2 missing chars
  known location   -> 58*58           =         3,364
  unknown location -> 1,275*58*58     =     4,289,100
3 missing chars
  known location   -> 58*58*58        =       195,112
  unknown location -> 20,825*58*58*58 = 4,063,207,400

20,825 in last example (like others) is calculated using combination in mathematics which is n!/[k!(n-k)!] where n is 51 for compressed keys (52 char long with first one fixed to K or L) and k is 3 (the 3 missing places).

https://github.com/Coding-Enthusiast/FinderOuter/commit/73e8596993cdf68be49a4f20ba52afa2b1c1a5b1
Here is a preview, will publish a released version soon (the checkbox needs to be selected to enable this "special" case):
legendary
Activity: 3262
Merit: 16303
Thick-Skinned Gang Leader and Golden Feather 2021
Quote from another topic:
Thanks is there a tool i can use to recover ? as i must have missed a few characters off or could someone help me via private message  as i do not want to disclose it on here !!
You could use The FinderOuter. Compile it from source code or download the released version, run it offline. The program only has 2 options for now and you need the second option ("Missing Base58"). I believe the rest is self explanatory.
It should take a second to find the right key(s) with 3 missing characters.
I'm trying to recover JBRai's private key with 49 out of 52 characters known. I've installed The FinderOuter (in a VM), but it asks for the locations of the missing characters.
Any chance you can add a loop to search all possible locations for the 3 missing characters? That is, assuming the rest of JBRai's key is correct.

I've tested it with a known key: it takes about 2 seconds to find 3 missing characters. To do the same on 3 unknown locations would take about 58^3 times longer, which means several days, but it'll still be manageable.
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Will it verify messages from Segwit addresses?
Of course it will.
The 3 basic script types used in signing are supported: P2PKH (address starting with 1), P2WPKH (address starting with bc1) and P2SH-P2WPKH (address starting with 3).
I don't think there is anything else left apart from BIP-322 which I will add soon.
legendary
Activity: 2212
Merit: 5622
Non-custodial BTC Wallet
  • Verifying bitcoin message signatures and in case of failure it can try to find where the problem was.

Will it verify messages from Segwit addresses?
It is still a problem, only Electrum does that until now, as far as I know.

I am only able to sign from legacy addresses using most software
legendary
Activity: 1039
Merit: 2783
Bitcoin and C♯ Enthusiast
Next release (0.2.0) is probably going to take some more time as I am busy releasing Denovo (20k LoC so far) these days and the next feature requires optimization of ECC. However I keep releasing the code which could be used if you compile it yourself.
New feature is Missing Mnemonic which is when you have a seed phrase missing a couple of words.
There is also a changelog which helps you follow all the changes (and commits).
There is also a continuous integration workflow to ensure successful builds and deployment.

you should consider scenario when user missing few character but don't know location of the missing character.
I haven't been able to come up with a way to generalize this. The alternative is to hard code it for each case individually (one method for missing 1 char, another for 2 and so on) which I don't really like. I'm going to place it in an issue #1 until I can come up with a neat solution.
Pages:
Jump to: