Bitcoin Forum
January 20, 2021, 02:03:16 AM *
News: Latest Bitcoin Core release: 0.21.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 »  All
  Print  
Author Topic: The FinderOuter, a bitcoin recovery tool (v0.6.0 2020-12-24)  (Read 1329 times)
Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
January 01, 2020, 05:07:03 AM
Last edit: December 24, 2020, 05:37:55 AM by Coding Enthusiast
Merited by Welsh (25), LoyceV (20), ETFbitcoin (19), malevolent (16), joniboini (15), Vod (10), vapourminer (10), hugeblack (6), bitmover (6), OmegaStarScream (5), o_e_l_e_o (4), OgNasty (3), buwaytress (2), Heisenberg_Hunter (2), fillippone (2), hosseinimr93 (1), MagicByt3 (1)
 #1

Table of Contents

__________

Introduction
The FinderOuter is a bitcoin recovery tool that focuses on making the recovery process easy for everyone with any level of technical knowledge. It uses a simple user interface with a list of recovery options. Each option has an explanation and many hints helping user figure out what is needed. It always consist of filling some text boxes and selecting some options and finally clicking the Find button. This eliminates the need to read long guide pages on how to use the application. Each option also has some example cases that can show a simple preview of how each option should be filled for different cases.
Each recovery option and their parts are written from scratch and all those parts down to the basic cryptography used (such as SHA, ECC,...) are specialized for maximum efficiency.

Thanks to .Net core and AvaloniaUI this tool can run on all operating systems.
This project is written fully in C# and is 100% open source.
FinderOuter is still in beta and under development. New features are slowly added and everything is optimized.
Contribution is always welcome. Please report any bugs you find or any improvement suggestions you have by creating a new issue.


How to use
  • Select an option from this list depending on what you want to recover
  • Read the instructions
  • Fill in the required information
  • Select appropriate available options according to the entered data
  • Some parts have tooltips for extra explanation
  • Click Find button
  • See the progress and the reports





Features
Check out ReadMe file on GitHub for the full list with all the details.
  • Verifying bitcoin message signatures and in case of failure it can try to find where the problem was.
  • Recovering any base-58 encoded string with a checksum that has some missing characters (works for private keys, addresses and BIP-38 encrypted keys).
  • Recovering hexadecimal (base-16) encoded private keys that have some missing characters.
  • Recovering mini-privatekeys with missing characters
  • Recovering mnemonics (seed phrases) that have some missing words
For more information please visit the GitHub repository.



Links
Source code on GitHub: https://github.com/Coding-Enthusiast/FinderOuter
Want to help?
Review the code and leave your feedback in this topic about the code, features any possible bug(s), ...
Contributions are always welcome. Here is the conventions that FinderOuter adheres to.

If You found this tool helpful consider making a donation:
1Q9swRQuwhTtjZZ2yguFWk7m7pszknkWyk
bc1q3n5t9gv40ayq68nwf0yth49dt5c799wpld376s



To Do List (aka future features!)
  • [ ]Optimize, Optimize and more Optimize.
  • [ ]Utilize Parallelism and SIMD.
  • [ ]Add support for other base-58 strings such as extended private keys.
  • [ ]Add BIP32 path finder.
  • [ ]Add password recovery.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1611108196
Hero Member
*
Offline Offline

Posts: 1611108196

View Profile Personal Message (Offline)

Ignore
1611108196
Reply with quote  #2

1611108196
Report to moderator
1611108196
Hero Member
*
Offline Offline

Posts: 1611108196

View Profile Personal Message (Offline)

Ignore
1611108196
Reply with quote  #2

1611108196
Report to moderator
Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
January 01, 2020, 05:07:18 AM
Last edit: December 24, 2020, 05:39:21 AM by Coding Enthusiast
 #2

Major Updates (see commits on github for details)
  • [2020-01-01] Initial Release of Beta (0.1.0) Happy New Year!
  • [2020-02-19] v 0.1.1 finding private key with 3 missing characters at unknown locations.
  • [2020-03-10] v 0.1.2 recovery of hex private keys is now supported.
  • [2020-05-11] v 0.2.0 recovery of addresses and BIP-38 keys are now supported + move backend to Bitcoin.Net.
  • [2020-05-30] v 0.3.0 recovery of mini private keys is now supported.
  • [2020-06-30] v 0.4.0 recovery of BIP-39 mnemonics is now supported.
  • [2020-07-23] v 0.4.1 adds example button.
  • [2020-09-17] v 0.5.0 the parallelism update increasing speed from 10% to more than 1800% utilizing the whole CPU power.
  • [2020-12-24] v 0.6.0 recovery of Electrum mnemonic and more options in Base16 recovery.


Complete change-log: https://github.com/Coding-Enthusiast/FinderOuter/blob/master/CHANGELOG.md

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
ETFbitcoin
Legendary
*
Offline Offline

Activity: 1750
Merit: 2644


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
January 01, 2020, 06:49:34 PM
Merited by Coding Enthusiast (3), buwaytress (1)
 #3

I see you're switching to .NET Core and user don't need to deal with dependency at all. I can even run it on niche Linux distro Smiley

As for finding missing Base58, IMO you should consider scenario when user missing few character but don't know location of the missing character.

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
January 02, 2020, 02:41:23 AM
 #4

I see you're switching to .NET Core and user don't need to deal with dependency at all. I can even run it on niche Linux distro Smiley
Yeah, netcore has been a fantastic decision by Microsoft. It is not only runs on multiple OS/platforms but also is fully open source and also highly optimized.
I'll slowly migrate all of my previous projects (eg. transaction tool) to netcore too but as a new project called Denovo.

As for finding missing Base58, IMO you should consider scenario when user missing few character but don't know location of the missing character.
Thanks for your feedback. I'll add this to my to-do list.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
buwaytress
Legendary
*
Offline Offline

Activity: 1596
Merit: 1475


Join the world-leading crypto sportsbook NOW!


View Profile
January 02, 2020, 10:39:03 AM
 #5

Cool beans. I suppose we'll just have to look for those inevitable threads of people who've lost access and see if this tool will help them the way it's designed to (opening it up, putting in a line and clicking go). Still needs a bit of basic understanding for the casual user though (that includes people like me).

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
January 16, 2020, 12:27:33 PM
 #6

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.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
bitmover
Legendary
*
Offline Offline

Activity: 1092
Merit: 2186


www.Crypto.Games: Multiple coins, multiple games


View Profile WWW
January 16, 2020, 01:01:28 PM
 #7

  • 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

▄▄█████████▄▄
▄█████████████████▄
▄████▀▀▀▀█████▀▀▀▀████▄
████▀██████▀█▀██████▀████
██████████████████████████
▐█████▄███████████████▄█████▌
▐███████▄▄█████████▄▄███████▌
▐██████▀█████████████▀██████▌
▐███████████████████████████▌
▀██████████████████████▀
▀████▄████▄▀▀▄████▄████▀
▀███████▀███▀███████▀
▀▀█████████████▀▀
  ▀▀▀▀▀▀▀▀▀
|
★.★.★   8 GAMES   ★   WAGERING CONTEST   ★   JACKPOTS   ★   FAUCET   ★.★.★
  ▄▄▄
▄█ ▄▀█▄
██ ▄▀██
 ▀▄▄█▀
  ▄▄▄
▄█▀ ▀█▄
██   ██
 ▀█▄█▀
  ▄▄▄
▄█▀█▀█▄

 ▀███▀
  ▄▄▄
▄██▀▄█▄
██▀▄███
 ▀▄▄▄▀
  ▄▄▄
▄█ ▄▀█▄
██ █ ██
 ▀▄▄█▀
  ▄▄▄
▄▀▄▄▄▀▄
█▀▀▀▀▄█
 ▀███▀
  ▄▄▄
▄▀   ▀▄
█  █▄ █
 ▀▄██▀
  ▄▄▄
▄█▀ ▀█▄
██   ██
 ▀█▄█▀
  ▄▄▄
▀ █ ▀
▀▀▄▀▀
 ▀▄█▄
  ▄▄▄
▄█ ▄▀█▄
██ ▄▀██
 ▀▄▄█▀
|
Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
January 16, 2020, 01:11:21 PM
Merited by bitmover (1)
 #8

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.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
ETFbitcoin
Legendary
*
Offline Offline

Activity: 1750
Merit: 2644


NotYourKeys.org - Not Your Keys, Not Your Bitcoin


View Profile
January 19, 2020, 07:22:16 PM
 #9

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.

That's very ugly method. One method that work is using permutation function, but it would create tons of duplicate due to multiple asterisk.

But on other side, it's not realistic to brute-force Base58 with lots of missing chars due to complexity (58^n).

LoyceV
Legendary
*
Offline Offline

Activity: 2100
Merit: 7414


Thick-Skinned Gang Leader


View Profile WWW
February 16, 2020, 10:17:50 PM
Merited by Coding Enthusiast (3)
 #10

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.

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
February 18, 2020, 06:15:41 PM
Merited by LoyceV (12), hugeblack (4)
 #11

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):

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
February 19, 2020, 07:31:37 AM
Merited by LoyceV (2), hugeblack (2)
 #12

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

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
LoyceV
Legendary
*
Offline Offline

Activity: 2100
Merit: 7414


Thick-Skinned Gang Leader


View Profile WWW
February 19, 2020, 10:21:49 AM
Last edit: February 19, 2020, 06:38:43 PM by LoyceV
 #13

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.

iluvbitcoins
Legendary
*
Offline Offline

Activity: 2128
Merit: 1134


Freedom&Honor


View Profile WWW
February 20, 2020, 02:34:56 PM
 #14

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

Looking for a signature campaign.
LoyceV
Legendary
*
Offline Offline

Activity: 2100
Merit: 7414


Thick-Skinned Gang Leader


View Profile WWW
February 20, 2020, 03:01:20 PM
 #15

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.

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
February 21, 2020, 07:04:31 AM
 #16

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.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
LoyceV
Legendary
*
Offline Offline

Activity: 2100
Merit: 7414


Thick-Skinned Gang Leader


View Profile WWW
February 21, 2020, 10:04:03 AM
Merited by Coding Enthusiast (2)
 #17

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.

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
February 21, 2020, 02:00:57 PM
 #18

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.

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
LoyceV
Legendary
*
Offline Offline

Activity: 2100
Merit: 7414


Thick-Skinned Gang Leader


View Profile WWW
February 21, 2020, 03:03:48 PM
 #19

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?

Coding Enthusiast
Legendary
*
Offline Offline

Activity: 900
Merit: 1738


Bitcoin and C♯ Enthusiast


View Profile WWW
February 21, 2020, 06:47:58 PM
 #20

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).

Projects List+Suggestion box
Donate: 1Q9s or bc1q
|
|
|
FinderOuter(0.6.0)Ann-git
Denovo(0.1.0)Ann-git
Bitcoin.Net(0.8.0)Ann-git
|
|
|
BitcoinTransactionTool(0.11.0)Ann-git
WatchOnlyBitcoinWallet(3.2.1)Ann-git
SharpPusher(0.10.0)Ann-git
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!