Preparando a versão em Python
Além da versão em
C, há a versão em Python do descriptografador de senhas, o script "clawsmail-passdecrypt.py".
Possui umas cento e vinte e cinco linhas atualmente, feitas em Python 2. Requer ao menos os módulos "Crypto.Cipher" e "base64". No Debian, resolve-se com a instalação do pacote "python-crypto":
# apt-get install python-crypto
Agora, usa-se o comando:
chmod +x clawsmail-passdecrypt.py para torna-lo executável do prompt, ou então executa-se
python clawsmail-passdecrypt.py na linha de comando.
Se tudo der certo, ao se executar o script, deverá aparecer as mensagens:
Usage: clawsmail-passdecrypt.py [OPTIONS] ENCRYPTED_PASS1...|FILE...
clawsmail-passdecrypt.py: error: missing file or string to decrypt
Caso não dê certo, reporte os erros nos comentários. Pode ser algum pacote a ser instalado ou outra coisa. Tenho muita coisa instalada aqui. Pode ser que não saiba de algo que devesse instalar, tanto no caso do código em
C, quanto em Python.
Testando a descriptografia
Estando tudo certo, agora vamos aos testes. Primeiramente, o programa em
C já compilado. Conforme testado, o retorno da linha de comando é:
./clawsmail-passdecrypt [ENCRYPTED_PASS1...|FILE...]
O escopo dos parâmetros é o do uso de uma ou mais strings de senhas criptografadas, ou um ou mais arquivos de configuração do Claws-Mail com senhas criptografadas.
Algo, literalmente, como:
./clawsmail-passdecrypt string-de-senha-criptografada
Ou:
./clawsmail-passdecrypt string-de-senha-criptografada-1 string-de-senha-criptografada-2 string-de-senha-criptografada-3 ...
E para arquivos de configuração:
./clawsmail-passdecrypt arquivo-de-senhas-criptografadas
Ou:
./clawsmail-passdecrypt arquivo-de-senhas-criptografadas-1 arquivo-de-senhas-criptografadas-2 arquivo-de-senhas-criptografadas-3
E como sugere a mensagem, até ambos os parâmetros combinados.
As strings do accountrc começam com ponto de exclamação (!), portanto, se estiver usando BASH ou qualquer Shell que entenda esse símbolo como algo diferente, poderá dar problema.
Em BASH, um significado para o ponto de exclamação seguido de um numero, é a da execução de um comando. Tal comando encontra-se no histórico, cuja localização em ordem numérica neste histórico, corresponde exatamente ao número.
Se for digitado no prompt dois pontos de exclamação juntos, um do lado do outro, resultará na execução do último comando do histórico. Para saber os comandos presentes no histórico, use o comando
history no terminal, que aparecerão se as variáveis internas BASH estiverem adequadamente configuradas.
Não me perguntem se existem outros significados para ponto de exclamação no prompt de BASH. Usando
man 1 bash, tem-se de 3500 a 5700 linhas de manual, dependendo da resolução do console. O importante é que se não for usada uma contrabarra (\), como mostrada no exemplo adiante, dará erro na execução do comando.
Com tudo pronto, o uso é muito simples. Para o arquivo de configuração estando em seu local natural e sendo apenas um, o comando poderá ser para o binário compilado:
./clawsmail-passdecrypt ~/.claws-mail/accountrc
E para o script em Python:
./clawsmail-passdecrypt.py ~/.claws-mail/accountrc
Ou:
python clawsmail-passdecrypt.py ~/.claws-mail/accountrc
Não precisando ser root em todos os casos.
O tempo de quebra de sete senhas de diversos tamanhos num i7, usando o programa em
C, foi de acordo com o comando time:
- real 0m0.002s
- user 0m0.004s
- sys 0m0.000s
E usando o script feito em Python, foi:
- real 0m0.021s
- user 0m0.016s
- sys 0m0.004s
Para quebrar uma string aqui exemplificada, pode-se usar o comando:
./clawsmail-passdecrypt \!f3TI780AXVBWX1OPan/EBhGBrESuKh7QYI0ZaTRTmZl36PxbRA3xLCF9kXYe35HK64BlfVyn+gkh6Hp/Vw==
Cujo uso correto, é feito com a contrabarra (\) antes da exclamação. Conforme já explicado, a senha começa sempre com o caracter ! e a presença do mesmo no prompt sem contrabarra, dará erro. Caracteres especiais devem ser sempre representados com contrabarra, se existirem. Coisa semelhante é vista em linguagem
C, BASHscript, SED, Regex etc.
Quem quebrar a senha da string corretamente, vai ganhar um joinha no comentário. É a mesma sintaxe para as duas formas de execução para a versão em Python.
Ainda sobre a versão em Python, ela possui parâmetros extras. É para o caso de o sistema ser um FreeBSD. Usa-se:
clawsmail-passdecrypt.py --freebsd ...
Ou:
clawsmail-passdecrypt.py --mode=ECB ...
No caso deste sistema ser o usado.