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.
- 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
- Progressbar showing the progress percentage shows up for options that use multi-threading (take more than a couple of seconds to complete)
- All recovery options come with examples, click this button repeatedly to cycle through them
User can enter a message signature here to verify it. In case there is a problem with the message (except being an actually invalid signature), the code can search to find the common issues that some signing tools have and fix them.
This option helps recover any base-58 encoded string with a checksum that is missing some characters. For example a damaged
paper wallet where some characters are erased/unreadable. The position of missing characters must be known.
It works for (1) WIFs (Base-58 encoded private key)
(2) Addresses (Base-58 encoded P2PKH or P2SH address)
(3) BIP-38 (Base-58 encoded encrypted private key).
There is also a "special case" where a compressed private key is missing 3 characters at unknown positions.
This option is similar to previous feature but works for base-16 (hexadecimal) private keys. Since there is no checksum in this encoding it requires an additional input to check each permutation against. It accepts any address type and public keys. This option is slower in comparison because it uses ECC and that is not yet optimized.
This option is similar to 2 and 3 but works for mini-privatekeys (eg. SzavMBLoXU6kDrqtUVmffv). It requires the corresponding address or public key of the minikey to check each possible key against, as a result it is also slower since it depends on ECC and has 2 additional hashes.
This option works for both BIP-39 and Electrum mnemonics that have some missing words. It requires knowing one child (private/public) key or address created from that seed and the exact derivation path of it.
- Optimization is always at the top of the to-do list
- BIP-32 path finder (user has master key and at least one child key but doesn't know the derivation path)
- Armory paper backup recovery
- Password recovery (user knows some parts of his password but not all and has the encrypted wallet file)
- Converting versioned WIFs to regular WIFs (BIP-178 and early vertion 3 Electrum wallets)
Since this project deals with sensative information such as private keys, mnemonics, etc. the safest approach is to run it on a clean and air-gapped computer. Easiest way of acheiving that is using a live Linux:
- Download Ubuntu or any other Linux OS (all FinderOuter releases are tested on 64-bit Ubuntu 20.04 before being published)
- Verify Ubuntu's iso (link)
- Disconnect network cable (to remain offline)
- Burn that ISO on a DVD or could be a USB disk (link)
- Take the steps in next section (Download and build)
- After you are done, shut down Ubuntu and remove the medium used in step 4
If you have Visual Studio you can clone this repository and build the included
solution file.
Building is also possible through these steps:
- Get Git: https://git-scm.com/downloads
- Get .NET 5.0 SDK: https://www.microsoft.com/net/download (see
TargetFramework
in FinderOuter.csproj for the required .net version in case readme wasn't updated) - clone FinderOuter
git clone https://github.com/Coding-Enthusiast/FinderOuter.git
- Build using
dotnet build
Notes:
- Remember to build the project using
release
configuration to benefit from compiler optimizations. - .Net applications could be compiled as self contained which will
increase the size of the binray by including the required framework in it. That helps running the application on any system
(like the live Linux explained above) without needing to install .Net separately. The size can be reduced by selecting the
Trim unused assemblies
option. - This project can be built on and executed from any operating system
If for any reason you can't or don't want to build the project yourself, we provide compiled binaries under
releases. These are each version compiled as a self-contained
application but only for for 64-bit Linux operating system because we want to encourage security as explained in Preparation
section.
There are 3 files found in "releases" page, the bigger file on top is the compiled version and the other two named
Source code.zip
and Source code.tar.gz
are the project's source code that GitHub automatically adds. There is no need to
download the last two files if you are looking for compiled version, however they could be useful if you are trying to build the
same version at the given commit.
If you have compiled FinderOuter as SCD or downloaded the provided binaries there is no need to download .Net Core, otherwise it
has to be downloaded and installed on the system that needs to run FinderOuter.
FinderOuter can be run by using dotnet FinderOuter.dll
in console on any operating system (Windows, Mac and Linux) or by running
the FinderOuter.exe
on Windows.
Linux may require providing persmissions first
(more info):
- Provide execute permissions
chmod 777 ./FinderOuter
- Execute application
./FinderOuter
Please check out conventions for information about coding styles, versioning, making pull requests, and more.
If You found this tool helpful consider making a donation:
Legacy address: 1Q9swRQuwhTtjZZ2yguFWk7m7pszknkWyk
SegWit address: bc1q3n5t9gv40ayq68nwf0yth49dt5c799wpld376s