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)
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()
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()
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)
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")
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