You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.7 KiB
76 lines
2.7 KiB
13 years ago
|
import electrum, getpass, base64,ast,sys,os
|
||
|
from version import SEED_VERSION
|
||
13 years ago
|
|
||
13 years ago
|
|
||
13 years ago
|
|
||
13 years ago
|
|
||
|
if __name__ == "__main__":
|
||
|
try:
|
||
|
path = sys.argv[1]
|
||
|
except:
|
||
13 years ago
|
# backward compatibility: look for wallet file in the default data directory
|
||
|
if "HOME" in os.environ:
|
||
|
wallet_dir = os.path.join( os.environ["HOME"], '.electrum')
|
||
|
elif "LOCALAPPDATA" in os.environ:
|
||
|
wallet_dir = os.path.join( os.environ["LOCALAPPDATA"], 'Electrum' )
|
||
|
elif "APPDATA" in os.environ:
|
||
|
wallet_dir = os.path.join( os.environ["APPDATA"], 'Electrum' )
|
||
|
else:
|
||
|
raise BaseException("No home directory found in environment variables.")
|
||
|
path = os.path.join( wallet_dir, 'electrum.dat')
|
||
|
|
||
|
try:
|
||
|
f = open(path,"r")
|
||
|
data = f.read()
|
||
|
f.close()
|
||
|
except:
|
||
|
print "file not found", path
|
||
|
exit(1)
|
||
|
|
||
|
try:
|
||
|
x = ast.literal_eval(data)
|
||
|
except:
|
||
|
print "error: could not parse wallet"
|
||
|
exit(1)
|
||
|
|
||
13 years ago
|
# version <= 0.33 uses a tuple
|
||
13 years ago
|
if type(x) == tuple:
|
||
13 years ago
|
seed_version, use_encryption, fee, host, port, blocks, seed, all_addresses, private_keys, change_indexes, status, history, labels, addressbook = x
|
||
13 years ago
|
|
||
|
print "walet path =",path
|
||
|
print "seed version =", seed_version
|
||
|
|
||
|
if seed_version == 1 and use_encryption:
|
||
|
# version 1 used pycrypto for wallet encryption
|
||
|
import Crypto
|
||
|
from Crypto.Cipher import AES
|
||
|
BLOCK_SIZE = 32
|
||
|
PADDING = '{'
|
||
|
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
|
||
|
EncodeAES = lambda secret, s: base64.b64encode(AES.new(secret).encrypt(pad(s)))
|
||
|
DecodeAES = lambda secret, e: AES.new(secret).decrypt(base64.b64decode(e)).rstrip(PADDING)
|
||
|
|
||
|
print "please enter your password"
|
||
|
password = getpass.getpass("Password:")
|
||
|
secret = electrum.Hash(password)
|
||
|
try:
|
||
|
seed = DecodeAES( secret, wallet.seed )
|
||
|
private_keys = ast.literal_eval( DecodeAES( secret, wallet.private_keys ) )
|
||
|
except:
|
||
|
print "sorry"
|
||
|
exit(1)
|
||
|
seed_version = 2
|
||
|
s = repr( (seed_version, use_encryption, fee, host, port, blocks, seed, all_addresses, private_keys, change_indexes, status, history, labels, addressbook ))
|
||
|
f = open(path,"w")
|
||
|
data = f.read()
|
||
|
f.close()
|
||
|
print "Wallet is now unencrypted."
|
||
|
|
||
13 years ago
|
print """This wallet is deprecated.
|
||
13 years ago
|
Please create a new wallet, open the old wallet with Electrum 0.33, and send your coins to your new wallet.
|
||
|
We apologize for the inconvenience. We try to keep this kind of upgrades as rare as possible."""
|
||
13 years ago
|
|
||
13 years ago
|
|
||
13 years ago
|
|
||
|
|