Introdução
Claws-Mail é um cliente de e-mail que está ganhando popularidade, em relação aos famosos clientes Thunderbird, Evolution e KMail (usei muito este). Sua interface usa GTK+, é altamente configurável e podem ser usados diversos plugins.
Se por acaso, algum cabeça-de-bagre (como este que vos escreve) esquecer-se da senha usada na configuração de uma das contas de e-mail (ou de todas, o que não foi o caso, felizmente) usadas e por algum motivo a recuperação for problemática, então, calma! Há solução.
Claws-Mail possui um extenso arquivo de configuração em ~
/.claws-mail/accountrc, cujo tamanho depende mais é do número de contas de e-mails configuradas pelo usuário do sistema no momento.
Pode-se visualizar apenas os passwords de recebimento de e-mails (POP3) através do comando:
grep ^password ~/.claws-mail/accountrc
E ainda, pode-se visualizar apenas os passwords de envio de e-mails (SMTP) através do comando:
grep ^smtp_password ~/.claws-mail/accountrc
Tudo muito simples, por meio de texto, no melhor estilo Unix-Like. Pena que a segurança das senhas seja questionável.
Continuando, existe hospedado no excelente
GitHub, o projeto
Clawsmail Password Decrypter, cuja finalidade é descriptografar senhas do arquivo de configuração de contas do Claws-Mail.
Preparando a versão em C
Lá no projeto, existem três arquivos principais, que são:
- Makefile;
- clawsmail-passdecrypt.c;
- clawsmail-passdecrypt.py.
Pelo "Makefile", descobre-se alguma coisa da compilação do "clawsmail-passdecrypt.c", como a necessidade da Glib e da Libcrypt, presente no pacote da Libc. No caso do arquivo "clawsmail-passdecrypt.py", irá depender de módulos do Python 2.
Para compilação do programa em
C, deve-se ter em Debian (o sistema em que testei agora) a biblioteca Glib, mais precisamente o pacote "libglib2.0-dev", onde consta header glib.h. Verifique abaixo headers e, se possivelmente, será necessário instalar mais algo:
Headers usados em "clawsmail-passdecrypt.c":
Headers usados em "passcrypt.c" (será apresentado mais adiante):
- sys/types.h
- stdio.h
- memory.h
- ctype.h
- stdlib.h
- unistd.h
Headers usados em passcrypt.h (será apresentado mais adiante):
No Debian (e em breve Devuan, se der certo), instale os itens de compilação com os comandos (como root):
# apt-get install build-essential
# apt-get install libglib2.0-dev
Preste atenção nos nomes dos pacotes adicionais que estes comandos baixam. Pode ser útil algum dia.
Ainda há mais uma dependência, o código-fonte do Claws-Mail. Está em:
Ou, se quiser usar recursos Debian, faça assim também (do jeito mais difícil), vá até seu arquivo
/etc/apt/sources.list e garanta que exista uma linha que seja do repositório de fontes. Ficará assim:
deb http://sft.if.usp.br/debian/ jessie contrib non-free main
deb-src http://sft.if.usp.br/debian/ jessie contrib non-free main
A primeira linha do exemplo (podem haver mais), que começa com "deb", é uma linha comum de repositório. Ela baixa pacotes normalmente. A segunda linha, que é quase uma cópia da primeira, baixa arquivos de código-fonte, ou tarballs, de onde se criaram os pacotes ".deb". Isto pode incluir repositórios contrib e non-free. Caso não exista uma linha que comece com "deb-src", copie a linha de um repositório corrente e mude o começo para "deb-src".
Agora vem o comando (novamente como root):
# apt-get source claws-mail
Isto baixará os arquivos:
- claws-mail_3.11.1-3+deb8u1.debian.tar.xz
- claws-mail_3.11.1-3+deb8u1.dsc
- claws-mail_3.11.1.orig.tar.xz
E descompactará o com "orig" no nome (o outro tarball é o fonte com modificações feitas pelo projeto Debian e o último, é um arquivo-texto com toda a espécie de informações, desde dependências até assinatura PGP do GnuPG), criando o diretório "claws-mail-3.11.1".
Agora, é só baixar o arquivo do projeto de descriptografia no link
master.zip e descompactar com o comando:
unzip master.zip
Criando o diretório clawsmail-password-decrypter-master no mesmo local e dentro dele os arquivos:
clawsmail-passdecrypt.c Makefile clawsmail-passdecrypt.py README.md
Eu copiaria o diretório de fontes do Claws-Mail para
/usr/src e acertaria as permissões, o que parece-me o mais natural.
O arquivo "clawsmail-passdecrypt.c" possui cento e trinta e oito linhas, tornando não tão complicada sua análise (coragem!). Já o Makefile possui quarenta e uma linhas, bem simples também.
Agora, para a compilação, falta mais um passo: dois arquivos que constam nos fontes do Claws-Mail. Podem ser copiados dos fontes ou ser usado um parâmetro no Makefile para a localização deles. Em caso de se copiar, precisam ser localizados os arquivos "passcrypt.c" e "passcrypt.h" (use:
/caminho/para/os/fontes/do/claws-mail, se a localização for diferente, obviamente):
find /usr/src/claws-mail-3.11.1/ -iname "pass*"
Que retornará:
/usr/src/claws-mail-3.11.1/src/plugins/pgpcore/passphrase.c
/usr/src/claws-mail-3.11.1/src/plugins/pgpcore/passphrase.h
/usr/src/claws-mail-3.11.1/src/common/passcrypt.h
/usr/src/claws-mail-3.11.1/src/common/passcrypt.c
/usr/src/claws-mail-3.11.1/src/common/passcrypt.h.in
Copia-se para o diretório o necessário:
cp -v /usr/src/claws-mail-3.11.1/src/common/passcrypt.? clawsmail-password-decrypter-master
Ou, copia-se de onde seus fontes estão. Estes dois arquivos juntos não somam mais de duzentas linhas.
E com isto, já é possível compilar. Execute o comando
make. Não precisa ser root. Se der erro, reporte-os nos comentários. Pode ser falta de algum pacote ou outra coisa a ser resolvida. O legal de fazer cópia dos fontes, é que fica mais fácil de apreciar o conjunto e fuçar mais no código, sem o risco de se perder no resto dos fontes. Evite dispersão.
Já para o simples uso sem ficar copiando, adicione o seguinte parâmetro na linha do
make:
make CLAWSMAIL_SRC=/caminho/para/os/fontes/do/claws-mail
Ou, como fiz aqui:
make CLAWSMAIL_SRC=/usr/src/claws-mail-3.11.1/src/
Segundo a recomendação do site, há ainda mais uma observação: caso seja usada a versão FreeBSD do Claws-Mail, deve-se acrescentar ainda o seguinte parâmetro ao make:
make CFLAGS='-DNEED_DES_ECB'
E combine os dois parâmetros, se for o caso.
A versão FreeBSD usa outro método de criptografia. Usa-se DES-ECB em FreeBSD, ao invés de DES-CFB usado pelo
Linux. DES-ECB não permite criptografia em blocos múltiplos de 8. Claws-Mail não verifica como foi feita a criptografia, sendo que a criptografia falhará sem suspeitas no FreeBSD, se o comprimento da senha em bytes for não-múltiplo de 8, dando problema na coisa toda. É mais técnica a coisa e ainda não estou inteirado do tema.
Se tudo der certo, deverá surgir o arquivo "clawsmail-passdecrypt" que, quando executado, resultará na seguinte mensagem:
Usage: ./clawsmail-passdecrypt [ENCRYPTED_PASS1...|FILE...]
Se quiser, você poderá dar strip no binário, removendo algumas informações talvez desnecessárias no momento. Isto reduz o tamanho, apesar deste já ser pequeno, pouco mais de vinte e um mil bytes aqui. Depois de dar strip, o tamanho cai quase para 1/3. A operação é feita com o comando:
strip -s clawsmail-passdecrypt
*Lembrando de que não é obrigatório.
Agora, seguirá sobre a versão em Python. A explicação do uso será posterior a esta.