/walletlib

Unified interface to work with cryptocurrency wallet.dat, .wallet, .key files. Can automatically attempt to figure out what type of coin a .dat wallet contains via its prefix.

Primary LanguagePythonThe UnlicenseUnlicense

walletlib

PyPI - Python Version

Unified interface to programmatically open and extract data from cryptocurrency wallet backup files

Quick Start with Docker - Start here if you simply need to dump the contents of a wallet file

Make sure that the files you are trying to open are in one directory.

$ docker pull jimzhou/walletlib:latest
$ docker run -v /path/to/your/wallet/folder:/app jimzhou/walletlib:latest wallet.dat -o wallet_output.txt --keys -p password

Output file will be in the directory with the wallet. --keys and -p are optional

Quick Start with installation

This module requires Python 3.7+

Note: prior to installation, make sure that BerkeleyDB 4.8+ is installed.

With Homebrew:

$ brew install berkeley-db@4

On Ubuntu

$ sudo apt-get install libdb++-dev python3-bsddb3
$ pip install walletlib

A convenient cli script is available after installation.

$ python -m dumpwallet wallet.dat -o output.txt

or

$ dumpwallet wallet.dat -o output.txt
$ dumpwallet wallet-protobuf -o output.txt --keys

Features

  • Automatic reading of version byte and WIF prefix from default keys
  • Dumping just keys or all data
  • Read only access of wallet files

Installation

The simplest way to install walletlib is using pip.

$ pip install walletlib

You can also clone this repo and then run

$ python setup.py install

Usage

import walletlib

wallet = walletlib.Walletdat.load("path/to/wallet.dat")
wallet.parse(passphrase="password")
wallet.dump_all(filepath="output.txt")
wallet.dump_keys(filepath="output_keys.txt")

Bitcoinj wallets:

import walletlib

wallet = walletlib.ProtobufWallet.load("path/to/wallet-protobuf")
wallet.parse()
wallet.dump_all(filepath="output.txt")
wallet.dump_keys(filepath="output_keys.txt")

Roadmap

  • wallet.dat
    • Encrypted keys
    • Auto-identify prefix
    • Decrypt encrypted keys
    • p2pkh Wallets
    • Bech32 wallets
  • Bitcoinj/Dogecoinj/Altcoinj wallets
    • Open unencrypted wallet-protobuf/multibit .wallet/.key files
    • Decrypt encrypted wallets
  • Coinomi protobuf wallets
  • Blockchain.com wallet.aes.json
  • Documentation