Farklı iki txt dosyasının kombinasyonu

İstersen pentagonun sitesine sızıp verileri de çekelim. :slight_smile:

Ne kaldı anlamadım.

Walled (compressed/uncompressed) ?

Yaparız da anlamadan Allah’a emanet yaparız.

Verileri bir daha anlat bakalım. Yakında FBI peşimize düşer sayende.

Biz neyi kırıyoruz bilemedim ama.

Şu aklında geçenleri bi tane tane anlat bakalım.

Yazdığım kodda bir şey yok oku yaz karşılaştır ve hiç verimli ve profesyonel bir kod değil.

Şu wallet meselesini bir anlat bakalım. Veri formatı nedir nasıl bir şey?

1 Beğeni

Blok-alıntı :smiley:

Şimdi abi bize wallet dediğimiz 34haneli bitcoin cüzdanları verildi ve bunların anahtarları olan 16 basamaklı Hex formatındaki sayılar 10basamak+6basamak şeklinde verildi

ilk vazifemiz bunları birleştirip Hex formatında 16 basamaklı sayılar üretebilmek

İkinci vazifemiz elde ettiğimiz 16basamaklı Hex formatındaki sayıları (malumunuz her hex kodu bir cüzdanın WIF / Privatekey anahtarıdır) 34haneli bitcoin cüzdanı haline çevirmek

Üçüncü vazifemiz elde ettiğimiz 34 haneli wallet(compressed/uncompressed) yani sıkıştırlmış ve sıkıştırılmamış adresleri listedeki adreslerle çakıştırıp aynı olanları tespit etmek

Biz sayenizde birinci ve üçüncü etapları tamamladık sadece bizim için en zoru sizler için anladığım kadarıyla çok basit olan ortadaki etap kaldı

onu da yapabilirsek vazifemizi başarıya tamamlamış ve artık sonraki verilen adresleri aynı yöntemlerle tespit etmiş olacağız :smiley:

Yakalanırsanız eylemlerinizden habersiz olduğumu beyan edeceğim haberiniz olsun.

Tamam.

Peki 16 basamaklı Hex dosyasını 34 haneliye nasıl çeviriyorsunuz?

Bunu bir algoritması var mı?

Gece gece, bitcoin public key, private key, compressed, uncompressed okuyasım gelmedi de.

Hani muhtemelen bu anahatarları oluşturmanın adımları varsa ona göre bir kod yazıp,

Text dosyasındakileri hex’e oradan da algoritmaya gönderebiliriz.

De vazifemiz derken size kim ne vazife verdi?

Bu işin hikayesini de merak ettim ondan soruyorum.

Blok-alıntı :smiley:

Bir kaç tane sitede bununla alakalı kodlar gördük ama bir araya getirmeyi başaramadık
https://medium.com/@farukterzioglu/bitcoinde-private-key-a5d79eeda0f1

Vazife derken herhangi bir yerden değil biz 3 arkadaş biraz bu işi öğrenmek istiyoruz o nedenle yoksa FBI ile bağlantımız yok :slight_smile:

Tekrardan çok teşekkür ederiz

Belki göz atarı bir ara, siz çözün. Kod değil, algoritmasını oluşturun kodlayalım.

Oluşturamazsanız zamanım olursa döner üzerinde belki çalışabilirim.

Farkettiniz mi bilmiyorum, forumda yanıt sayısı 63 olan tek konu? Hani bırakın da diğer insanlar da yazışabilsin.

:slight_smile:

Sorununuzun üzerinde biraz daha çalışın daha spesifik bir noktada takıldığınızda sorun.

1 Beğeni

Dediğiniz gibi belki biraz uğraşarak bi ihtimal bağımsız bir kod ile hex formundan walleta çevirebiliriz
Lakin bu bağımsız kodu sizin hazırladığınız kodun içinde çalışır hale nasıl getiririz onu yapamayız o durumda sizden destek isteyebiliriz

Tekrardan çok teşekkür ederiz

Tabi ki, siz kodlayın, ben entegre ederim.

Hem de ilk baştaki Then_Shiffman in koduna da buna da entegre edebiliriz.

Hangisine isterseniz.

Bir deneyim bakalım. Yapınca kodu koyun buraya gerisini ayarlarım.

1 Beğeni

Blok-alıntı

Çok sağolun teşekkür ederiz

Sn abiciğim merhaba dediğimiz kodu bulduk

import bitcoin

Kod = input("Lütfen Hex Kodunuzu Girin:")


valid_private_key = False
while not valid_private_key:
    private_key = Kod
    decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
    valid_private_key = 0 < decoded_private_key < bitcoin.N
    print("Private key in hexadecimal is {}".format(private_key))
    print("Private key in decimal is {}".format(decoded_private_key))
wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
print("Private key in WIF is {}".format(wif_encoded_private_key))
compressed_private_key = private_key + '01'
print("Private key compressed in hexadecimal {}".format(compressed_private_key))
wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
print("Private key WIF compressed is {}".format(wif_compressed_private_key))
public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
print("Public key (x,y) coordinates is".format(public_key))
hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
print("Hex encoded public key is {}".format(hex_encoded_public_key))
(public_key_x, public_key_y) = public_key
if (public_key_y % 2) == 0:
    compressed_prefix = '02'
else:
    compressed_prefix = '03'
hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
print("Compressed Public Key (hex) is {}".format(hex_compressed_public_key))
print("Bitcoin Address (b58check) is {}".format(bitcoin.pubkey_to_address(public_key)))
print("Compressed Bitcoin Address (b58check) is: {}".format(bitcoin.pubkey_to_address(hex_compressed_public_key)))

ama bunu sizin verdiğiniz koda bir türlü yerleştiremedik

istediğimiz şeyi bir daha tekrar edeyim

ilk vazife
birinci ve ikinci txt dosyasındaki verileri birleştirip Hex formatında 16 basamaklı sayılar üretebilmek

  • bu tamamlandı

İkinci vazifemiz
Elde ettiğimiz 16basamaklı Hex formatındaki sayıları yukarıdaki kod vasıtasıyla wallet(compressed/uncompressed) yani sıkıştırlmış ve sıkıştırılmamış adresler üretmek

üçüncü vazifemiz
Elde ettiğimiz bu kodları üçüncü dosyamız yeralan mevcut adreslerle çakıştırıp aynı olan adresleri ve o adrese tekabül eden private keyleri dördüncü bir dosyaya yazdırmak
Ama benzer değilse boşuna hiç bir dosyaya yazdırıp yer kaplamasın

Yapabilirseniz minnettar oluruz :smiley:

Tabi ki, söz vermeyim ama bu gün sabaha kadar bir zaman diliminde üzerinde çalışırım. Yapınca da paylaşırım.

Tabi size de uyarsa.

Siz verdiğiniz kodda hangisine dönüştürülmesini istiyorsunuz?

Compressed, adres, compressed bitcoin adres olmak üzere üç değişken yazdırmışsınız, hangisini kullanalım?

1 Beğeni

Abi yukarıdaki kodun çıktısı şu şekilde

bu kodu girince

malumunuz hexadecimal “1” yazan altı siyah çizili olan bizim iki dosyayı birleştirerek oluşturduğumuz 16 haneli hex kodumuz (1’i denemek için girdim)

kod sonucu altı kırmızı çizili olan “Bitcoin address” ve “Compressed Bitcoin Address” oluşuyor

zaten bizim istediğimiz adreslerde bunlar ve bu iki adresi elimizdeki üçüncü. dosyadaki adreslerle çakıştırıp aynı olan adreslerin “Hex kodunu” veya altı mavi çizili olan “Private key WIF , Private key WIF Compressed” dördüncü dosyaya yazdırsın

Bu ikisini kullanmamız gerekiyor
Bitcoin address" ve "Compressed Bitcoin Address

Abi çok teşekkür ederiz

1 Beğeni

bitcoin · PyPI

By kütüphaneyi mi kullandınız?

iki değer oluşturmak için iki farklı fonksiyona dönüştürdüm.

Üçüncü dosyada bir seferde ikisini aramak yerine teker teker ararız diye.

import bitcoin

Kod = input("Lütfen Hex Kodunuzu Girin:")

def compressed_coin_adress(kod):

 valid_private_key = False

 while not valid_private_key:
    private_key = Kod
    decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
    valid_private_key = 0 < decoded_private_key < bitcoin.N

 wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
 compressed_private_key = private_key + '01'
 wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
 public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
 hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
 (public_key_x, public_key_y) = public_key
 if (public_key_y % 2) == 0:
    compressed_prefix = '02'
 else:
    compressed_prefix = '03'
 hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)

 return bitcoin.pubkey_to_address(hex_compressed_public_key)


def coin_adress(kod):
 valid_private_key = False

 while not valid_private_key:
    private_key = Kod
    decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
    valid_private_key = 0 < decoded_private_key < bitcoin.N

 wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
 compressed_private_key = private_key + '01'
 wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
 public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
 hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
 (public_key_x, public_key_y) = public_key
 if (public_key_y % 2) == 0:
    compressed_prefix = '02'
 else:
    compressed_prefix = '03'
 hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)

 return bitcoin.pubkey_to_address(public_key)

print(coin_adress(Kod))
print(compressed_coin_adress(Kod))

Doğru çalıştığını teyid edin, ben de ana koda fonksiyon çağrılarını bağlayayayım.

İkisini aynı anda ararsak, dosyada defalarca arama yapmış olacağız.

Önce, sıkıştırılmış sonra sıkıştırılmamışları ayrı ayrı arayalım.

Şuan bende doğru çalıştı
Direk iki adres çıktı verdi

Aynen abi yanlış hatırlamıyorsam bu olmalı

from time import process_time
import bitcoin
filehandle1 = open('file1.txt', 'r') # First file
filehandle2 = open('file2.txt', 'r') # Second file
filehandle3 = open('file3.txt', 'r') # Check for combine
filehandle4 = open('file4.txt', 'w') # Equal list file

print("Wait for counting records first file...")
filecount = len(filehandle1.readlines())
filehandle1.close() # Don't ask why...
filehandle1 = open('file1.txt', 'r')

count =0
t1_start = process_time() 

def compressed_coin_adress(kod):

    valid_private_key = False

    while not valid_private_key:
        private_key = kod
        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N

    wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
    compressed_private_key = private_key + '01'
    wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
    public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
    hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
    (public_key_x, public_key_y) = public_key
    if (public_key_y % 2) == 0:
        compressed_prefix = '02'
    else:
        compressed_prefix = '03'
    hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
    return bitcoin.pubkey_to_address(hex_compressed_public_key)
    

def coin_adress(kod):
    valid_private_key = False

    while not valid_private_key:
        private_key = kod
        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N

    wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
    compressed_private_key = private_key + '01'
    wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
    public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
    hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
    (public_key_x, public_key_y) = public_key
    if (public_key_y % 2) == 0:
        compressed_prefix = '02'
    else:
        compressed_prefix = '03'
    hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
    return bitcoin.pubkey_to_address(public_key)


while True:
    line1 = filehandle1.readline()
    count = count+1
    if not line1:
        break
    
    while True:
        line2 = filehandle2.readline()

        if not line2:
            filehandle2.close()
            filehandle2 = open('file2.txt', 'r')
            break
        # Compressed Coin Check/   To check coin adress use coin_adress() here 
        # compare_key = coin_adress( line1.strip() + line2.strip())
        
        compare_key = compressed_coin_adress( line1.strip() + line2.strip())
        
        while True:
            line3 =  filehandle3.readline()
         
            if not line3:
                filehandle3.close()
                filehandle3 = open('file3.txt', 'r')
                break
            
            if line3 == compare_key:
                filehandle4.write(line3)
     
    print("Processing: %"+"%0.4f"% ((count/filecount)*100))
    
t1_stop = process_time()
print("Elapsed time in seconds:", t1_stop-t1_start)

filehandle1.close()
filehandle2.close()
filehandle3.close()
filehandle4.close()


Şöyle fonksiyonu eklemeye çalıştım.

Bir miktar dosyaya yazıyor.

Ama bende sizdeki gibi oluşturulmuş adres kodları olmadığı için hatalar alıyorum.

Bu şekilde varsa

compare_key = compressed_coin_adress( line1.strip() + line2.strip())

ile sıkıştırılmış adresleri alabilmeniz lazım.

Eğer key hataları varsa try except arasında kontrol altında tutmaya çalışalım.

Abi denedim bende sürekli hata veriyor

örnek dosyaları buraya yükledim 4 adet txt dosyası

Aynı hatayı alıyorum. Nedenini araştırayım. Bulursam atarım. Geçersiz bir girdi yolladığımızdan oluyor muhtemelen.

Anladım abi teşekkür ederim

Şimdi biraz göz atma şansım, oldu.

Ufaktan göz attım.

from time import process_time
import bitcoin

filehandle1 = open('file1.txt', mode="r", encoding="utf-8") # First file
filehandle2 = open('file2.txt', mode="r", encoding="utf-8") # Second file
filehandle3 = open('file3.txt', mode="r", encoding="utf-8") # Check for combine
filehandle4 = open('file4.txt', 'w') # Equal list file

print("Wait for counting records first file...")
filecount = len(filehandle1.readlines())
filehandle1.seek(0)

count =0
t1_start = process_time() 


def convert_key(kod) :
    valid_private_key = False

    while not valid_private_key:
        private_key = kod
        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N
        
    wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
    compressed_private_key = private_key + '01'
    wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
    public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
    hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
    (public_key_x, public_key_y) = public_key
    if (public_key_y % 2) == 0:
        compressed_prefix = '02'
    else:
        compressed_prefix = '03'
    hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)
    
    return bitcoin.pubkey_to_address(public_key)#, bitcoin.pubkey_to_address(hex_compressed_public_key)


while True:
    line1 = filehandle1.readline()
    count = count+1
    if not line1:
        break
    
    while True:
        line2 = filehandle2.readline()

        if not line2:
            filehandle2.seek(0)
            break
        # Compressed Coin Check/   To check coin adress use coin_adress() here 
        compare_key = convert_key(line1.strip() + line2.strip())
        
        while True:
            line3 =  filehandle3.readline()
         
            if not line3:
                filehandle3.seek(0)
                break
            
            if line3 == compare_key:
                filehandle4.write(line3)
     
    print("Processing: %"+"%0.4f"% ((count/filecount)*100))
    
t1_stop = process_time()
print("Elapsed time in seconds:", t1_stop-t1_start)

filehandle1.close()
filehandle2.close()
filehandle3.close()

public_key için çalıştırabiliyorum.

Ama hex_compressed_public_key için sürekli hata veriyor.

Biraz daha çalışalım bakalım bir çözüm bulabilecek miyiz.

1 Beğeni