-
-
Save shirriff/64f48fa09a61b56ffcf9 to your computer and use it in GitHub Desktop.
This source code is embedded in Bitcoin transaction 6c53cd987119ef797d5adccd76241247988a0a5ef783572a9972e7371c5fb0cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# File downloader | |
# Requires git://github.com/jgarzik/python-bitcoinrpc.git | |
# | |
# (c) 2013 Satoshi Nakamoto All Rights Reserved | |
# | |
# UNAUTHORIZED DUPLICATION AND/OR USAGE OF THIS PROGRAM IS PROHIBITED BY US AND INTERNATIONAL COPYRIGHT LAW | |
import sys | |
import os | |
import jsonrpc | |
import struct | |
from binascii import crc32,hexlify,unhexlify | |
if len(sys.argv) != 2: | |
print("""\ | |
Usage: %s <txhash> | |
Set BTCRPCURL=http://user:pass@localhost:portnum""" % sys.argv[0], file=sys.stderr) | |
sys.exit() | |
proxy = jsonrpc.ServiceProxy(os.environ['BTCRPCURL']) | |
txid = sys.argv[1] | |
tx = proxy.getrawtransaction(txid,1) | |
data = b'' | |
for txout in tx['vout'][0:-2]: | |
for op in txout['scriptPubKey']['asm'].split(' '): | |
if not op.startswith('OP_') and len(op) >= 40: | |
data += unhexlify(op.encode('utf8')) | |
length = struct.unpack('<L', data[0:4])[0] | |
checksum = struct.unpack('<L', data[4:8])[0] | |
data = data[8:8+length] | |
if checksum != crc32(data): | |
print('Checksum mismatch; expected %d but calculated %d' % (checksum, crc32(data)), | |
file=sys.stderr) | |
sys.exit() | |
sys.stdout.buffer.write(data) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
哈哈哈啊 不错不错