All Projects → esneider → indy

esneider / indy

Licence: MIT License
🕵️‍♂️ Find and sweep all the funds spendable by your bitcoin private key.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to indy

btclib
btclib: a python3 library for 'bitcoin cryptography'
Stars: ✭ 60 (+46.34%)
Mutual labels:  electrum, segwit
docker-electrumx
Run an Electrum server with one command
Stars: ✭ 87 (+112.2%)
Mutual labels:  electrum, electrum-server
lingose-notation
The best mnemonics and notational system of English words.
Stars: ✭ 17 (-58.54%)
Mutual labels:  mnemonics
ubuntu-node-box
Build a bitcoin node box from a fresh installation of Ubuntu 18.04
Stars: ✭ 35 (-14.63%)
Mutual labels:  electrum
bitcoin-kit-android
Comprehensive Bitcoin development library for iOS, implemented on Swift. SPV wallet implementation for Bitcoin, Bitcoin Cash, Litecoin and Dash blockchains. Fully compliant with existing standards and BIPs.
Stars: ✭ 102 (+148.78%)
Mutual labels:  hd-wallet
hdwallet
HD wallet BIP-32 related key derivation utilities.
Stars: ✭ 20 (-51.22%)
Mutual labels:  hd-wallet
rust-electrum-client
Bitcoin Electrum client library. Supports plaintext, TLS and Onion servers.
Stars: ✭ 26 (-36.59%)
Mutual labels:  electrum
wallet-address-validator
Useful library for validation of Bitcoin, Litecoin, Ethereum and other cryptocoin addresses
Stars: ✭ 240 (+485.37%)
Mutual labels:  segwit
moonshine
Moonshine is a homebrewed, open-source, non-custodial, Bitcoin wallet for iOS & Android.
Stars: ✭ 56 (+36.59%)
Mutual labels:  electrum
tokucore
A Simple, Powerful, Modular Library for Bitcoin Blockchain As a Service(BAAS)
Stars: ✭ 61 (+48.78%)
Mutual labels:  segwit
bitcoinj
BitcoinJ: Samourai Wallet and Sentinel
Stars: ✭ 18 (-56.1%)
Mutual labels:  segwit
btc-address-generator
Bitcoin address generator (bech32, segwit, paper wallets, BIP39 seed, etc.)
Stars: ✭ 80 (+95.12%)
Mutual labels:  segwit
hd-address
An extensible HD Wallet Address management utility
Stars: ✭ 22 (-46.34%)
Mutual labels:  hd-wallet
bitcoin-address-validator
PHP package to validate legacy, segwit, native segwit (bech32) and taproot Bitcoin addresses
Stars: ✭ 30 (-26.83%)
Mutual labels:  segwit
Multy-Core
Cross-platform mobile-first library for HD wallets and creating raw transactions of Bitcoin and Ethereum.
Stars: ✭ 23 (-43.9%)
Mutual labels:  hd-wallet
nomenclate
An indexing server for Handshake addresses and auctions
Stars: ✭ 39 (-4.88%)
Mutual labels:  electrum
Electrum
Electrum Bitcoin Wallet
Stars: ✭ 5,353 (+12956.1%)
Mutual labels:  electrum
Bitcoin Wallet
Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required.
Stars: ✭ 2,672 (+6417.07%)
Mutual labels:  segwit
Bitcoinj
A library for working with Bitcoin
Stars: ✭ 4,162 (+10051.22%)
Mutual labels:  segwit
caravand-fullnode
Type-safe bitcoin full-node
Stars: ✭ 15 (-63.41%)
Mutual labels:  segwit

Indy: the ultimate recovery tool

About

Recovering funds from a wallet using just the mnemonic phrase has historically been a difficult problem. The main reason being that different wallets use different derivation paths and script types. Sadly, the mnemonic format doesn't document this and other important metadata needed during the recovery process.

Indy intends to cover the gap left by the standard by making the recovery of funds from a mnemonic trivial. Just input your mnemonic and let the tool guess the derivation path used by the wallet.

You can use Indy to sweep all the funds to a destination address of your choice.

Features

  • Supports sweeping funds from mnemonics, xprivs, and xpubs (for xpubs it will just find the UTXOs)
  • Supports mnemonics in English, Chinese, Spanish, French, Italian, Japanese and Korean
  • Supports all the derivation paths and address types from the wallets listed in walletsrecovery.org
  • Supports customizing the address gap limit and the account gap limit
  • Supports using a custom electrum server

Demo

How it works

Indy uses electrum servers to try every possible combination of known derivation paths and script types. Once the relevant path and script type combinations are detected, the tool will proceed to find all the UTXOs for those combinations. After all funds are found, if you desire so, Indy can create a transaction that will sweep them to an address of your choosing.

Some wallets use a custom address gap limit (or none at all), or really high account numbers, so you can choose to override these parameters.

Finally, notice that this tool is only useful for single key wallets. If you are using a multisig or lightning wallet, then you cannot recover the funds with just the mnemonic.

Installation

git clone https://github.com/esneider/indy && cd indy
pip3 install -r requirements.txt
python3 indy.py --help

Usage

usage: indy.py [-h] [--address <address>] [--broadcast] [--fee-rate <rate>]
               [--address-gap <num>] [--account-gap <num>] [--host <host>]
               [--port <port>] [--protocol {t,s}] [--no-batching]
               key

Find and sweep all the funds from a mnemonic or bitcoin key, regardless of the
derivation path or address format used.

positional arguments:
  key                  master key to sweep, formats: mnemonic, xpriv or xpub

optional arguments:
  -h, --help           show this help message and exit

sweep transaction:
  --address <address>  craft a transaction sending all funds to this address
  --broadcast          if present broadcast the transaction to the network
  --fee-rate <rate>    fee rate to use in sat/vbyte (default: next block fee)

scanning parameters:
  --address-gap <num>  max empty addresses gap to explore (default: 20)
  --account-gap <num>  max empty account levels gap to explore (default: 0)

electrum server:
  --host <host>        hostname of the electrum server to use
  --port <port>        port number of the electrum server to use
  --protocol {t,s}     electrum connection protocol: t=TCP, s=SSL (default: s)
  --no-batching        disable request batching

Credits

This tool was created after reading this twitter thread by @aantonop. Many thanks for the idea and the relentless contributions to the Bitcoin community!

Also, Indy stands on the tremendous effort done by @NVK and @J9Roem documenting the derivation paths for many wallets at walletsrecovery.org. It belongs in a museum!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].