Beispiel #1
0
def is_old_seed(seed):
    import old_mnemonic
    words = seed.strip().split()
    try:
        old_mnemonic.mn_decode(words)
        uses_electrum_words = True
    except Exception:
        uses_electrum_words = False
    try:
        seed.decode('hex')
        is_hex = (len(seed) == 32 or len(seed) == 64)
    except Exception:
        is_hex = False
    return is_hex or (uses_electrum_words and (len(words) == 12 or len(words) == 24))
Beispiel #2
0
def is_old_seed(seed):
    import old_mnemonic, mnemonic
    seed = mnemonic.normalize_text(seed)

    words = seed.strip().split()
    try:
        old_mnemonic.mn_decode(words)
        uses_uwallet_words = True
    except Exception:
        uses_uwallet_words = False
    try:
        seed.decode('hex')
        is_hex = (len(seed) == 32 or len(seed) == 64)
    except Exception:
        is_hex = False
    return is_hex or (uses_uwallet_words and
                      (len(words) == 12 or len(words) == 24))
Beispiel #3
0
 def format_seed(self, seed):
     import old_mnemonic
     # see if seed was entered as hex
     seed = seed.strip()
     if seed:
         try:
             seed.decode('hex')
             return str(seed)
         except Exception:
             pass
     words = seed.split()
     seed = old_mnemonic.mn_decode(words)
     if not seed:
         raise Exception("Invalid seed")
     return seed
Beispiel #4
0
 def format_seed(self, seed):
     import old_mnemonic
     # see if seed was entered as hex
     seed = seed.strip()
     if seed:
         try:
             seed.decode('hex')
             return str(seed)
         except Exception:
             pass
     words = seed.split()
     seed = old_mnemonic.mn_decode(words)
     if not seed:
         raise Exception("Invalid seed")
     return seed
def findVanity4OldElectrum(prefix, maxTries=0, ignoreCase=False):
    if maxTries == 0:
        maxTries = 60**len(prefix)
    for i in range(maxTries):
        guess = sample(old_word_list, 12)
        seed = mn_decode(guess)
        mpk = OldAccount.mpk_from_seed(seed)
        acc = OldAccount({'mpk': mpk, 0: [], 1: []})
        addr = acc.create_new_address(False)
        if ignoreCase:
            if addr.lower().startswith(prefix):
                return ' '.join(guess), addr
        else:
            if addr.startswith(prefix):
                return ' '.join(guess), addr
    return None
Beispiel #6
0
def findVanity4OldElectrum(prefix,  maxTries = 0, ignoreCase = False):
	if maxTries == 0:
		maxTries = 60**len(prefix)
	for i in range(maxTries):
		guess = sample(old_word_list,12)
		seed = mn_decode(guess)
		mpk = OldAccount.mpk_from_seed(seed)
		acc = OldAccount({'mpk':mpk, 0:[], 1:[]})
		addr = acc.create_new_address(False)
		if ignoreCase:
			if addr.lower().startswith(prefix):
				return ' '.join(guess), addr
		else:
			if addr.startswith(prefix):
				return ' '.join(guess), addr
	return None
Beispiel #7
0
				addr = wallet.get_addr(m, forchange, k)
				for addrvalue in wallet.unspent.values():
					if addr == addrvalue['address']:
						balance_depth += addrvalue['value']
		print 'for mixdepth=%d balance=%.8fbtc' % (m, balance_depth/1e8)
		total_balance += balance_depth
	print 'total balance = %.8fbtc' % (total_balance/1e8)
elif method == 'generate' or method == 'recover':
	if method == 'generate':
		seed = btc.sha256(os.urandom(64))[:32]
		words = old_mnemonic.mn_encode(seed)
		print 'Write down this wallet recovery seed\n\n' + ' '.join(words) + '\n'
	elif method == 'recover':
		words = raw_input('Input 12 word recovery seed: ')
		words = words.split(' ')
		seed = old_mnemonic.mn_decode(words)
		print seed
	password = getpass.getpass('Enter wallet encryption passphrase: ')
	password2 = getpass.getpass('Reenter wallet encryption passphrase: ')
	if password != password2:
		print 'ERROR. Passwords did not match'
		sys.exit(0)
	password_key = btc.bin_dbl_sha256(password)
	encrypted_seed = slowaes.encryptData(password_key, seed.decode('hex'))
	timestamp = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
	walletfile = json.dumps({'creator': 'joinmarket project', 'creation_time': timestamp,
		'encrypted_seed': encrypted_seed.encode('hex'), 'network': common.get_network()})
	walletname = raw_input('Input wallet file name (default: wallet.json): ')
	if len(walletname) == 0:
		walletname = 'wallet.json'
	fd = open(os.path.join('wallets', walletname), 'w')
Beispiel #8
0
    print 'total balance = %.8fbtc' % (total_balance / 1e8)
elif method == 'generate' or method == 'recover':
    try:
        import aes
    except ImportError:
        print 'You must install slowaes\nTry running: sudo pip install slowaes'
        sys.exit(0)
    if method == 'generate':
        seed = btc.sha256(os.urandom(64))[:32]
        words = old_mnemonic.mn_encode(seed)
        print 'Write down this wallet recovery seed\n\n' + ' '.join(
            words) + '\n'
    elif method == 'recover':
        words = raw_input('Input 12 word recovery seed: ')
        words = words.split(' ')
        seed = old_mnemonic.mn_decode(words)
        print seed
    password = getpass.getpass('Enter wallet encryption passphrase: ')
    password2 = getpass.getpass('Reenter wallet encryption passphrase: ')
    if password != password2:
        print 'ERROR. Passwords did not match'
        sys.exit(0)
    password_key = btc.bin_dbl_sha256(password)
    encrypted_seed = aes.encryptData(password_key, seed.decode('hex'))
    timestamp = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
    walletfile = json.dumps({
        'creator': 'joinmarket project',
        'creation_time': timestamp,
        'encrypted_seed': encrypted_seed.encode('hex'),
        'network': common.get_network()
    })