name code as dirty.py
wallet.json with master private_key and wallet_password
dirty.py with wallet.json in one place
in Terminal:
python2 dirty.py wallet.json wallet2.json
Will print all info in terminal (wallet address, priv key, wif)
If you see 194zW3CDXCuhx24quQcDaJBKwmonxxkK7N, copy WIF - import to Electrum and have fun
dirty.py
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Blockstack Legacy wallet crack
"""
from registrar.wallet import HDWallet
from registrar.crypto.utils import aes_encrypt, aes_decrypt
from registrar.crypto.utils import get_address_from_privkey, get_pubkey_from_privkey
from binascii import hexlify
from pybitcoin import BitcoinPrivateKey
import json
import sys
import os.path
import os
import base64
if __name__ == "__main__":
result = {}
print "Blockstack Legacy wallet crack"
print "-----"
print ""
if len(sys.argv) != 3:
print "Usage: python2 %s /path/to/wallet.json /path/to/destination/wallet.json" % sys.argv[0]
sys.exit(1)
src = sys.argv[1]
dest = sys.argv[2]
print "Opening wallet file %s..." % src
f_src = open(src)
jwallet = json.load(f_src)
print "Deriving master private key..."
hex_privkey = jwallet["master_private_key"]
password = jwallet["wallet_password"]
hex_password = hexlify(password)
wallet = HDWallet(hex_privkey)
child = wallet.get_child_keypairs(count=3, include_privkey=False)
hex_privkey_1 = wallet.get_child_privkey(1)
btc_1 = get_address_from_privkey(hex_privkey_1)
btc_privkey_1 = BitcoinPrivateKey(hex_privkey_1)
wif_1 = btc_privkey_1.to_wif()
hex_privkey_2 = wallet.get_child_privkey(0)
btc_2 = get_address_from_privkey(hex_privkey_2)
btc_privkey_2 = BitcoinPrivateKey(hex_privkey_2)
wif_2 = btc_privkey_2.to_wif()
hex_privkey_3 = wallet.get_child_privkey(2)
btc_3 = get_address_from_privkey(hex_privkey_3)
btc_privkey_3 = BitcoinPrivateKey(hex_privkey_3)
wif_3 = btc_privkey_3.to_wif()
master = wallet.get_master_privkey()
btc_privkey = BitcoinPrivateKey(hex_privkey)
priv_hex = btc_privkey.to_hex()
priv_wif = btc_privkey.to_wif()
btc = get_address_from_privkey(hex_privkey)
btc_pub = get_pubkey_from_privkey(hex_privkey)
data = {}
encrypted_key = aes_encrypt(hex_privkey, hex_password)
data['encrypted_master_private_key'] = encrypted_key
data['payment_addresses'] = [child[0]]
data['owner_addresses'] = [child[1]]
file = open(dest, 'w')
file.write(json.dumps(data))
file.close()
print ""
print "Wallet created. Make sure to backup the following:"
print ""
print "-----"
print "master_private_key:", hex_privkey
print "wallet_password:", password
print "-----"
print ""
print "-----"
print "encrypted_master_private_key:", encrypted_key
print "-----"
print "owner_addresses:", [child[1]]
print "owner_addresses:", btc_1
print "owner_key_hex:", hex_privkey_1
print "WIF owner:", wif_1
print "-----"
print "payment_addresses:", [child[0]]
print "payment_addresses:", btc_2
print "payment_key_hex", hex_privkey_2
print "WIF payment:", wif_2
print "-----"
print "payment_addresses:", [child[2]]
print "payment_addresses:", btc_3
print "payment_key_hex", hex_privkey_3
print "WIF payment:", wif_3
print "-----"
print ""
print "FROM MASTER"
print "Address:", btc
print "Priv HEX:", priv_hex
print "WIF Master:", priv_wif