
Gerador de Sequências Pseudoaleatórias para Chaves Bitcoin com Python
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Gerador de Sequências Pseudoaleatórias para Chaves Bitcoin com Python
Este artigo apresenta um script em Python que gera sequências pseudoaleatórias de números inteiros muito grandes, interpretados como chaves privadas Bitcoin. A partir desses números, o script converte para o formato WIF (Wallet Import Format) comprimido e calcula o endereço Bitcoin correspondente.
Funcionamento do Script
O script utiliza uma abordagem eficiente de geração sem armazenar a sequência completa em memória, evitando sobrecarga computacional. A ideia é gerar sequências pseudoaleatórias baseadas em um seed inicial dentro de um intervalo definido pelo parâmetro x_expoente
, que determina a faixa numérica do gerador.
Detalhes Técnicos
- Intervalo: números entre 2x_expoente-1 e 2x_expoente - 1;
- Seed: ponto inicial da sequência dentro do intervalo;
- Gerador: fórmula recursiva
x = (x * 7 + 3) % intervalo + inicio
para gerar a sequência; - Chave privada: cada número é convertido para bytes e transformado em chave privada Bitcoin;
- WIF comprimido: formato utilizado para importar/exportar chaves privadas;
- Endereço Bitcoin: derivado da chave privada.
Objetivo e Aplicação
O script busca encontrar um endereço Bitcoin específico, gerando sequências a partir de seeds consecutivas e testando os endereços derivados. Se o endereço alvo for encontrado, a chave WIF e o endereço são salvos em arquivo texto, e a execução é encerrada.
Exemplo de Saída do Script
Intervalo de busca:
Decimal: 1180591620717411303424 até 2361183241434822606847
Hexadecimal: 0x1000000000000000000 até 0x1fffffffffffffffff
Este script gera sequências pseudoaleatórias de números dentro de um intervalo definido por 'x_expoente'.
Para cada número gerado, ele interpreta como uma chave privada Bitcoin, gera a WIF comprimida e o endereço correspondente.
O parâmetro 'length' determina quantos números cada sequência terá.
O script começa com uma seed inicial e gera uma sequência de 'length' números.
Se o endereço alvo não for encontrado nessa sequência, ele incrementa a seed em 1 e gera uma nova sequência de 'length' números.
Esse processo se repete até percorrer todo o intervalo definido por 'x_expoente' ou até encontrar o endereço desejado.
Quando o endereço alvo é encontrado, o script salva a chave WIF e o endereço em um arquivo .txt com o nome do endereço e finaliza a execução.
Considerações Importantes
- O intervalo definido por
x_expoente
gera números muito grandes, tornando a busca exaustiva inviável para o intervalo completo; - Para buscas em espaços tão vastos, recomenda-se usar amostragem aleatória, computação distribuída ou algoritmos especializados;
- Este script é educativo e deve ser usado com responsabilidade, entendendo os riscos e limitações na segurança de chaves criptográficas;
Como Utilizar
- Configure o valor de
x_expoente
para definir o intervalo; - Defina o endereço Bitcoin alvo para busca;
- Execute o script em ambiente Python com as bibliotecas
bit
instaladas; - Acompanhe a saída no console para saber se o endereço foi encontrado.
Bibliotecas e Referências Oficiais
Script Completo
from bit import PrivateKey
from bit.format import bytes_to_wif
import sys
def pseudo_random_sequence_generator(x_expoente, seed, length):
"""
Gera uma sequência pseudoaleatória de números usando um gerador,
evitando armazenar a sequência inteira na memória.
"""
inicio = 2 ** (x_expoente - 1)
fim = (2 ** x_expoente) - 1
intervalo = fim - inicio + 1 # tamanho do intervalo
if not (inicio <= seed <= fim):
raise ValueError(f"Seed {seed} está fora do intervalo [{inicio}, {fim}]")
x = seed
yield x # Produz a seed inicial
for _ in range(length - 1):
x = (x * 7 + 3) % intervalo + inicio
yield x # Produz o próximo número da sequência
# Parâmetros
x_expoente = 71
length = 500
inicio = 2 ** (x_expoente - 1)
fim = (2 ** x_expoente) - 1
print(f"Intervalo de busca:")
print(f" Decimal: {inicio} até {fim}")
print(f" Hexadecimal: {hex(inicio)} até {hex(fim)}\n")
target_address = "1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU"
print(
"Este script gera sequências pseudoaleatórias de números dentro de um intervalo definido por 'x_expoente'.\n"
"Para cada número gerado, ele interpreta como uma chave privada Bitcoin, gera a WIF comprimida e o endereço correspondente.\n"
"O parâmetro 'length' determina quantos números cada sequência terá.\n"
"O script começa com uma seed inicial e gera uma sequência de 'length' números.\n"
"Se o endereço alvo não for encontrado nessa sequência, ele incrementa a seed em 1 e gera uma nova sequência de 'length' números.\n"
"Esse processo se repete até percorrer todo o intervalo definido por 'x_expoente' ou até encontrar o endereço desejado.\n"
"Quando o endereço alvo é encontrado, o script salva a chave WIF e o endereço em um arquivo .txt com o nome do endereço e finaliza a execução.\n"
)
for seed in range(inicio, fim + 5): # Limite pequeno para exemplo
for num in pseudo_random_sequence_generator(x_expoente, seed, length):
private_key_bytes = num.to_bytes(32, byteorder='big')
wif_compressed = bytes_to_wif(private_key_bytes, compressed=True)
key = PrivateKey(wif_compressed)
print(f"{num} - WIF: {wif_compressed}, Endereço: {key.address}", end="\r")
if key.address == target_address:
filename = f"{target_address}.txt"
with open(filename, "w") as f:
f.write(f"WIF: {wif_compressed}\n")
f.write(f"Endereço: {key.address}\n")
print(f"\nEndereço alvo encontrado! Dados salvos em {filename}")
sys.exit(0)
Nota: Este conteúdo é para fins educativos e não deve ser utilizado para tentativa de acesso não autorizado a carteiras Bitcoin. Sempre faça análise crítica e invista com responsabilidade.
Comentários
Comente só assim vamos crescer juntos!