O guia completo para a recuperação da carteira Electrum

O Electrum existe desde novembro de 2011 — o que o torna antigo para os padrões do mundo das criptomoedas. Essa longevidade é simultaneamente uma bênção e uma maldição para a recuperação. Uma bênção porque o formato da carteira está bem documentado e a base de código é Python de código aberto que se consegue realmente ler. Uma maldição porque quinze anos de alterações de versão significam que o ficheiro da carteira guardado no disco rígido de alguém pode estar em qualquer um de meia dúzia de formatos, cada um com esquemas de encriptação, percursos de derivação e tipos de sementes diferentes. Já recuperei carteiras Electrum que datam de 2012, e cada época tem as suas próprias dores de cabeça específicas.
Este guia abrange todo o panorama técnico da recuperação da carteira Electrum – desde a estrutura interna dos ficheiros da carteira, passando pelos mecanismos de encriptação nas diferentes versões, até ao pesadelo do caminho de derivação que faz com que «o meu saldo apareça como zero» seja o pedido de assistência mais comum no mundo do Bitcoin.
Como o Electrum armazena as suas chaves
O Electrum guarda a sua carteira num único ficheiro autónomo. Por predefinição, chama-se default_wallet (sem extensão) e encontra-se numa localização previsível, dependendo do seu sistema operativo:
Janelas: C:\Users\<USER>\AppData\Roaming\Electrum\wallets\
macOS: ~/Library/Application Support/Electrum/wallets/
Linux: ~/.electrum/wallets/
O ficheiro da carteira está no formato JSON – legível por humanos, estruturado e surpreendentemente simples. Abra uma carteira não encriptada num editor de texto e verá todo o modelo de dados: armazenamentos de chaves, endereços, histórico de transações, etiquetas, contactos, tudo. O keystore O objeto é o cerne da recuperação.
O seed campo ali – se a carteira não estiver encriptada ou se conseguires desencriptá-la, tens tudo o que precisas. O xprv (chave privada estendida) permite derivar todas as chaves secundárias que a carteira já utilizou. A seed_type indica qual o esquema de derivação utilizado, e derivation mostra o caminho da raiz.
No caso das carteiras mais antigas (anteriores à versão 2.0), a estrutura é diferente. Em vez de bip32, vais ver type: "old" com mpk (chave pública principal). Estes campos utilizam o método de derivação de chaves proprietário original do Electrum, que é anterior tanto ao BIP32 como ao BIP39. Mais informações sobre isso abaixo.
Os ficheiros de carteira que contêm chaves privadas importadas (não derivadas de uma semente) utilizam type: "imported" no keystore, e essas chaves são armazenadas diretamente. Estas carteiras não pode ser recuperada a partir de uma frase-semente – O próprio ficheiro da carteira é a sua única cópia de segurança. Se o perder, essas chaves desaparecem.
As duas camadas de encriptação do Electrum
O Electrum possui duas camadas de encriptação independentes, e confundir as duas é um dos erros de recuperação mais comuns com que me deparo.
Camada 1: Criptografia do armazenamento de chaves (chaves privadas e semente)
As suas chaves privadas e a sua frase de inicialização são encriptadas utilizando AES-256-CBC. A chave de encriptação é gerada através da aplicação da sua palavra-passe a duas rondas de SHA-256 – é só isso. Não é PBKDF2 com centenas de milhares de iterações, como o MetaMask ou outros. Não é scrypt. Apenas SHA256(SHA256(password)). É por isso que as carteiras Electrum são significativamente mais rápidas de atacar por força bruta do que praticamente qualquer outra carteira moderna. Um teste de desempenho com o Hashcat, mesmo em hardware de GPU modesto, consegue testar centenas de milhares de possíveis senhas por segundo numa carteira Electrum.
Esta camada protege a semente e as chaves privadas contidas no ficheiro da carteira. Quando introduz a sua palavra-passe para assinar uma transação, o Electrum descodifica temporariamente as chaves privadas na memória, assina a transação e, em seguida, elimina as chaves descodificadas. O ficheiro da carteira no disco mantém sempre as chaves encriptadas.
Camada 2: Encriptação de ficheiros completos (ECIES)
Desde a versão 2.8 (lançada por volta de 2016), o Electrum permite a encriptação do ficheiro completo por predefinição. Esta funcionalidade utiliza o Esquema de Encriptação Integrado de Curvas Elípticas (ECIES) – um método de encriptação assimétrica em que o próprio ficheiro da carteira é encriptado utilizando uma chave pública derivada da sua palavra-passe. O ficheiro encriptado apresenta-se como um texto binário sem sentido, em vez de JSON, e é necessária a palavra-passe apenas para o abrir.
A diferença fundamental: quando a encriptação de ficheiro completo está ativada, a carteira não revela qualquer informação sem a palavra-passe correta. Não é possível espreitar o seu conteúdo para ver endereços, transações ou mesmo o tipo de carteira. Todo o conteúdo JSON está protegido por ECIES. Quando a encriptação de ficheiro completo está desativada (ou não estava disponível em versões anteriores), o JSON é legível, mas o xprv e seed os campos contêm texto cifrado com AES.
Esta distinção é importante para a recuperação, pois altera a sua superfície de ataque. Com apenas a encriptação do keystore, ainda é possível identificar o tipo de carteira, ver os endereços e confirmar que se tem o ficheiro certo antes de tentar um ataque de força bruta. Com a encriptação de todo o ficheiro, fica-se às cegas até conseguir decifrar a palavra-passe.
O sistema de sementes do Electrum – não é o BIP39, e isso é extremamente importante
É aqui que começam a maioria dos problemas com a recuperação. O Electrum utiliza um formato de semente próprio que não é, explicitamente, compatível com o BIP39. Se alguém tentar importar uma semente do Electrum para uma carteira que apenas suporte o BIP39 (como o Exodus, a Trust Wallet ou a maioria das carteiras de hardware), esta será rejeitada de imediato ou irá gerar endereços completamente errados.
A diferença é técnica, mas importante. O BIP39 pega nas suas palavras mnemónicas, mapeia-as de volta para a entropia utilizando uma lista de palavras fixa, adiciona uma soma de verificação e, em seguida, executa o PBKDF2 com a frase-passe «mnemonic» + palavra de extensão opcional durante 2048 iterações utilizando o HMAC-SHA512. O Electrum 2.0+ faz algo superficialmente semelhante, mas criticamente diferente: executa o PBKDF2 durante 2048 iterações utilizando a frase-passe «electrum» + palavra de extensão opcional. A mesma contagem de iterações, o mesmo HMAC-SHA512, uma cadeia de salt completamente diferente. A chave mestra resultante é totalmente diferente, mesmo com as mesmas 12 palavras.
Havia também um erro nas versões mais antigas do Electrum (por volta do issue #4566) relacionado com a normalização Unicode da frase-passe – mais concretamente, o Electrum removia de forma agressiva os espaços em branco das frases-passe BIP39, incluindo a remoção de um espaço quando havia dois espaços consecutivos. Se alguém definisse uma frase-passe com espaçamento invulgar, este erro poderia tornar a sua carteira irrecuperável nas versões mais recentes, que corrigiram a normalização.
As sementes do Electrum também incorporam um número de versão na própria semente. A versão é obtida através do hash da frase-semente e da verificação se os primeiros bits correspondem a um prefixo conhecido. Esta versão indica qual o esquema de derivação a utilizar:
- Versão inicial
01— Carteira padrão (antiga, pré-SegWit) - Versão inicial
100— Carteira SegWit (SegWit nativo, Bech32) - Versão inicial
101— Carteira com autenticação de dois fatores (com co-signatário TrustedCoin) - Versão inicial
102— Multiguerra SegWit
Na verdade, trata-se de um design inteligente – elimina o dilema de «que caminho de derivação devo usar?», que afeta o BIP39. Mas isso significa que as sementes do Electrum são um «jardim murado». Só funcionam no Electrum (ou em software que suporte explicitamente o formato de semente do Electrum, como a ferramenta BIP39 de Ian Coleman, que possui um modo Electrum).
As três eras das sementes
Ficheiros de sementes anteriores à versão 2.0 (Electrum 1.x, formato «antigo»): Estes utilizavam uma codificação bidirecional – a frase-semente podia ser convertida de volta num valor de entropia específico e vice-versa. Isto exigia uma lista de palavras exata e fixa. A derivação era um esquema próprio do Electrum (não o BIP32), utilizando caminhos como m/0/k para receber endereços e m/1/k para endereços de troco. Estas carteiras são identificáveis por "seed_type": "old" no ficheiro da carteira. Hoje em dia são raros, mas ainda os vejo em pessoas que criaram carteiras de Bitcoin em 2012-2013 e se esqueceram delas.
Sementes do Electrum 2.x (2014+): Introduzida a estrutura de carteira HD BIP32 com o sistema de versões de sementes do Electrum. As carteiras padrão utilizam o caminho de derivação m/0h com endereços de destino em m/0h/0/k e trocar em m/0h/1/k. Note que este NÃO é o caminho do BIP44 (m/44'/0'/0'). Esta derivação não convencional é uma fonte constante de confusão.
Sementes SegWit do Electrum 3.x+: Quando o suporte ao SegWit foi implementado, o Electrum adicionou novas versões de sementes para carteiras SegWit nativas. Estas utilizam o caminho de derivação m/0h da mesma forma – o caminho raiz é o mesmo, mas o prefixo da versão da semente garante que a carteira saiba que deve gerar endereços Bech32 (bc1…) em vez de endereços legados (1…).
Caminhos de derivação e o problema da «carteira vazia»
Os caminhos de derivação são a razão mais comum pela qual as pessoas restauram uma semente e observam um saldo nulo. Cada componente do caminho é importante, e um único número errado resulta em chaves e endereços completamente diferentes.
Eis o panorama do caminho de derivação do Electrum:
Sementes nativas do Electrum (não BIP39):
- Carteira padrão clássica:
m/0h→ receber emm/0h/0/k, troca emm/0h/1/k - Carteira padrão SegWit:
m/0h→ receber emm/0h/0/k, troca emm/0h/1/k(mesmo caminho, codificação de endereço diferente) - Electrum antigo (versão anterior à 2.0):
m/kpara receber,m/kcom uma sequência de teclas separada para a alteração
Sementes BIP39 importadas para o Electrum:
- Legado (P2PKH, endereços que começam por 1):
m/44'/0'/0' - Segwit encapsulado (P2SH-P2WPKH, endereços que começam por 3):
m/49'/0'/0' - SegWit nativo (P2WPKH, endereços que começam por bc1):
m/84'/0'/0' - Taproot (P2TR, endereços que começam por bc1p):
m/86'/0'/0'
A armadilha: se alguém criou uma carteira no Trezor Suite (que utiliza o BIP39 e m/84'/0'/0' (para SegWit nativo), e depois tentarem restaurar no Electrum utilizando uma semente do tipo Electrum, os caminhos não irão coincidir. Mesmo que selecionem corretamente «Semente BIP39» nas opções do Electrum, terão ainda de escolher o tipo de script correto (legado vs. SegWit vs. SegWit nativo) e verificar se o caminho de derivação corresponde ao da carteira de origem.
E é aqui que a situação se complica: o Electrum permite importar sementes BIP39, mas NÃO as gera. Ao criar uma nova carteira, o Electrum produz sempre o seu próprio formato de semente. A opção de importação BIP39 existe exclusivamente para compatibilidade entre carteiras. Mas o Electrum aceita de bom grado uma semente BIP39 inválida (uma com uma palavra de checksum errada) – exibe um pequeno aviso de «checksum falhou», mas não o impede de prosseguir. Isto levou as pessoas a criarem carteiras com sementes com erros ortográficos que parecem funcionais até tentarem restaurá-las.
Solução prática para o problema da carteira vazia: se estiver a restaurar uma semente e vir um saldo nulo, experimente sistematicamente diferentes combinações. Primeiro, determine se a semente está no formato Electrum ou BIP39. Se estiver no formato Electrum, a derivação é automática. Se for BIP39, terá de experimentar cada tipo de script: primeiro o segwit nativo (o mais comum nas carteiras recentes), depois o segwit encapsulado e, por fim, o legado. O Electrum 4.x inclui um botão “Detectar Contas Existentes” durante a restauração BIP39 que consulta o servidor para obter o histórico de transações em caminhos de derivação comuns. Use-o.
Se a carteira tiver várias contas (o que é comum em carteiras de hardware que utilizam o Trezor Suite), lembre-se de que o Electrum não suporta várias contas por ficheiro de carteira. É necessário criar uma carteira separada para cada conta, incrementando o índice da conta no caminho de derivação: m/84'/0'/0' para a conta 1, m/84'/0'/1' para a conta 2, e assim por diante.
O limite de diferença e por que razão os seus fundos podem não aparecer
Mesmo com a semente e o caminho de derivação corretos, pode parecer que faltam fundos devido ao limite de intervalo. O Electrum gera endereços sequencialmente e interrompe a verificação quando encontra 20 endereços não utilizados consecutivos (o limite de intervalo predefinido). Se alguém utilizou os endereços com índices de 0 a 5 e depois saltou para o índice 30 (talvez através de uma API ou de outra carteira), o Electrum não detectará os endereços a partir do índice 25, pois atinge o limite de intervalo e interrompe a pesquisa.
A solução é simples: na consola do Electrum (Ver → Mostrar Consola), execute:
wallet.change_gap_limit(50)
Ou qualquer outro número que seja necessário. Em seguida, inicie uma ressincronização. Em casos extremos, defini limites de diferença superiores a 200 para carteiras utilizadas programaticamente (plataformas de comércio eletrónico, páginas de doações).
Histórico de versões e o que pode deixar de funcionar entre atualizações
As atualizações da versão do Electrum têm, historicamente, prejudicado a compatibilidade com versões anteriores. Quando se abre um ficheiro de carteira numa versão mais recente, esta atualiza frequentemente o formato interno, e as versões mais antigas não conseguem ler o ficheiro atualizado. Isto está explicitamente documentado, mas é amplamente ignorado.
As transições da versão crítica:
1.x → 2.0 (2014): Mudança completa do formato da carteira. O suporte à carteira HD BIP32 substituiu a antiga derivação proprietária. O processo de atualização regenera todos os endereços. O Electrum 1.x não consegue ler ficheiros de carteira 2.x, ponto final. Se alguém precisar de abrir uma carteira v1, terá de instalar especificamente o Electrum 1.9.8.
2.x → 3.0 (2017): Foi adicionado um novo protocolo de servidor e suporte a SegWit. Os ficheiros da carteira receberam uma nova revisão de formato. Foi introduzido o tipo de semente SegWit. O interno seed_version O campo no JSON da carteira regista esta informação — se vir seed_version: 13 ou 14, é uma carteira da era v3.
3.x → 4.0 (2020): Suporte à Lightning Network, PSBTs, reestruturação interna significativa. Os canais Lightning são armazenados no ficheiro da carteira e, se houver canais abertos desde a última utilização da carteira, a recuperação apenas da semente não permitirá recuperar o estado dos canais Lightning. O próprio ficheiro da carteira é essencial para a recuperação da Lightning.
Série 4.x (2020–presente): Aperfeiçoamentos contínuos. A versão 4.1.0 removeu a opção de criar carteiras legadas através da interface de utilizador normal (passando a utilizar o SegWit nativo por predefinição). A versão 4.5+ atualizou ainda mais a versão do armazenamento. O código de atualização da base de dados da carteira lida com a migração de formatos muito antigos, mas nem sempre é um processo tranquilo — existem casos extremos no percurso de atualização a partir de carteiras v1.9.8 que podem desencadear mensagens de erro sugerindo que contacte os programadores.
A lição: antes de atualizar o Electrum, copie sempre o ficheiro da sua carteira para um local separado. Se a atualização causar algum problema, poderá voltar à versão anterior utilizando o ficheiro original. E nunca, em hipótese alguma, volte a uma versão anterior depois de a atualização ter afetado o ficheiro da carteira.
A quebra de senhas e por que o Electrum é particularmente vulnerável
A derivação de chaves do Electrum – simplesmente SHA256(SHA256(password)) – é uma das mais fracas de todo o ecossistema de carteiras de criptomoedas. Não há salt, nem PBKDF2, nem scrypt, nem argon2. Duas rondas de SHA-256, e essa é a sua chave de encriptação para o AES-256-CBC.
Para contextualizar: o MetaMask utiliza 600 000 iterações PBKDF2. O Bitcoin Core utiliza cerca de 100 000+. O Electrum utiliza… duas operações SHA-256. Numa GPU moderna, o hashcat consegue testar milhares de milhões de hashes SHA-256 por segundo. Mesmo tendo em conta a verificação da descodificação AES, a quebra de senhas do Electrum é, em ordens de magnitude, mais rápida do que a de quase qualquer outra carteira.
O Hashcat suporta o Electrum através de três modos, consoante o tipo de salt da carteira:
- Modelo 16600 – Carteira Electrum (tipo Salt 1-3): Abrange a grande maioria das carteiras. O formato do hash é semelhante a
$electrum$1*<hex_salt>*<hex_data>. - Modo 21700 – Carteira Electrum (Tipo Salt 4): formato de encriptação de carteira mais recente com encriptação de ficheiro completo ECIES.
- Modo 21800 – Carteira Electrum (Tipo de Salt 5): a mais recente variante de encriptação.
Para extrair o hash, utilize electrum2john.py do projeto John the Ripper.
O btcrecover é a outra ferramenta de referência e, sem dúvida, mais prática para a maioria dos cenários de recuperação, uma vez que suporta a geração de senhas com base em tokens. Basta especificar os componentes de que se lembra («Sei que começava por “Bitcoin” e terminava com alguns números e talvez um ponto de exclamação») e a ferramenta gera todas as permutações possíveis. No caso específico do Electrum, o btcrecover suporta tanto a recuperação a partir do ficheiro de carteira encriptado como a recuperação direta da frase-semente, para os casos em que se dispõe de uma frase-semente parcial com palavras em falta ou incertas.
Ficheiros de carteira corrompidos
A corrupção de ficheiros de carteira no Electrum pode assumir várias formas, e o método de recuperação depende do problema específico – se tiver algum caso concreto, pode contactar-nos através do endereço david@walletrecoveryservice.com e tentaremos encontrar uma solução para si.
As carteiras com o «erro da v1.9.8»: existe um tipo específico de carteiras corrompidas da versão 1.9.8 do Electrum em que a introdução de uma semente incorreta durante a restauração criava um ficheiro de carteira que parecia válido, mas que não continha qualquer material de chave. O código da base de dados de carteiras do Electrum atual inclui uma verificação especial para este caso: procura carteiras sem chaves mestras e com uma semente de versão v6, e avisa o utilizador. Estas carteiras não contêm fundos recuperáveis.
Corrupção do estado dos canais Lightning: Se uma carteira com canais Lightning abertos ficar corrompida, a restauração apenas a partir da semente NÃO recuperará os fundos Lightning. Os canais Lightning são dependentes do estado – o estado mais recente do canal (transações de compromisso, chaves de revogação) encontra-se apenas no ficheiro da carteira. O Electrum inclui um mecanismo de cópia de segurança dos canais (SCBs – Static Channel Backups), mas estes apenas permitem o encerramento forçado dos canais, não a sua retomada. Se tiver uma carteira corrompida com fundos Lightning, a prioridade é recuperar o próprio ficheiro da carteira, não apenas a semente.
Estratégia de cópia de segurança: O Electrum possui uma função de cópia de segurança integrada em Ficheiro → Guardar cópia de segurança (ou Guardar cópia nas versões mais antigas). Isto guarda uma cópia completa do ficheiro da carteira. A cópia de segurança continua a estar encriptada com a sua palavra-passe, pelo que necessita tanto do ficheiro de cópia de segurança como da palavra-passe para restaurar. Para máxima segurança, exporte a frase de semente para papel E guarde cópias de segurança do ficheiro da carteira (especialmente se utilizar Lightning ou chaves importadas).
A carteira Electrum para Android
O Electrum para Android foi desenvolvido com base na estrutura Kivy (introduzida na versão 2.6) e utiliza o mesmo formato de ficheiro de carteira que o Electrum para computador. Os tipos de sementes, a encriptação e os percursos de derivação são idênticos. Um ficheiro de carteira criado no Android pode ser aberto no computador e vice-versa.
O desafio específico do Android é o acesso aos ficheiros. Em dispositivos Android não rooteados, os ficheiros da carteira Electrum são armazenados no armazenamento interno privado da aplicação, em:
/data/data/org.electrum.electrum/files/data/wallets/
Não é possível aceder a este caminho através de um gestor de ficheiros normal ou por USB – o mecanismo de sandboxing do Android impede-o. Isto deve-se à sua conceção (para impedir que outras aplicações roubem ficheiros da carteira), mas cria um verdadeiro problema de recuperação se a aplicação falhar ou for desinstalada acidentalmente.
Não existe uma versão do Electrum para iOS. Ponto final. Se alguém afirmar que está a utilizar o Electrum num iPhone, está a usar uma aplicação falsa – e, ao longo dos anos, tem havido vários clones fraudulentos do Electrum na App Store que roubam fundos.
O problema do ficheiro da carteira sobrescrito e eliminado
Os ficheiros da carteira Electrum são ficheiros normais no sistema de ficheiros. Isto torna-os mais fáceis de copiar para backup e também mais fáceis de apagar acidentalmente.
Cenário 1: Ficheiro da carteira eliminado
Se o ficheiro da carteira tiver sido eliminado (acidentalmente, através da desinstalação ou por malware), contacte o WalletRecoveryService.com para obter um serviço profissional de recuperação de dados ou envie-nos um e-mail para david@walletrecoveryservice.com. O ficheiro da carteira é normalmente pequeno (algumas centenas de KB para uma carteira padrão, potencialmente vários MB para carteiras com um histórico extenso do canal Lightning), o que significa que muitas vezes é recuperável do disco mesmo após a eliminação – SE o disco não tiver sido alvo de muitas gravações desde então.
No caso dos SSDs, a janela TRIM aplica-se – pare de utilizar a unidade imediatamente. No caso dos HDDs, tem mais tempo, mas cada operação de gravação corre o risco de sobrescrever os setores do ficheiro da carteira.
Cenário 2: Carteira substituída durante a restauração
Esta é uma armadilha específica do Electrum. Quando restaura a partir de uma semente no Electrum e escolhe o mesmo nome de ficheiro de carteira que um ficheiro já existente, o Electrum sobrescreve o ficheiro antigo. A documentação menciona isto, mas é fácil não reparar nisso num momento de pânico. Se tiver um ficheiro de carteira com chaves privadas importadas (não derivadas da semente) e o sobrescrever ao restaurar uma semente diferente com o mesmo nome de ficheiro, essas chaves importadas desaparecerão, a menos que tenha uma cópia de segurança separada.
Utilize sempre um nome de ficheiro diferente ao restaurar: restored_wallet, recovery_test, qualquer coisa que não seja o nome de um ficheiro de carteira existente.
Cenário 3: Ficheiro da carteira numa unidade com falha
O ficheiro da carteira do Electrum é um ficheiro único e autónomo. Se conseguir recuperar esse ficheiro de um disco avariado – através de serviços profissionais de recuperação de dados, criação de imagens de disco ou recuperação de ficheiros – o site walletrecoveryservice.com pode ajudá-lo e acompanhá-lo ao longo do processo –, terá tudo o que é necessário. Não precisa de recuperar toda a instalação do Electrum, a configuração nem os cabeçalhos da blockchain. Basta o ficheiro da carteira e a sua palavra-passe (ou frase-semente).
O vetor de ataque de phishing – um problema exclusivo do Electrum
O Electrum apresenta uma vulnerabilidade notória que não existe na maioria das outras carteiras, e que é diretamente relevante para a recuperação, pois provoca precisamente as situações que exigem uma recuperação.
Em dezembro de 2018, descobriu-se que os servidores do Electrum podiam enviar mensagens de erro arbitrárias ao cliente, que o Electrum exibia como texto renderizado em HTML. Os atacantes criaram servidores maliciosos do Electrum que, quando um utilizador transmitia uma transação, devolviam um erro falso indicando «atualização necessária», acompanhado de um link para um site de phishing que hospedava um ficheiro binário modificado do Electrum. Os utilizadores que descarregavam e instalavam a atualização falsa tinham as suas sementes ou senhas de carteira roubadas.
Este ataque foi particularmente devastador porque a mensagem de phishing apareceu na própria interface do Electrum, fazendo com que parecesse oficial. Milhares de bitcoins foram roubados antes de a vulnerabilidade ter sido corrigida. A correção foi lançada na versão 3.3.3 do Electrum, que deixou de renderizar HTML nas mensagens do servidor.
Por que isto é importante para a recuperação: muitos utilizadores que perderam fundos devido a este ataque ainda possuem os ficheiros originais da carteira com as sementes originais – a versão do atacante roubou as chaves e transferiu os fundos, mas a carteira legítima ainda existe. Se alguém me disser «Eu tinha Bitcoin no Electrum e simplesmente desapareceu em 2018-2019», o ataque de phishing é sempre uma das primeiras coisas que verifico. A recuperação, nesse caso, não é técnica — os fundos foram roubados, não perdidos. Mas é importante fazer o diagnóstico correto para que o utilizador não perca tempo e dinheiro a tentar decifrar a palavra-passe de uma carteira que foi esvaziada por um atacante.
Recuperação de carteiras com assinatura múltipla e autenticação de dois fatores
O Electrum suporta carteiras com assinaturas múltiplas e uma opção de autenticação de dois fatores (2FA) através do TrustedCoin, e ambas as funcionalidades tornam a recuperação mais complexa.
Carteiras com assinaturas múltiplas no Electrum são identificadas pelo campo «tipo de carteira»: "wallet_type": "2of3" ou similar. O ficheiro da carteira contém vários repositórios de chaves (x1/, x2/, etc.), cada um representando um co-signatário. Para efetuar uma transação a partir de uma carteira multisig, é necessário o número mínimo de chaves. Se tiver o ficheiro da carteira com todos os armazenamentos de chaves dos co-signatários, a recuperação decorre normalmente. Se tiver apenas a semente de um co-signatário e precisar dos outros co-signatários, será necessária a cooperação dos restantes detentores de chaves.
As carteiras com 2FA utilizam o TrustedCoin como serviço de co-assinatura. Trata-se, essencialmente, de carteiras multisig 2-de-3, nas quais o TrustedCoin detém uma chave e o utilizador detém duas. A recuperação requer: (a) duas das três sementes, ou (b) uma semente, além de o serviço TrustedCoin estar operacional e o utilizador estar autenticado. Se o TrustedCoin encerrar, os utilizadores ainda podem efetuar transações utilizando as suas duas sementes locais – mas precisam de ambas. A chave de recuperação 2FA que o Electrum apresenta durante a criação da carteira (e que a maioria das pessoas nunca anota) é a terceira semente, e é essencial para a recuperação sem o TrustedCoin.
Técnicas de recuperação que realmente funcionam na prática
Após anos a recuperar carteiras Electrum, eis os cenários com que me deparo com mais frequência e a forma como os abordo.
Cenário 1: Tenho a frase de sementes, só preciso de restaurar
Abra o Electrum, selecione Ficheiro → Novo/Restaurar. Escolha «Carteira padrão» → «Já tenho uma semente». Introduza a semente. Se for uma semente do Electrum, o Electrum irá detetar automaticamente o tipo de semente e a derivação. Se for uma semente BIP39 (de uma carteira de hardware ou de outra carteira de software), clique em Opções → selecione «Semente BIP39» ANTES de introduzir as palavras. Escolha o tipo de script correto e verifique o caminho de derivação. Defina uma nova palavra-passe.
Se o saldo for zero: experimente diferentes tipos de script (segwit nativo, segwit encapsulado, legado). Se estiver a utilizar o BIP39, clique em «Detectar contas existentes» para procurar o histórico. Aumente o limite de intervalo se tiverem sido utilizados endereços para além do 20.º.
Cenário 2: Ter o ficheiro da carteira e a palavra-passe
Basta abrir o Electrum e indicar o ficheiro da carteira. Se o ficheiro estiver numa pen USB ou num local diferente do padrão, utilize Ficheiro → Abrir e procure-o. Depois de aberto, pode ver a sua semente em Carteira → Semente (requer palavra-passe), exportar chaves privadas ou simplesmente efetuar transações normalmente.
Cenário 3: Tem o ficheiro da carteira, esqueceu-se da palavra-passe, tem a frase de recuperação
Ignore completamente a palavra-passe. Crie uma nova carteira a partir da frase-semente (tal como no Cenário 1). A frase-semente gera as mesmas chaves, independentemente da palavra-passe definida no ficheiro da carteira antiga. Defina uma nova palavra-passe na nova carteira.
Cenário 4: Possui o ficheiro da carteira, esqueceu-se da palavra-passe, não tem a frase de recuperação
Isto é um caso de força bruta. Contacte um especialista profissional em recuperação, como walletrecoveryservice.com ou extrair o hash com electrum2john.py, e introduza-o no hashcat (modo 16600, 21700 ou 21800, dependendo do tipo de salt) ou no btcrecover.
Cenário 5: Carteira Electrum v1.x antiga
Não tente abrir uma carteira v1 diretamente no Electrum 4.x – o processo de atualização pode falhar em certos casos específicos e, se isso acontecer, será melhor ter o ficheiro original intacto. Contacte-nos por e-mail para david@walletrecoveryservice.com; já lidamos com casos como este há muito tempo.
Cenário 6: A frase de recuperação do Electrum não funciona noutra carteira
Se tentar importar uma semente do Electrum para uma carteira que não seja do Electrum (Trezor, Ledger, Exodus, etc.), isso não funcionará, pois essas carteiras exigem o formato BIP39. Pode restaurar os fundos no Electrum e transferi-los para a carteira de destino.
Cenário 7: A semente BIP39 da carteira de hardware apresenta endereços errados no Electrum
Provavelmente selecionou o tipo de script ou o caminho de derivação errados. Para carteiras Trezor: o segwit nativo é m/84'/0'/0', o legado é m/44'/0'/0', o SegWit encapsulado é m/49'/0'/0'. No caso de várias contas, aumente o último índice de segurança. O Electrum deve estar configurado no modo BIP39 (Opções → Semente BIP39) antes de introduzir as palavras.
Cenário 8: Carteira Android, a aplicação não abre
Se o telemóvel estiver com acesso root, aceda a /data/data/org.electrum.electrum/files/data/wallets/ e copie o ficheiro da carteira. Se nenhuma destas opções funcionar e tiver a frase de semente, faça a restauração no computador. Se não tiver a frase de semente e o telemóvel não estiver com acesso root, a sua última opção é um serviço profissional de extração de dados para Android que possa criar uma imagem do armazenamento do dispositivo.
Ferramentas que todo especialista em recuperação de Electrum deve ter
- electrum2john.py – Extração de hash a partir da edição Jumbo do John the Ripper. Funciona com todos os formatos de carteira Electrum.
- hashcat – Modos 16600, 21700, 21800. Quebra rápida de senhas com recurso à GPU.
- btcrecover – Recuperação de senha e recuperação de semente com base em token (para frases de semente parciais ou incertas).
- A ferramenta BIP39 de Ian Coleman – Funciona apenas offline. Inclui o modo de semente do Electrum para derivar chaves e endereços a partir de sementes no formato Electrum.
O que distingue as carteiras recuperáveis das perdidas
O ecossistema Electrum é mais flexível do que a maioria, uma vez que o ficheiro da carteira é um ficheiro JSON autónomo, portátil e bem documentado, que pode ser aberto em qualquer editor de texto (desde que não esteja totalmente encriptado) e processado por ferramentas de código aberto amplamente suportadas. A encriptação, embora ofereça proteção adequada para a maioria dos utilizadores, é significativamente mais fraca do que os padrões da indústria – o que é negativo para a segurança, mas excelente para a recuperação.
As carteiras que não consigo recuperar partilham uma de duas características: o utilizador perdeu tanto a frase-semente como o ficheiro da carteira (não há nada com que trabalhar), ou o utilizador perdeu a frase-semente, tem o ficheiro da carteira e definiu uma palavra-passe verdadeiramente forte (mais de 15 caracteres aleatórios), contra a qual um ataque de força bruta é computacionalmente inviável, mesmo com a fraca derivação de chaves do Electrum.
Tudo o resto – percursos de derivação incorretos, incompatibilidades de formato, ficheiros corrompidos, versões antigas, extração do Android – pode ser resolvido com as ferramentas personalizadas adequadas e os conhecimentos necessários.
A coisa mais importante que pode fazer agora mesmo: aceda a «Wallet» → «Seed» na sua instalação do Electrum, anote essas 12 palavras num papel e guarde esse papel num local seguro. O ficheiro da sua carteira pode ficar corrompido, ser apagado, encriptado ou perdido. Mas doze palavras num papel, guardadas em segurança, permitir-lhe-ão sempre recuperar os seus Bitcoins.
Tem alguma dúvida? Envie-nos um e-mail para david@walletrecoveryservice.com
