Scripts to accompany the book
Balance_bitcoin
A script for finding the balance of several bitcoin addresses
#!/usr/bin/env python import os.path import urllib2 import json datain = raw_input("Enter the path to your 'address' file:") if os.path.exists(datain): data = open(datain, "r") outfile = open("balances.txt", 'w') print "Extracting balances, please wait....." for line in data: bal = "https://blockchain.info/balance?active=%s" % line.rstrip() balance = urllib2.urlopen(bal) data2 = json.loads(balance.read()) print line print data2[line.rstrip()]['final_balance'] outfile.write(str(data2) + "\n") outfile.close() data.close() else: sorry = "Sorry, not a valid path, please re-run the program" print sorry
Miner
A simple script to demonstrate the mining process
import hashlib text = ("94a89e8799ce8e3a0e876261e1fb10326ba1cf08") for nonce in range(10000000): input = text+str(nonce) hash = hashlib.sha256(input.encode()).hexdigest() print (input, hash) if hash.startswith("0000"): print ("Found Hash") break
Unspent_n
Discover the unspent Transactions associated with an address
import json import requests address = str(raw_input("Enter the bitcoin address? ")) myfile = open('unspent_%s.txt' % address, 'w') resp = requests.get('https://blockchain.info/unspent?active=%s' % address) utxo_set = json.loads(resp.text)["unspent_outputs"] myfile.write('TX_ID TX_Number Amount' + '\n' + '\n') for utxo in utxo_set: myfile.write("%s %d %ld Satoshis" % (utxo['tx_hash_big_endian'], utxo['tx_output_n'], utxo['value']) + '\n') myfile.write('\n' + '\n') myfile = open('balance_%s.txt' % address, 'w') balance = requests.get('https://blockchain.info/balance?active=%s' % address) for line in balance: myfile.write(line + '\n')
Regular Expressions
Regex for some of the primary cryptocurrencies
Bitcoin [13][a-km-zA-HJ-NP-Z1-9]{25,34} Bch [13][a-km-zA-HJ-NP-Z1-9]{33} Litecoin [LM3][a-km-zA-HJ-NP-Z1-9]{26,33} Ethereum 0x[a-fA-F0-9]{40} Monero 4[0-9AB][1-9A-HJ-NP-Za-km-z]{93} Dash X[1-9A-HJ-NP-Za-km-z]{33} Ripple r[0-9a-zA-Z]{33} Neo A[0-9a-zA-Z]{33} Dogecoin D{1}[5-9A-HJ-NP-U]{1}[1-9A-HJ-NP-Za-kmz]{32}