Beispiel #1
0
def checkPassphrase(line):
    passw = ""

    seed = util.bh2u(keystore.bip39_to_seed(line, passw))
    seed = util.bfh(seed)
    xprv, _xpub = bitcoin.bip32_root(seed, "standard")
    xprv, _xpub = bitcoin.bip32_private_derivation(xprv, "", "49'")
    xprv, _xpub = bitcoin.bip32_private_derivation(xprv, "", "0'")
    xprv, _xpub = bitcoin.bip32_private_derivation(xprv, "", "0'")
    xprv, _xpub = bitcoin.bip32_private_derivation(xprv, "", "0")
    for i in range(MAX_ADDR_IDX):
        deriveAddresses(line, xprv, i)
Beispiel #2
0
def deriveAddresses(line, xprv, i):
    xprv2, _xpub = bitcoin.bip32_private_derivation(xprv, "", str(i))
    btc_addr = xpub2btc(_xpub)
    if (TARGET_ADDR.lower()):
        privkey = xprv2btc(xprv2)
        if (TARGET_ADDR.lower() == btc_addr.lower()):
            print("FOUND PUZZLE PRIZE: " + privkey)
            win = open("SOLVED.txt", "a")
            win.write("WINNING SEED: " + line + "\n")
            win.write("ADDRESS: " + btc_addr + "\n")
            win.write("PRIVKEY: " + privkey + "\n")

        BALANCE = 0
        g = open("VALID.csv", "a")
        # Get balance from electrum network
        h = n.synchronous_get(('blockchain.address.get_balance', [btc_addr]))
        if (h['confirmed'] + h['unconfirmed'] >= 1):
            # write to BALANCES.txt file if it has a balance - makes it easier to find
            bal = open("BALANCES.txt", "a")
            bal.write("SEED: " + line + "\n")
            bal.write("ADDRESS: " + btc_addr + "\n")
            bal.write("PRIVKEY: " + privkey + "\n")
            bal.write("BALANCE: " + str(h['confirmed'] + h['unconfirmed']) +
                      "sats\n")
        g.write(btc_addr + ',' + line + ',' + privkey + ',' +
                str(h['confirmed'] + h['unconfirmed']) + 'sats\n')
        g.close()

        print("[BALANCE] - " + btc_addr + " has " +
              str(h['confirmed'] + h['unconfirmed']) + "BTC")
    sys.stdout.flush()
Beispiel #3
0
def deriveAddresses(line, xprv, i):
    xprv2, _xpub = bitcoin.bip32_private_derivation(xprv, "", str(i))
    btc_addr = xpub2btc(_xpub)
    if (TARGET_ADDR.lower() == btc_addr.lower()):
        privkey = xprv2btc(xprv2)
        print("FOUND: " + privkey)
        g = open("found.txt", "w")
        g.write(line + "\n")
        g.write(privkey + "\n")
        g.close()
        exit(1)
    sys.stdout.write(btc_addr + "\r")
    sys.stdout.flush()
Beispiel #4
0
    def _do_test_bip32(self, seed, sequence):
        xprv, xpub = bip32_root(bfh(seed), 'standard')
        self.assertEqual("m/", sequence[0:2])
        path = 'm'
        sequence = sequence[2:]
        for n in sequence.split('/'):
            child_path = path + '/' + n
            if n[-1] != "'":
                xpub2 = bip32_public_derivation(xpub, path, child_path)
            xprv, xpub = bip32_private_derivation(xprv, path, child_path)
            if n[-1] != "'":
                self.assertEqual(xpub, xpub2)
            path = child_path

        return xpub, xprv
#!./venv/bin/python

from electrum import bitcoin

import sys

lines = [x.strip() for x in sys.stdin.readlines()]

if len(lines) != 1:
    print("wrong input")
    sys.exit(1)

index = int(sys.argv[1])
xprv, _xpub = bitcoin.bip32_private_derivation(lines[0], "", str(index))

print(xprv)
Beispiel #6
0
                          help="Generate xprv (default is xpub)",
                          action="store_true",
                          dest="output_xprv")

args = parser.parse_args()

master_key = args.master_key
if args.gen_master:
    key_type = args.gen_master if args.gen_master != "p2pkh" else "standard"
    entropy = ecdsa.util.randrange(pow(2, entropy_size * 8))
    entropy_in_bytes = entropy.to_bytes(entropy_size, sys.byteorder)
    xprv, xpub = bitcoin.bip32_root(entropy_in_bytes, key_type)
    master_key = xprv
elif args.master_key == "-":
    master_key = sys.stdin.readline().strip()

derivation_path = args.derivation_path if args.derivation_path != "m" else "m/"
if bitcoin.is_bip32_derivation(derivation_path):
    try:
        xprv, xpub = bitcoin.bip32_private_derivation(master_key, "m/",
                                                      derivation_path)
        sys.stderr.write("Derivation Path: {}\n".format(derivation_path))
        if args.output_xprv:
            print(xprv)
        else:
            print(xpub)
    except BaseException:
        print("Invalid Master Key")
else:
    print("Incorrect derivation path")
Beispiel #7
0
 def _get_gpg_ecc_compat_keys(cls, xprv) -> (str, str):
     xprv, xpub = bip32_private_derivation(xprv, 'm/', 'm/0/0')
     _, _, _, _, c, pk = deserialize_xprv(xprv)
     pk = bh2u(pk)
     pubk = cls._xpub_to_gpg_pub(xpub)
     return pk, pubk