Skip to content
This repository was archived by the owner on Mar 30, 2022. It is now read-only.

Commit 814a711

Browse files
committed
improve user docs, especially for OS X
[ci skip]
1 parent 26b7d2c commit 814a711

File tree

9 files changed

+96
-44
lines changed

9 files changed

+96
-44
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
* Bitcoin wallet password recovery support for:
88
* [Armory](https://github.com/goatpig/BitcoinArmory)
9-
* [Bitcoin Classic](https://bitcoinclassic.com/)/[XT](https://bitcoinxt.software/)/[Core](https://bitcoincore.org/)
9+
* [Bitcoin Unlimited](https://www.bitcoinunlimited.info/)/[Classic](https://bitcoinclassic.com/)/[XT](https://bitcoinxt.software/)/[Core](https://bitcoincore.org/)
1010
* [MultiBit Classic](https://multibit.org/) and [MultiBit HD](https://beta.multibit.org/)
1111
* [Electrum](https://electrum.org/) (1.x and 2.x)
1212
* Most wallets based on [bitcoinj](https://bitcoinj.github.io/), including [Hive for OS X](https://mac.hivewallet.com/)
13-
* BIP-39 passphrases (e.g. [TREZOR](https://www.bitcointrezor.com/) passphrases)
13+
* BIP-39 passphrases (e.g. [TREZOR](https://www.bitcointrezor.com/) & [Ledger](https://www.ledgerwallet.com/) passphrases)
1414
* [mSIGNA (CoinVault)](https://ciphrex.com/products/)
1515
* [Blockchain.info](https://blockchain.info/wallet)
16-
* [pywallet --dumpwallet](https://github.com/jackjack-jj/pywallet) of Bitcoin Classic/XT/Core wallets
16+
* [pywallet --dumpwallet](https://github.com/jackjack-jj/pywallet) of Bitcoin Unlimited/Classic/XT/Core wallets
1717
* [Bitcoin Wallet for Android/BlackBerry](https://play.google.com/store/apps/details?id=de.schildbach.wallet) spending PINs and encrypted backups
1818
* [KnC Wallet for Android](https://kncwallet.com/) encrypted backups
1919
* [Bither](https://bither.net/)
@@ -34,13 +34,14 @@
3434
* BIP-32/39/44 compliant wallets, including:
3535
* [Mycelium for Android](https://play.google.com/store/apps/details?id=com.mycelium.wallet)
3636
* [TREZOR](https://www.bitcointrezor.com/)
37+
* [Ledger](https://www.ledgerwallet.com/)
3738
* [Bither](https://bither.net/)
3839
* [Blockchain.info](https://blockchain.info/wallet)
3940
* [Free and Open Source](http://en.wikipedia.org/wiki/Free_and_open-source_software) - anyone can download, inspect, use, and redistribute this software
4041
* Supported on Windows, Linux, and OS X
4142
* Support for Unicode passwords and seeds
4243
* Multithreaded searches, with user-selectable thread count
43-
* Experimental [GPU acceleration](docs/GPU_Acceleration.md) for Bitcoin Classic/XT/Core, Armory, and derived altcoin wallets
44+
* Experimental [GPU acceleration](docs/GPU_Acceleration.md) for Bitcoin Unlimited/Classic/XT/Core, Armory, and derived altcoin wallets
4445
* Wildcard expansion for passwords
4546
* Typo simulation for passwords and seeds
4647
* Progress bar and ETA display (at the command line)

TUTORIAL.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# *btcrecover* Tutorial #
22

33

4-
*btcrecover* is a free and open source multithreaded wallet password recovery tool with support for Armory, Bitcoin Classic/XT/Core, MultiBit (Classic and HD), Electrum (1.x and 2.x), mSIGNA (CoinVault), Hive for OS X, Blockchain.info (v1-v3 wallet formats, both main and second passwords), Bither, and Bitcoin & KNC Wallets for Android. It is designed for the case where you already know most of your password, but need assistance in trying different possible combinations. This tutorial will guide you through the features it has to offer.
4+
*btcrecover* is a free and open source multithreaded wallet password recovery tool with support for Armory, Bitcoin Unlimited/Classic/XT/Core, MultiBit (Classic and HD), Electrum (1.x and 2.x), mSIGNA (CoinVault), Hive for OS X, Blockchain.info (v1-v3 wallet formats, both main and second passwords), Bither, and Bitcoin & KNC Wallets for Android. It is designed for the case where you already know most of your password, but need assistance in trying different possible combinations. This tutorial will guide you through the features it has to offer.
55

66
If you find *btcrecover* helpful, please consider a small donation to help support my efforts:
77
**[17LGpN2z62zp7RS825jXwYtE7zZ19Mxxu8](bitcoin:17LGpN2z62zp7RS825jXwYtE7zZ19Mxxu8?label=btcrecover)**
@@ -407,7 +407,7 @@ As you can see, the Windows command prompt was incapable of rendering some of th
407407
1. Unzip the `btcrecover-master.zip` file, it contains a single directory named "btcrecover-master". Inside the btcrecover-master directory is the Python script (program) file `btcrecover.py`.
408408
2. **Make a copy of your wallet file** into the directory which contains `btcrecover.py`. On Windows, you can usually find your wallet file by clicking on the Start Menu, then “Run...” (or for Windows 8+ by holding down the *Windows* key and pressing `r`), and then typing in one of the following paths and clicking OK. Some wallet software allows you to create multiple wallets, for example Armory wallets have an ID which you can view in the Armory interface, and the wallet file names contain this ID. Of course, you need to be sure to copy the correct wallet file.
409409
* Armory - `%appdata%\Armory` (it's a `.wallet` file)
410-
* Bitcoin Classic/XT/Core - `%appdata%\Bitcoin` (it's named `wallet.dat`)
410+
* Bitcoin Unlimited/Classic/XT/Core - `%appdata%\Bitcoin` (it's named `wallet.dat`)
411411
* Bitcoin Wallet for Android/BlackBerry, lost spending PINs - Please see the [Bitcoin Wallet for Android/BlackBerry Spending PINs](#bitcoin-wallet-for-androidblackberry-spending-pins) section below.
412412
* MultiBit Classic - Please see the [Finding MultiBit Classic Wallet Files](#finding-multibit-classic-wallet-files) section below.
413413
* MultiBit HD - `%appdata%\MultiBitHD` (it's in one of the folders here, it's named `mbhd.wallet.aes`)
@@ -420,10 +420,16 @@ As you can see, the Windows command prompt was incapable of rendering some of th
420420
3. If you have a `btcrecover-tokens-auto.txt` file, you're almost done. Copy it into the directory which contains `btcrecover.py`, and then simply double-click the `btcrecover.py` file, and *btcrecover* should begin testing passwords. (You may need to rename your wallet file if it doesn't match the file name listed insided the `btcrecover-tokens-auto.txt` file.) If you don't have a `btcrecover-tokens-auto.txt` file, continue reading below.
421421
4. Copy your `tokens.txt` file, or your passwordlist file if you're using one, into the directory which contains `btcrecover.py`.
422422
5. You will need to run `btcrecover.py` with at least two command-line options, `--wallet FILE` to identify the wallet file name and either `--tokenlist FILE` or `--passwordlist FILE` (the FILE is optional for `--passwordlist`), depending on whether you're using a [Token File](#the-token-file) or [Passwordlist](#the-passwordlist). If you're using [Typos](#typos) or [Autosave](#autosave), please refer the sections above for additional options you'll want to add.
423-
6. What follows is an example on windows. Open a Command Prompt window, and type in the two lines below. The details for your system will be different, for example the download location may be different, or the wallet file name may differ, so you'll need to make some changes. Any additional options are all placed at the end of the *btcrecover* line.
423+
6. Here's an example for both Windows and OS X. The details for your system will be different, for example the download location may be different, or the wallet file name may differ, so you'll need to make some changes. Any additional options are all placed at the end of the *btcrecover* line.
424+
* *Windows*: Open a Command Prompt window (click the Start Menu and type "command"), and type in the two lines below.
424425

425-
cd \Users\Chris\Downloads\btcrecover-master
426-
C:\python27\python btcrecover.py --wallet wallet.dat --tokenlist tokens.txt --other-options...
426+
cd Downloads\btcrecover-master
427+
C:\python27\python btcrecover.py --wallet wallet.dat --tokenlist tokens.txt --other-options...
428+
429+
* *OS X*: Open a terminal window (open the Launchpad and search for "terminal"), and type in the two lines below.
430+
431+
cd Downloads/btcrecover-master
432+
python btcrecover.py --wallet wallet.dat --tokenlist tokens.txt --other-options...
427433

428434
After a short delay, *btcrecover* should begin testing passwords and will display a progress bar and an ETA as shown below. If it appears to be stuck just counting upwards with the message `Counting passwords ...` and no progress bar, please read the [Memory limitations](docs/Limitations_and_Caveats.md#memory) section. If that doesn't help, then you've probably chosen too many tokens or typos to test resulting in more combinations than your system can handle (although the [`--max-tokens`](#token-counts) option may be able to help).
429435

@@ -493,9 +499,9 @@ Once you have this information, run *btcrecover* normally, except that *instead*
493499

494500
When you run this, you will be prompted for your master public key (or your address), and your seed.
495501

496-
### GPU acceleration for Bitcoin Classic/XT/Core, Armory, and Litecoin-Qt wallets ###
502+
### GPU acceleration for Bitcoin Unlimited/Classic/XT/Core, Armory, and Litecoin-Qt wallets ###
497503

498-
*btcrecover* includes experimental support for using one or more graphics cards or dedicated accelerator cards to increase search performance. This can offer on the order of *100x* better performance with Bitcoin Classic/XT/Core or Litecoin-Qt wallets when enabled and correctly tuned. With Armory (which uses a GPU-resistant key derivation function), this can offer a modest improvement of 2x - 5x.
504+
*btcrecover* includes experimental support for using one or more graphics cards or dedicated accelerator cards to increase search performance. This can offer on the order of *100x* better performance with Bitcoin Unlimited/Classic/XT/Core or Litecoin-Qt wallets when enabled and correctly tuned. With Armory (which uses a GPU-resistant key derivation function), this can offer a modest improvement of 2x - 5x.
499505

500506
For more information, please see the [GPU Acceleration Guide](docs/GPU_Acceleration.md).
501507

btcrecover/btcrpass.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,7 @@ def return_verified_password_or_false(self, orig_passwords):
10951095
elif b58_privkey[2:6] == b"org." and b58_privkey[0] == b"\x0a" and ord(b58_privkey[1]) < 128:
10961096
for c in b58_privkey[6:14]:
10971097
# If it doesn't look like a lower alpha domain name of len >= 8 (e.g. 'bitcoin.'), break
1098-
if c > b"z" or (c < b"a" and c != "."):
1098+
if c > b"z" or (c < b"a" and c != b"."):
10991099
break
11001100
# If the loop above doesn't break, it looks like a domain name; we've found it
11011101
else:

btcrecover/btcrseed.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ def _performance_xpub():
724724

725725
############### BIP39 ###############
726726

727-
@register_selectable_wallet_class("Generic BIP39/BIP44 (Mycelium, TREZOR, Bither, Blockchain.info)")
727+
@register_selectable_wallet_class("Generic BIP39/BIP44 (Mycelium, TREZOR, Ledger, Bither, Blockchain.info)")
728728
class WalletBIP39(WalletBIP32):
729729

730730
# Load the wordlists for all languages (actual one to use is selected in config_mnemonic() )

docs/Extract_Scripts.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ You can download the entire *btcrecover* package from: <https://github.com/gurne
1717
If you'd prefer to download just a single extract script, please select the one for your wallet software from below, then right click and choose “Save link as...” or “Save target as...”:
1818

1919
* Armory - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-armory-privkey.py>
20-
* Bitcoin Classic/XT/Core - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-bitcoincore-mkey.py>
20+
* Bitcoin Unlimited/Classic/XT/Core - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-bitcoincore-mkey.py>
2121
* Bither - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-bither-partkey.py>
2222
* Blockchain main password - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-blockchain-main-data.py>
2323
* Blockchain second password - <https://github.com/gurnec/btcrecover/raw/master/extract-scripts/extract-blockchain-second-hash.py>
@@ -33,7 +33,7 @@ If you're on Windows, you will also need to install the latest version of Python
3333
### Table of Contents ###
3434

3535
* [Armory](#usage-for-armory)
36-
* [Bitcoin Classic/XT/Core (including pywallet dump files)](#usage-for-bitcoin-classicxtcore)
36+
* [Bitcoin Unlimited/Classic/XT/Core (including pywallet dump files)](#usage-for-bitcoin-unlimitedclassicxtcore)
3737
* [Bither](#usage-for-bither)
3838
* [Blockchain.info](#usage-for-blockchaininfo)
3939
* [Electrum (1.x or 2.x)](#usage-for-electrum)
@@ -87,7 +87,7 @@ If someone has one of your (decrypted) private keys and also has or gains access
8787
Armory automatically pre-generates 100 addresses and private keys before they are needed, which is why you can ask it to display a "new" address without a password. If you've asked for and then used 100 new addresses without providing a password, it's possible that Armory will be unable to provide a new address (without a password) as required by this procedure. If this is the case, you'll have no choice but to choose an already used address. To assist in choosing such an address, you can run `extract-armory-privkey.py list` from the command line to display a list of addresses available in the wallet which include an encrypted private key (including pre-generated addresses that may not be visible via the Armory GUI) along with the first and last known dates of use for each address. These dates of known use do not check the current block chain; you should always check a questionable address on <https://btc.blockr.io/> to check it's current balance before you use it with this procedure.
8888

8989

90-
### Usage for Bitcoin Classic/XT/Core ###
90+
### Usage for Bitcoin Unlimited/Classic/XT/Core ###
9191

9292
After downloading the script, **make a copy of your wallet.dat file into a different folder** (to make it easy, into the same folder as *extract-bitcoincore-mkey.py*). As an example for Windows, click on the Start Menu, then click “Run...”, and then type this to open your Bitcoin folder which contains your wallet.dat file: `%appdata%\Bitcoin`. From here you can copy and paste your wallet.dat file into a separate folder. Next you'll need to open a Command Prompt window and type something like this (depending on where the downloaded script is, and assuming you've made a copy of your wallet.dat into the same folder):
9393

@@ -99,7 +99,7 @@ You should get a message which looks like this as a result:
9999
Bitcoin Core encrypted master key, salt, iter_count, and crc in base64:
100100
lV/wGO5oAUM42KTfq5s3egX3Uhk6gc5gEf1R3TppgzWNW7NGZQF5t5U3Ik0qYs5/dprb+ifLDHuGNQIA+8oRWA==
101101

102-
If you instead have a dump file of a Bitcoin Classic/XT/Core wallet that was created by pywallet, just follow these same instructions except use the *extract-bitcoincore-mkey-from-pywallet.py* script instead.
102+
If you instead have a dump file of a Bitcoin Unlimited/Classic/XT/Core wallet that was created by pywallet, just follow these same instructions except use the *extract-bitcoincore-mkey-from-pywallet.py* script instead.
103103

104104
When you (or someone else) runs *btcrecover* to search for passwords, you will not need your wallet file, only the output from *extract-bitcoincore-mkey.py*. To continue the example:
105105

@@ -110,9 +110,9 @@ When you (or someone else) runs *btcrecover* to search for passwords, you will n
110110
...
111111
Password found: xxxx
112112

113-
#### Bitcoin Classic/XT/Core Technical Details ####
113+
#### Bitcoin Unlimited/Classic/XT/Core Technical Details ####
114114

115-
The *extract-bitcoincore-mkey.py* script is intentionally short and should be easy to read for any Python programmer. It opens a wallet.dat file using the Python bsddb.db library (the Berkeley DB library which comes with Python 2.7), and then extracts a single key/value pair with the key string of `\x04mkey\x01\x00\x00\x00`. This key/value pair contains an encrypted version of the Bitcoin Classic/XT/Core “master key”, or mkey for short, along with some other information required to try decrypting the mkey, specifically the mkey salt and iteration count. This information is then converted to base64 format for easy copy/paste, and printed to the screen.
115+
The *extract-bitcoincore-mkey.py* script is intentionally short and should be easy to read for any Python programmer. It opens a wallet.dat file using the Python bsddb.db library (the Berkeley DB library which comes with Python 2.7), and then extracts a single key/value pair with the key string of `\x04mkey\x01\x00\x00\x00`. This key/value pair contains an encrypted version of the Bitcoin Unlimited/Classic/XT/Core “master key”, or mkey for short, along with some other information required to try decrypting the mkey, specifically the mkey salt and iteration count. This information is then converted to base64 format for easy copy/paste, and printed to the screen.
116116

117117
The encrypted mkey is useful to *btcrecover*, but it does not contain any of your Bitcoin address or private key information. *btcrecover* can attempt to decrypt the mkey by trying different password combinations. Should it succeed, it and whoever runs it will then know the password to your wallet file, but without the rest of your wallet file, the password and the decrypted mkey are of no use.
118118

0 commit comments

Comments
 (0)