Gerador de Combinações BIP39 com Python e Mnemonic
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Gerador de Combinações BIP39 com Python e Mnemonic
Este artigo apresenta um script em Python para geração de combinações de palavras da lista BIP39 utilizando a biblioteca mnemonic. A proposta é testar diferentes combinações de frases mnemônicas e validar se são consideradas legítimas de acordo com o padrão do Bitcoin Improvement Proposal 39 (BIP39).
O que é BIP39?
O BIP39 é um padrão utilizado por carteiras de criptomoedas para converter uma sequência de palavras mnemônicas em uma seed criptográfica. Esse padrão é amplamente usado por carteiras como Ledger, Trezor, Trust Wallet, entre outras. Uma frase BIP39 típica pode conter 12, 18 ou 24 palavras da lista oficial do protocolo.
A lista oficial de palavras pode ser consultada no repositório oficial no GitHub.
Objetivo do Script
O script tem como função combinar as 24 primeiras palavras da lista BIP39 (como exemplo) e formar frases de 24 palavras, utilizando:
- 16 palavras fixas “abandon”
- 1 palavra fixa “length”
- 7 palavras permutadas sem repetição das 24 primeiras do dicionário
Como funciona o script
O script segue as etapas abaixo:
- Importa a biblioteca
mnemonice a funçãopermutationsdo móduloitertools - Define as palavras fixas (início da frase)
- Permuta as 7 palavras restantes
- Concatena as 16 palavras fixas + “length” + 7 permutadas
- Valida se a frase final é uma frase BIP39 válida usando
mnemo.check() - Salva o progresso a cada 1000 iterações no arquivo
indice_salvo.txt
Trecho principal do código
import itertools
from mnemonic import Mnemonic
def gerar_combinacoes_bip39():
mnemo = Mnemonic("english")
palavras = mnemo.wordlist[:24]
palavras_iniciais = ["abandon"] * 16 + ["length"]
combinacoes_restantes = itertools.permutations(palavras, 7)
try:
with open("indice_salvo.txt", "r") as file:
indice_salvo = int(file.readline().strip())
except FileNotFoundError:
indice_salvo = 0
for j, combinacao in enumerate(itertools.islice(combinacoes_restantes, indice_salvo, None), start=indice_salvo):
frase_completa = " ".join(palavras_iniciais + list(combinacao))
if mnemo.check(frase_completa):
print(f"Índice: {j + 1}, Frase válida: {frase_completa}")
if (j + 1) % 1000 == 0:
with open("indice_salvo.txt", "w") as file:
file.write(str(j + 1))
gerar_combinacoes_bip39()
Validação com segurança
A biblioteca mnemonic, mantida pela Trezor no GitHub, oferece suporte nativo para validar frases completas segundo as regras do BIP39. Isso é crucial para evitar que frases inválidas sejam usadas em ambientes críticos.
Limitações e performance
Como o número de combinações possíveis de 7 palavras entre 24 é extremamente grande (acima de 4 milhões), esse script é apenas uma demonstração educacional. Para grandes volumes, é recomendável usar otimizações como multiprocessing ou computação distribuída.
Importante!
Este conteúdo é técnico e educativo. Não utilize este script para tentar recuperar carteiras ou acessar chaves privadas sem autorização. O uso indevido de ferramentas criptográficas pode violar termos legais e éticos.
Exemplo de frase válida
Uma frase BIP39 válida pode ser algo como:
abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon length bulb cage adult pilot limb detail lunar gun custom erupt
Note que a frase acima não é segura para uso real e foi gerada apenas como exemplo ilustrativo.

Comentários
Comente só assim vamos crescer juntos!