A single modern GPU can solve #66 in less than a minute, with a known public key.
It was the Bitcointalk forum that inspired us to create Bitcointalksearch.org - Bitcointalk is an excellent site that should be the default page for anybody dealing in cryptocurrency, since it is a virtual gold-mine of data. However, our experience and user feedback led us create our site; Bitcointalk's search is slow, and difficult to get the results you need, because you need to log in first to find anything useful - furthermore, there are rate limiters for their search functionality.
The aim of our project is to create a faster website that yields more results and faster without having to create an account and eliminate the need to log in - your personal data, therefore, will never be in jeopardy since we are not asking for any of your data and you don't need to provide them to use our site with all of its capabilities.
We created this website with the sole purpose of users being able to search quickly and efficiently in the field of cryptocurrency so they will have access to the latest and most accurate information and thereby assisting the crypto-community at large.
from multiprocessing.pool import Pool
from subprocess import check_output
from tqdm import tqdm
from tqdm.contrib.concurrent import process_map
import secp256k1 as ice
import math
import random
import sys
div=16384
start=0x20000000000000000
end=0x3ffffffffffffffff
rng=0x3ffffffffffffffff-0x20000000000000000
stepout=int(rng/div)
stepin=0x200000000
right='13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so'
sys.stdout.write("\033[01;33m")
print('[+] target: '+right)
def int_to_bytes3(value, length = None): # in: int out: bytearray(b'\x80...
if not length and value == 0:
result = [0]
else:
result = []
for i in range(0, length or 1+int(math.log(value, 2**8))):
result.append(value >> (i * 8) & 0xff)
result.reverse()
return bytearray(result)
def pvk_to_addr(pvk):
return ice.privatekey_to_address(0, True, pvk)
global c
c = 0
def go(r):
global c
if c % 100 == 0:
print(f'[+] {c:,} Keys\r'.replace(',', ' '), end='')
c = c + 1
by = int_to_bytes3(r, 32)
pvk = int.from_bytes(by, byteorder='big') # Convert bytearray to integer
ad = pvk_to_addr(pvk)
# print('\r'+ad,end='')
if ad == right:
print('found!')
print(r)
print(hex(r))
HEX = "%064x" % int(r)
wifc = ice.btc_pvk_to_wif(HEX)
print(wifc)
print('\a')
with open('found.txt', 'w') as f:
f.write(str(r))
f.write('\n')
f.write(hex(r))
f.write('\n')
f.write(wifc)
f.write('\n')
f.flush()
sys.exit(0)
return
def n(a,b):
return list(range(a,b))
s=int(rng/div)
pool = Pool(10)
u=1048576
while True:
ra=random.randint(start,end-u)
rb=ra+u
print(f'\r[+] from: {hex(ra)} to: {hex(rb)} range: {hex(u)}={u}')
#global c
c=0
pool.map(go, range(ra,rb), chunksize=32768)
pool.close()
pool.join()
from multiprocessing.pool import Pool
from subprocess import check_output
from tqdm import tqdm
from tqdm.contrib.concurrent import process_map
import secp256k1 as ice
import math
import random
import sys
div=16384
start=0x20000000000000000
end=0x3ffffffffffffffff
rng=0x3ffffffffffffffff-0x20000000000000000
stepout=int(rng/div)
stepin=0x200000000
right='13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so'
sys.stdout.write("\033[01;33m")
print('[+] target: '+right)
def int_to_bytes3(value, length = None): # in: int out: bytearray(b'\x80...
if not length and value == 0:
result = [0]
else:
result = []
for i in range(0, length or 1+int(math.log(value, 2**8))):
result.append(value >> (i * 8) & 0xff)
result.reverse()
return bytearray(result)
def pvk_to_addr(pvk):
return ice.privatekey_to_address(0, True, pvk)
global c
c = 0
def go(r):
global c
if c % 100 == 0:
print(f'[+] {c:,} Keys\r'.replace(',', ' '), end='')
c = c + 1
by = int_to_bytes3(r, 32)
pvk = int.from_bytes(by, byteorder='big') # Convert bytearray to integer
ad = pvk_to_addr(pvk)
# print('\r'+ad,end='')
if ad == right:
print('found!')
print(r)
print(hex(r))
HEX = "%064x" % int(r)
wifc = ice.btc_pvk_to_wif(HEX)
print(wifc)
print('\a')
with open('found.txt', 'w') as f:
f.write(str(r))
f.write('\n')
f.write(hex(r))
f.write('\n')
f.write(wifc)
f.write('\n')
f.flush()
sys.exit(0)
return
def n(a,b):
return list(range(a,b))
s=int(rng/div)
pool = Pool(10)
u = 1048576
for ra in range(start, end - u + 1, u):
rb = ra + u
print(f'\r[+] from: {hex(ra)} to: {hex(rb)} range: {hex(u)}={u}')
c = 0
pool.map(go, range(ra, rb), chunksize=32768)
pool.close()
pool.join()
import bitcoin
import ecdsa
import secrets
from timeit import default_timer as timer
start = timer()
t=""
for _ in range(47):# generate 47 character ( 0 )
t = t + "0"
def generate_private_key():
p=str(secrets.choice(range(2, 4)))# generate random( 2 or 3) for fist number
return (t+p+secrets.token_hex(8))#return { 47 character ( 0 ) + random (2 or 3 ) + generate random (16 character in hexadecimal) }
def private_key_to_public_key(private_key):
sk = ecdsa.SigningKey.from_string(bytes.fromhex(private_key), curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()
compressed_public_key = vk.to_string("compressed").hex()
return compressed_public_key
def main():
target_address = "13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so" # this is Target wallet address , just p2pkh compressed
while True:#
#for _ in range(100000):#while True:
private_key = generate_private_key()#secrets.randbelow(32)) # Generate a random private key
public_key = private_key_to_public_key(private_key) # Convert private key to compressed public key
# Generate Bitcoin address from public key
bitcoin_address = bitcoin.pubtoaddr(public_key)
print(private_key,' ',bitcoin_address)
if (bitcoin_address == target_address):
f = open("data.txt", "a")
f.write('\nprivate key int: '
+ private_key
+'\nBitcoin address: '
+ bitcoin_address+'\n_________\n')
f.close()
print(f"Found matching Bitcoin address for private key: {private_key}")
break
print("--- %s seconds ---" ,timer()-start)
if __name__ == "__main__":
main()
def check_files(file1, file2, output_file):
with open(file1, 'r') as f1, open(file2, 'r') as f2:
lines1 = f1.readlines()
lines2 = f2.readlines()
matches = [line for line in lines1 if line in lines2]
with open(output_file, 'w') as out:
if matches:
print("Match found")
for match in matches:
out.write(match)
else:
print("No matches found")
check_files('file1.txt', 'file2.txt', 'matches.txt')