is it faster if we use brute force attack on addresses in the puzzle by tools like bitbruteforce, plutus, btcbf... I mean these tools are generate random wallets (in 2^256 range) then check a list for matching an wallet with balance, which chance to success is much lower than 0. If now we use these tools but control the range to generate wallet only in 2^64 or 2^71-74... to find matching address in puzzle (the address list still can contain funded addresses).
I think this method will give more chance than kangaroo/bsgs or bitcrack, while solving puzzle they can find some funded addresses but still ignore them because it's not match with their target - addresses in puzzle only
those listed codes are slow in python like turtle speed
example:https://github.com/Xefrok/BitBruteForce-Wallet
import time
import datetime as dt
import smtplib
import os
import multiprocessing
from multiprocessing import Pool
import binascii, hashlib, base58, ecdsa
import pandas as pd
from tqdm import tqdm
def ripemd160(x):
d = hashlib.new('ripemd160')
d.update(x)
return d
r = 0
cores=2
def seek(r, df_handler):
global num_threads
LOG_EVERY_N = 1000
start_time = dt.datetime.today().timestamp()
i = 0
print("Core " + str(r) +": Searching Private Key..")
for xxxxx in tqdm(range(1000000)):
i=i+1
# generate private key , uncompressed WIF starts with "5"
priv_key = os.urandom(32)
fullkey = '80' + binascii.hexlify(priv_key).decode()
sha256a = hashlib.sha256(binascii.unhexlify(fullkey)).hexdigest()
sha256b = hashlib.sha256(binascii.unhexlify(sha256a)).hexdigest()
WIF = base58.b58encode(binascii.unhexlify(fullkey+sha256b[:8]))
# get public key , uncompressed address starts with "1"
sk = ecdsa.SigningKey.from_string(priv_key, curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()
publ_key = '04' + binascii.hexlify(vk.to_string()).decode()
hash160 = ripemd160(hashlib.sha256(binascii.unhexlify(publ_key)).digest()).digest()
publ_addr_a = b"\x00" + hash160
checksum = hashlib.sha256(hashlib.sha256(publ_addr_a).digest()).digest()[:4]
publ_addr_b = base58.b58encode(publ_addr_a + checksum)
priv = WIF.decode()
pub = publ_addr_b.decode()
time_diff = dt.datetime.today().timestamp() - start_time
if (i % LOG_EVERY_N) == 0:
print('Core :'+str(r)+" K/s = "+ str(i / time_diff))
#print ('Worker '+str(r)+':'+ str(i) + '.- # '+pub + ' # -------- # '+ priv+' # ')
pub = pub + '\n'
filename = 'bit.txt'
with open(filename) as f:
for line in f:
if pub in line:
msg = "\nPublic: " + str(pub) + " ---- Private: " + str(priv) + "YEI"
text = msg
#UNCOMMENT IF 2FA from gmail is activated, or risk missing your winning ticket;)
#server = smtplib.SMTP("smtp.gmail.com", 587)
#server.ehlo()
#server.starttls()
#server.login("example@gmail.com", "password")
#fromaddr = "example@gmail.com"
#toaddr = "example@gmail.com"
#server.sendmail(fromaddr, toaddr, text)
print(text)
with open('Wallets.txt','a') as f:
f.write(priv)
f.write(' ')
f.write(pub)
f.write('\n')
f.close()
time.sleep(30)
print ('WINNER WINNER CHICKEN DINNER!!! ---- ' +dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), pub, priv)
break
contador=0
if __name__ == '__main__':
jobs = []
df_handler = pd.read_csv(open('bit.txt', 'r'))
for r in range(cores):
p = multiprocessing.Process(target=seek, args=(r,df_handler))
jobs.append(p)
p.start()