How to perform bitcoin seed brute force.
Você está participando de uma caçada ao tesouro no qual uma vez por dia uma palavra de uma seed de Bitcoin é revelada. Com acesso a essa seed você poderá mover o saldo em bitcoin presente no endereço.
Para exemplo suponha que o endereço bc1qc6p8xd60laywglel9rl5a4jxaqtq0z2uqmrzsd possui uma bela quantia em bitcoin e você deseja descobrir a seed desse endereço para sacar tudo.
Suponha também que você conhece 11 das 12 palavras da seed e apenas depois de receber dicas você sabe ordem exata de apenas 9 delas:
flag army oppose enroll ______ output enjoy chimney wink design blast path
Na seed acima as palavras chimney e wink você não sabe a posição correta delas e está faltando uma palavra! Então utilizando o script seedrecover.py você pode tentar realizar uma ataque de força bruta nessa seed.
O script pode ser encontrado em: https://github.com/3rdIteration/btcrecover , é recomendado ter python 3.10 instalado portanto após configurar seu ambiente baixe o repositório e pelo terminal (ou prompt de comando) navegue até a pasta btcrecover-1.11.0
Para instalar os requerimentos da ferramenta use o comando: pip install -r requirements-full.txt
Atenção, este tutorial é para você aprender a realizar um ataque de força bruta em qualquer endereço de Bitcoin. Portanto será ensinado utilizar apenas um comando da ferramenta, existem formas mais eficientes e seguras de utilizar a ferramenta para os casos de tentativa de recuperação de palavras da seed perdidas... leia sua documentação para mais informações.
O comando abaixo auxilia na execução de força bruta em qualquer seed de Bitcoin:
[python seedrecover.py --no-dupchecks --mnemonic-length 12 --language EN --dsw --wallet-type bip39 --addrs bc1qc6p8xd60laywglel9rl5a4jxaqtq0z2uqmrzsd --addr-limit 1 --passphrase-list tokens_passphrase.txt --tokenlist tokens_seed.txt --no-eta]
Não entrarei em detalhes sobre os argumentos utilizados, leia o help da ferramenta para mais informações pois aqui será ensinado apenas o básico para quebrar uma seed de 12 palavras. Mas é importante saber que definindo o argumento --addr-limit 1 significa que a ferramenta vai buscar apenas o primeiro endereço do caminho de derivação, caso você não tem certeza que seja o primeiro endereço coloque um valor maior como 10 ou mais, mas isso impactará drasticamente no tempo. No comando acima substitua o endereço bc1q... pelo o endereço que deseja descobrir a seed.
Esse cenário apresentado o procedimento será rápido já que conhecemos uma boa quantidade de palavras e suas posições. Portanto em alguns cenários o processo será muito demorado e o uso de GPU é ideal para acelerar. Caso deseja suporte a GPU leia a documentação da ferramenta.
Para fins didáticos vamos direto ao ponto. Então suponha também que a seed possui uma passphrase! Assim antes de rodar o código acima no terminal, crie no mesmo diretório do script um arquivo com nome tokens_passphrase que deve conter as possíveis senhas uma por linha utilizada na seed, exemplo:
A imagem acima contém 5 possíveis senhas (passphrase), mas você pode utilizar aqueles famosos arquivos wordlist de senhas vazadas que você encontra pela internet.
Já o arquivo tokens_seed.txt deve conter as palavras da seed que você conhece e possíveis palavras que podem pertencer a seed (você pode copiar o conteúdo completo do arquivo BIP39, mas para acelerar o tutorial colocamos apenas + 4 possíveis palavras que podem estar na seed). Como você já conhece as posições de algumas palavras basta formatar a posição com caracteres especiais.
^palavra significa que é a primeira palavra da seed.
^2^palavra significa que é a segunda palavra da seed.
palavra$ significa que é a última palavra da seed.
+ palavra significa que a palavra está na seed mas você não sabe posição.
palavra significa que você quer testar essa palavra na seed.
Com tudo configurado execute o script passando os argumentos mencionado acima. A imagem abaixo ilustra o resultado da execução da ferramenta:
Seed para o endereço encontrada:
flag army oppose enroll bamboo output enjoy wink chimney design blast path
Passphrase encontrada: nakamoto
Acessando o site https://iancoleman.io/bip39/ e informando essa seed, em "Derived Addresses" você encontrará o mesmo endereço que utilizamos como argumento na seed para BIP84.
*Atenção não utilize a seed utilizada nesse tutorial com finalidade de exemplo e não envie moeda para seus endereços pois agora ela é pública e deve ser descartada. Caso deseja doar um valor visite https://www.limontec.com/p/doacoes.html
COMENTÁRIOS