Embora base64 [--decode]
funcione bem ao codificar e decodificar arquivos localmente, não consigo decodificar um anexo embutido codificado em base64 em um arquivo eml salvo no Thunderbird ou no Gmail.
Observei que os blocos codificados em base64 em todos os arquivos eml são semelhantes ao que base64
gera, mas as linhas têm comprimentos diferentes: as linhas em blocos de texto codificados em base64 em arquivos eml consistem em 72 caracteres , enquanto os arquivos codificados em base64 gerados localmente consistem em de linhas de 76 caracteres . Suspeito que essa discrepância seja o motivo pelo qual não consigo usar base64 --decode
trechos de arquivos eml com êxito.
Minha hipótese é verdadeira? Como posso decodificar esses anexos?
O comando
base64
executa a codificação quebrando o texto na largura de coluna padrão de 76 caracteres, a menos que outro valor seja especificado com a opção--wrap=COLS
.Espera-se que o comando
base64 --decode
funcione independentemente da largura da coluna, por exemplo, o bloco de texto pode consistir em uma única linha (não importa o comprimento) ou em múltiplas linhas quebradas em qualquer largura de coluna fixa.O problema com os arquivos "Formato de mensagem da Internet" (*.eml) salvos no Thunderbird ou em um web mail como o GMail, na verdade, é que eles usam DOS/Windows ("CRLF" / "\r\n") - e não Unix/Linux ( "LF" / "\n") - finais de linha, enquanto ambos
base64
ebase64 --decode
usam o último.Isso significa que os arquivos "Formato de mensagem da Internet" (*.eml) (ou blocos de texto codificados em base64 recuperados deles) devem primeiro ser convertidos usando o
dos2unix
comando antes de executar obase64 --decode
comando.