Git Product home page Git Product logo

finderouter's Introduction

Build Status License Target Downloads

The FinderOuter

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.

Preview

  1. Select an option from this list depending on what you want to recover
  2. Read the instructions
  3. Fill in the required information
  4. Select appropriate available options according to the entered data
  5. Some parts have tooltips for extra explanation
  6. Click Find button
  7. See the progress and the reports
  8. Progressbar showing the progress percentage shows up for options that use multi-threading (take more than a couple of seconds to complete)
  9. All recovery options come with examples, click this button repeatedly to cycle through them

Preview

Available options

1. Message signature verification

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.

2. Missing Base-58 characters

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.

3. Missing Base-16 characters

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.

4. Missing mini-privatekey characters

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.

5. Missing mnomonic (seed) words

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.

Future plans

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

How to use The FinderOuter

Step 1: Preparation

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:

  1. Download Ubuntu or any other Linux OS (all FinderOuter releases are tested on 64-bit Ubuntu 20.04 before being published)
  2. Verify Ubuntu's iso (link)
  3. Disconnect network cable (to remain offline)
  4. Burn that ISO on a DVD or could be a USB disk (link)
  5. Take the steps in next section (Download and build)
  6. After you are done, shut down Ubuntu and remove the medium used in step 4

Step 2: Download and build

If you have Visual Studio you can clone this repository and build the included solution file.
Building is also possible through these steps:

  1. Get Git: https://git-scm.com/downloads
  2. 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)
  3. clone FinderOuter git clone https://github.com/Coding-Enthusiast/FinderOuter.git
  4. 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.

Step 3: Run

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

  1. Provide execute permissions chmod 777 ./FinderOuter
  2. Execute application ./FinderOuter

Contributing

Please check out conventions for information about coding styles, versioning, making pull requests, and more.

Donations

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

finderouter's People

Contributors

coding-enthusiast avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.