Title: wallet email backup script w/embedded encryption
Post by: kokjo on April 23, 2012, 06:33:20 PM
Wrote this for a cronjob on my server, it might be useful for you. Donations goes to 1JpsKmkim7REYq2EWE5aEXG8YN4zJTTX16 #!/usr/bin/python import os import sys import smtplib # For guessing MIME type based on file name extension import mimetypes
from optparse import OptionParser from email import encoders from email.message import Message from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart import time import Crypto.Cipher.AES as AES import hashlib import jsonrpc import random
PASSWORD = "ENCRYPTION PASSWORD" BITCOIN_USER = "" BITCOIN_PASS = "BITCOIND PASSWORD" TO_EMAIL = "someone@some.where"
DECRYPT_SCRIPT = """#!/usr/bin/python import Crypto.Cipher.AES as AES import hashlib DATA = "%s" CKSUM = "%s" PASSWORD = raw_input("Password: ") OUTPUTFILE = raw_input("Output file: ") KEY = hashlib.sha256(PASSWORD).digest() CRYPTER = AES.new(KEY, AES.MODE_CFB)
decrypted_data = CRYPTER.decrypt(DATA.decode("hex")) if hashlib.sha256(decrypted_data).digest() == CKSUM.decode("hex"): open(OUTPUTFILE, "w").write(decrypted_data) print "wallet decrypted!" else: print "Wrong password(cksum wrong)" """ BITCOIN_ACCESS = jsonrpc.ServiceProxy("http://%s:%s@127.0.0.1:8332"%(BITCOIN_USER, BITCOIN_PASS)) TEMPFILE = "/tmp/wallet.tmp.%d"%random.randint(0,2**23)
HOSTNAME = open("/etc/hostname").readline().strip("\n") DATESTRING = time.ctime(time.time()) KEY = hashlib.sha256(PASSWORD).digest() CRYPTER = AES.new(KEY, AES.MODE_CFB)
msg = MIMEMultipart() msg['Subject'] = "Wallet Backup from %s on %s" %(HOSTNAME, DATESTRING) msg['To'] = TO_EMAIL msg['From'] = "walletbackup@%s" % HOSTNAME
BITCOIN_ACCESS.backupwallet(TEMPFILE) walletdata = open(TEMPFILE, "r").read()
cksum = hashlib.sha256(walletdata).digest() wallet = CRYPTER.encrypt(walletdata)
wallet_attachment = MIMEBase("application", "octet-stream") wallet_attachment.set_payload(DECRYPT_SCRIPT % (wallet.encode("hex"), cksum.encode("hex"))) wallet_attachment.add_header('Content-Disposition', 'attachment', filename="decrypter.py") encoders.encode_base64(wallet_attachment)
msg.attach(wallet_attachment)
#print msg.as_string() s = smtplib.SMTP('localhost') s.sendmail("walletbackup@%s" % HOSTNAME, TO_EMAIL, msg.as_string()) s.quit()
Title: Re: wallet email backup script w/embedded encryption
Post by: kokjo on May 04, 2012, 06:46:29 AM
BUMP! no one replyed? :o I though i was writing good code, to help you people.
|