Giter Site home page Giter Site logo

rjonesmoore1965 / bitcoin_wallet_exporter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kleetus/bitcoin_wallet_exporter

0.0 0.0 0.0 23.11 MB

Replacement to/for pywallet. Lovingly hand-coded in C, 100% in program memory and data segment.

Shell 0.11% JavaScript 0.12% C++ 1.62% Perl 0.82% C 12.07% PHP 0.01% Java 6.08% Tcl 3.79% R 0.01% C# 2.59% Assembly 0.01% OpenEdge ABL 0.10% Awk 0.01% CSS 0.09% Makefile 0.04% HTML 71.97% XS 0.29% M4 0.01% Roff 0.25% ASP.NET 0.03%

bitcoin_wallet_exporter's Introduction

Purpose

Intended to replace pywallet. The purpose is to export/extract all key-related data from a Bitcoin "wallet.dat" file.

If you ever needed to pluck out data from a Bitcoin Core wallet.dat file, you know it isn't as simple as cracking open a text editor or grepping through a file. You need to understand (at least to some small degree) the structure of this file and the serialization formats contained within it.

Clearly, this task is VERY SENSITIVE in nature. DO NOT feed your wallet into just any exporter tool. You should read this code and understand what it is doing. If you can't do that, then ask a trusted friend to help you out.

Security measures used

  1. Entire program is < 400 lines of straight-forward C code.
  2. Berkeley DB is the only dependency. If included Makefile is used, then libdb.a will be linked statically.
  3. All memory used within the program will be resident in the program data region, there is no way for sensitive memory to be paged out into not secure swap files or compressed elsewhere.
  4. The program does not ask for or otherwise require a master passphrase in order to do its job. It simply writes a json file with cipherText for later processing by other tools.
  5. The encrypted master passphrase, salt, hash paramaters and key data are exported to a file of your choice to a file or stdout.

Building

Note: If building this tool with the included Makefile, please note that NO CRYPTO ROUTINES are available despite contrary messages from autoconf. Stupid gov't regulations prevent exporting such source code. If you need crypto routines, please obtain Berkeley DB version 4.8.30 directly from Oracle or Homebrew (if Mac) or your OS vendor (e.g. apt-get install bdb). Sorry! I've placed an alt Makefile for this purpose assuming that you have a dynamic library in a spot where the linker can find it.

You will need standard C header files (stdlib.h, string.h, stdarg.h, stdio.h) as well as a C library such as LibSystem.B.dylib (mac), glibc (linux), libc (unix). Most systems have these things. On mac, you may need Xcode and system headers. Please get this from the app store. Then,

Mac-only

$ xcode-select --install

Ensure you have headers in /usr/local/include

Linux is fairly dependent on what distro you use.

Mac/Unix/Linux

$ make

Usage

Simple

$ exporter -d wallet.dat -silent > output.json

Give me details but output json to a file

$ exporter -d wallet.dat -o output.json

As input to gpg

$ exporter -d wallet.dat -silent | gpg -e -r bob > output.json.gpg

bitcoin_wallet_exporter's People

Contributors

kleetus avatar rjonesmoore1965 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.