Bulmacalar için bir kod bu işle uğraşanlar veya bilgisayar 7/24 açık olanlar deneyebilir 
bulmacalardaki aralığı girin başlangıç ve bitiş private keyi
aranan adresi girin ve bırakın tarasın bulursa text dosyasına yazdırır, çözülen bulmacalarda deneyebilirsiniz
MODÜLLERİ YÜKLEMEYİ UNUTMAYIN!import hashlib
import ecdsa
import random
import base58
import tkinter as tk
from tkinter import messagebox
from threading import Thread
def private_key_to_compressed_public_key(private_key):
sk = ecdsa.SigningKey.from_string(private_key, curve=ecdsa.SECP256k1)
vk = sk.get_verifying_key()
return (b'\x02' if vk.pubkey.point.y() % 2 == 0 else b'\x03') + vk.to_string()[:32]
def public_key_to_address(public_key):
sha256_bpk = hashlib.sha256(public_key).digest()
ripemd160_bpk = hashlib.new('ripemd160', sha256_bpk).digest()
prefixed_ripemd160_bpk = b'\x00' + ripemd160_bpk
sha256_1 = hashlib.sha256(prefixed_ripemd160_bpk).digest()
sha256_2 = hashlib.sha256(sha256_1).digest()
checksum = sha256_2[:4]
binary_address = prefixed_ripemd160_bpk + checksum
address = base58.b58encode(binary_address)
return address.decode('utf-8')
def generate_random_private_key(start, end):
return random.randint(start, end).to_bytes(32, byteorder='big')
def search_for_matching_key(target_address, start, end, status_label):
scanned_keys = 0
while True:
private_key = generate_random_private_key(start, end)
compressed_pubkey = private_key_to_compressed_public_key(private_key)
compressed_address = public_key_to_address(compressed_pubkey)
scanned_keys += 1
status_label.config(text=f"Tarama yapılan private key sayısı: {scanned_keys}")
root.update_idletasks()
if compressed_address == target_address:
with open("found_key.txt", "w") as file:
file.write(f"Matching private key: {private_key.hex()}\n")
return private_key.hex(), scanned_keys
def start_search():
target_address = entry_address.get()
start_range = int(entry_start.get(), 16)
end_range = int(entry_end.get(), 16)
if len(target_address) == 34 and start_range < end_range:
status_label.config(text="Arama başlatılıyor...")
root.update_idletasks()
# İş parçacığı oluştur
search_thread = Thread(target=search_key_in_background, args=(target_address, start_range, end_range))
search_thread.start()
else:
messagebox.showerror("Hata", "Geçersiz girişler. Adresi ve private key aralığını kontrol edin.")
def search_key_in_background(target_address, start_range, end_range):
try:
matching_key, scanned_keys = search_for_matching_key(target_address, start_range, end_range, status_label)
if matching_key:
messagebox.showinfo("Sonuç", f"Eşleşen private key: {matching_key}\nTarama yapılan private key sayısı: {scanned_keys}")
else:
messagebox.showwarning("Sonuç", "Eşleşen private key bulunamadı.")
except Exception as e:
messagebox.showerror("Hata", f"Bir hata oluştu: {e}")
root = tk.Tk()
root.title("Bitcoin Private Key Bulucu")
tk.Label(root, text="Bitcoin Adresi:").grid(row=0, column=0)
entry_address = tk.Entry(root, width=50)
entry_address.grid(row=0, column=1)
tk.Label(root, text="Başlangıç Private Key (Hex):").grid(row=1, column=0)
entry_start = tk.Entry(root, width=50)
entry_start.grid(row=1, column=1)
tk.Label(root, text="Bitiş Private Key (Hex):").grid(row=2, column=0)
entry_end = tk.Entry(root, width=50)
entry_end.grid(row=2, column=1)
status_label = tk.Label(root, text="Tarama yapılacak...")
status_label.grid(row=4, column=0, columnspan=2)
search_button = tk.Button(root, text="Aramayı Başlat", command=start_search)
search_button.grid(row=3, column=0, columnspan=2)
root.mainloop()