'str' object has no attribute 'decode'. Did you mean: 'encode'?

lactosa

Новичок
Пользователь
Дек 27, 2022
6
0
1
WIN 10
Python 3.11.0

Нужен скрипт из HEX получить адрес биткоина кошелька,массово.Все что нашел вот это,на сайте написали как исправить,но мне не понять.С питоном мало знаком,пару недель.С гуглом на пару один скрипт простой "собрал"...Так вот нашел как конвертировать в WIF,а дальше тупик!Может этот код удастся подправить.Выдает это:AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?На сайте где нашел код посоветовали это: z - это объект str, поэтому вам нужно преобразовать его в байтовый объект, а затем декодировать. Когда вы используете декодирование, вы должны передать то, что хотите декодировать, а не строковый или байтовый объект.И предложил решение:bytes.fromhex(z).decode("ASCII")Для меня это не понятно.Как исправить?Или что то готовое есть.Могу ссылку скинуть где это обсуждали,но боюсь забанят)Вроде ни чего не забыл добавить,заранее благодарствую!

Вот не мой код:

Python:
import binascii, hashlib, base58, sys, ecdsa, codecs
arq1 = open('list-WIF-Uncompressed.txt', 'w')
arq2 = open('list-WIF-Compressed.txt', 'w')
arq3 = open('list-Addresses-Uncompressed.txt', 'w')
arq4 = open('list-Addresses-Compressed.txt', 'w')
arq5 = open('list-AllOrdened.txt', 'w')

arq5.write("      Address Uncompressed          |        Address Compressed           |                    Private Key WIF                   |              Private Key WIF Compressed \n")

def convert_pvk_Hex_to_WIF_Uncompressed(z):
    private_key_static = z
    extended_key = "80"+private_key_static
    first_sha256 = hashlib.sha256(binascii.unhexlify(extended_key)).hexdigest()
    second_sha256 = hashlib.sha256(binascii.unhexlify(first_sha256)).hexdigest()
    final_key = extended_key+second_sha256[:8]
    WIF = base58.b58encode(binascii.unhexlify(final_key))
    print("Private Key WIF Uncompress: " + WIF)
    arq1.write("%s \n" % WIF)
    arq5.write("%s    " % WIF)

def convert_pvk_Hex_to_WIF_Compressed(z):
    private_key_static = z
    extended_key = "80"+private_key_static+'01'
    first_sha256 = hashlib.sha256(binascii.unhexlify(extended_key)).hexdigest()
    second_sha256 = hashlib.sha256(binascii.unhexlify(first_sha256)).hexdigest()
    final_key = extended_key+second_sha256[:8]
    WIFc = base58.b58encode(binascii.unhexlify(final_key))
    print("Private Key WIF Compressed: " + WIFc)
    arq2.write("%s \n" % WIFc)
    arq5.write("%s    \n" % WIFc)



def conv_pvkhex_to_bitcoinaddress_uncompressed(z):

    zk = ecdsa.SigningKey.from_string(z.decode('hex'), curve=ecdsa.SECP256k1)
    zk_verify = zk.verifying_key

    z_public_key = ('\04' + zk.verifying_key.to_string()).encode('hex')
  
    #first_sha256 = hashlib.sha256(binascii.unhexlify(z_public_key)).hexdigest()

    ripemd160 = hashlib.new('ripemd160')
    ripemd160.update(hashlib.sha256(z_public_key.decode('hex')).digest())
    ripemd160_result = ripemd160.hexdigest()
    step3 =  '00' + ripemd160_result
    
    second_sha256 = hashlib.sha256(binascii.unhexlify(step3)).hexdigest()

    third_sha256 = hashlib.sha256(binascii.unhexlify(second_sha256)).hexdigest()

    step6 = third_sha256[:8]

    step7 = step3+step6

    bitcoin_uncompressed_address_std = base58.b58encode(binascii.unhexlify(step7))
    print("Bitcoin Address Uncompress: " + bitcoin_uncompressed_address_std)
    arq3.write("%s \n" % bitcoin_uncompressed_address_std)
    arq5.write("%s    " % bitcoin_uncompressed_address_std)

def conv_pvkhex_to_bitcoinaddress_compressed(z):

    pvk_to_bytes = codecs.decode (z, 'hex')
  

    key = ecdsa.SigningKey.from_string (pvk_to_bytes, curve=ecdsa.SECP256k1).verifying_key
    key_bytes = key.to_string()
    key_hex = codecs.encode(key_bytes, 'hex')

    if(ord(bytearray.fromhex(key_hex[-2:])) % 2 == 0):

        public_key_compressed = '02' + key_hex[0:64]

        #Making SHA-256 of pubkey compressed and making RIPEMD-160 of this
        public_key_in_bytes = codecs.decode(public_key_compressed, 'hex')
        sha256_public_key_compressed = hashlib.sha256(public_key_in_bytes)
        sha256_public_key_compressed_digest = sha256_public_key_compressed.digest()

        ripemd160 = hashlib.new('ripemd160')
        ripemd160.update(sha256_public_key_compressed_digest)
        ripemd160_digest = ripemd160.digest()
        ripemd160_hex = codecs.encode(ripemd160_digest, 'hex')

        #Adding network bytes 0x00
        public_key_compressed_bitcoin_network = b'00' + ripemd160_hex
        public_key_compressed_bitcoin_network_bytes = codecs.decode(public_key_compressed_bitcoin_network, 'hex')

        #Making Checksum for MainNet, this is SHA-256 2x turns and get the firsts 4 bytes
        sha256_one = hashlib.sha256(public_key_compressed_bitcoin_network_bytes)
        sha256_one_digest = sha256_one.digest()
        sha256_two = hashlib.sha256(sha256_one_digest)
        sha256_two_digest = sha256_two.digest()
        sha256_2_hex = codecs.encode(sha256_two_digest, 'hex')
        checksum = sha256_2_hex[:8]

        bitcoin_compressed_address_hex = (public_key_compressed_bitcoin_network + checksum).decode('utf-8')
        bitcoin_compressed_address = base58.b58encode(binascii.unhexlify(bitcoin_compressed_address_hex))
        arq4.write("%s \n" % bitcoin_compressed_address)
        arq5.write("%s    " % bitcoin_compressed_address)
        print("Bitcoin Address Compressed: " + bitcoin_compressed_address)

    else:
        #The last byte of value for Y is Odd, this require add '03' at first

        public_key_compressed = '03' + key_hex[0:64]

        #Making SHA-256 of pubkey compressed and making RIPEMD-160 of this
        public_key_in_bytes = codecs.decode(public_key_compressed, 'hex')
        sha256_public_key_compressed = hashlib.sha256(public_key_in_bytes)
        sha256_public_key_compressed_digest = sha256_public_key_compressed.digest()

        ripemd160 = hashlib.new('ripemd160')
        ripemd160.update(sha256_public_key_compressed_digest)
        ripemd160_digest = ripemd160.digest()
        ripemd160_hex = codecs.encode(ripemd160_digest, 'hex')

        #Adding network bytes 0x00
        public_key_compressed_bitcoin_network = b'00' + ripemd160_hex
        public_key_compressed_bitcoin_network_bytes = codecs.decode(public_key_compressed_bitcoin_network, 'hex')

        #Making Checksum for MainNet, this is SHA-256 2x turns and get the firsts 4 bytes
        sha256_one = hashlib.sha256(public_key_compressed_bitcoin_network_bytes)
        sha256_one_digest = sha256_one.digest()
        sha256_two = hashlib.sha256(sha256_one_digest)
        sha256_two_digest = sha256_two.digest()
        sha256_2_hex = codecs.encode(sha256_two_digest, 'hex')
        checksum = sha256_2_hex[:8]

        bitcoin_compressed_address_hex = (public_key_compressed_bitcoin_network + checksum).decode('utf-8')
        bitcoin_compressed_address = base58.b58encode(binascii.unhexlify(bitcoin_compressed_address_hex))
        arq4.write("%s \n" % bitcoin_compressed_address)
        arq5.write("%s    " % bitcoin_compressed_address)
        print("Bitcoin Address Compressed: " + bitcoin_compressed_address)
 

with open("brute-pvks.txt") as file:
    for line in file:

        pvk_hexadecimal = str.strip(line)
        print("__________________________________________________\n")
        print("Converting pvk: " + pvk_hexadecimal)
        
        conv_pvkhex_to_bitcoinaddress_uncompressed(pvk_hexadecimal)
        conv_pvkhex_to_bitcoinaddress_compressed(pvk_hexadecimal)
        convert_pvk_Hex_to_WIF_Uncompressed(pvk_hexadecimal)
        convert_pvk_Hex_to_WIF_Compressed(pvk_hexadecimal)       



print("__________________________________________________\n")
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Приведи пример hex строки и какой адрес должен получится
 

lactosa

Новичок
Пользователь
Дек 27, 2022
6
0
1
Приведи пример hex строки и какой адрес должен получится
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

Зжатый не зжаты...

1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN
1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV
 

lactosa

Новичок
Пользователь
Дек 27, 2022
6
0
1
Все разобрался,спасибо!
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Все разобрался,спасибо!
Вот уж не зачто)
 

Форум IT Специалистов