Anexar E Enviar Executáveis Pelo Gmail

Introdução

Frequentemente preciso enviar alguns e-mails para colegas e me espanto ao saber que tal e-mail não pode ser enviado porque há arquivos executáveis anexados. Já ocorreu uma vez de que nem arquivo executável tinha. Só que o problema maior é que você só é notificado que seu e-mail não pode ser enviado DEPOIS de você upar os arquivos. Uma vez gastei preciosos 30 minutos upando um arquivo de 20MB e no final recebo a mensagem que o e-mail não poderia ser enviado.

Em alguns blogs eu vejo que a solução para isso é:

  1. Renomear o arquivo executável, por exemplo, arquivo.exe para arquivo.txt
  2. Zipar o executável.
  3. Usar o rar (ou outro algoritmo de compressão) no executável.

Bem, creio que nenhuma dessas dicas funcionam mais (se é que já funcionaram algum dia). Só para você ter uma idéia, certa vez zipei um arquivo com senha e o gmail ainda foi capaz de dizer que ali tinha um executável (e pior que tinha mesmo hehe).

Como gmail faz isso

Não sei o certo. Mas em relação aos zips da vida, até se eles estiverem com senha, é possível espiar quais arquivos eles guardam. Procurando por padrões nos nomes listados, é possível descobrir se um arquivo tem chances de ser executável. E para o Google, se pintou alguma dúvida, é vírus. :|

Como burlar

Um modo de bypassar esse policiamento do gmail é alterar a estrutura física do arquivo, ou seja, transformá-lo em algo que ele não é. Abaixo veremos como transformar qualquer arquivo em um arquivo texto. Como arquivos textos são aceitos pelo gmail então será fácil anexar qualquer arquivo.

Uuencodando

O uuencode foi um algoritmo muito utilizado para transferir arquivos binários de forma textual pela internet. Hoje em dia é possível vê-lo sendo usado em alguns sites para juntar um texto com programas em um só documento (quem já leu a phrack já se deparou com uns desses).

No linux, existe o comando uuencode para codificar e o uudecode para decodificar. O uso é bastante simples, veja:

$ cat arquivo_de_teste.txt
Old programmers never die, they just branch to a new address.

Agora vamos uuencodar esse arquivo:

$ uuencode arquivo_de_teste.txt arquivo_de_teste.txt
begin 644 novo_nome.txt
M3VQD('!R;V=R86UM97)S(&YE=F5R(&1I92P@=&AE>2!J=7-T(&)R86YC:"!T
1;R!A(&YE=R!A9&1R97-S+@H`
`
end

Esse é o arquivo “criptografado”. O ideal é você já redirecionar a saída do uuencode para outro arquivo:

$ uuencode arquivo_de_teste.txt arquivo_de_teste.txt > arquivo_de_teste.txt.uu

Agora com o comando uudecode e o arquivo arquivo_de_teste.txt.uu podemos recuperar o conteúdo original:

$ uudecode arquivo_de_teste.txt.uu
$ cat arquivo_de_teste.txt
Old programmers never die, they just branch to a new address.

Pegou? Podemos usar também o uuencode para transferir nossos arquivos binários rejeitados pelo gmail:

$ uuencode arquivo.exe arquivo.exe > arquivo.exe.uu

Agora só anexar o arquivo arquivo.exe.uu e enviar seu e-mail. Claro que o destinatário da mensagem deve saber como recuperar o arquivo.exe de volta, senão nada feito.

Para recuperar o arquivo, o destinatário deve digitar:

$ uudecode arquivo.exe.uu

Pronto! No link [1] você verá que o algoritmo uuencode aumenta o arquivo em aproximadamente 40%. Essa porcentagem é muita alta e é um dos motivos para terem abandonado o uuencode. Para melhorar isso, podemos ainda comprimir o arquivo uuencodado antes de enviá-lo por e-mail. Assim:

$ zip arquivo.exe.uu.zip arquivo.exe.uu

Agora o rementente terá que usar dois comandos para obter o arquivo.exe:

$ unzip arquivo.exe.uu.zip
$ uudencode arquivo.exe.uu

Usando o xxd no lugar do uuencode

O xxd é um comando que descobri meio que sem querer na instalação padrão do Slackware 13.1. Você pode obter mais informações sobre ele em um post que fiz em [2]. Bem, o xxd é capaz de converter os bytes de um arquivo em sua representação na base hexadecimal.

$ xxd -p arquivo_de_teste.xt
4f6c642070726f6772616d6d657273206e65766572206469652c20746865
79206a757374206272616e636820746f2061206e65772061646472657373
2e0a

A saída representa o arquivo de entrada “criptografado”. Para obter o arquivo original, basta usarmos a opção -r do comando em cima dessa saída. Cada byte é representado por 2 algarismos hexadecimais. Isso quer dizer que o tamanho da saída do xxd será duas vezes maior, então o jeito é compactar:

$ xxd -p arquivo_de_teste.txt > arquivo_de_teste.txt.xxd
$ zip arquivo_de_teste.txt.xxd.zip arquivo_de_teste.txt.xxd

Pronto. Agora envie o arquivo_de_teste.txt.xxd.zip como anexo. O destinatário terá que utilizar os seguintes comandos para o obter o arquivo original:

$ unzip arquivo_de_teste.txt.xxd.zip
$ xxd -p -r arquivo_de_teste.txt.xxd > arquivo_de_teste.txt

Qual usar: xxd ou uuencode??

A saída do uuencode é bem menor do que a saída do xxd. Enquanto o uuencode aumenta o arquivo em 40%, o xxd o aumenta em 100% (duplica a quantidade). Vendo isso, podemos pensar que o xxd é muito mais desvantajoso que o uuencoe, mas o interessante vem agora: arquivos gerados pelo xxd possuem mais bytes repetidos e por isso, quando são comprimidos, apresentam tamanho menor do que aqueles retornados pelo uuencode. A desvantagem do xxd é que ele demora mais para realizar a transformação do que o uuencode.

Em geral, prefiro o xxd + zip por apresentar um menor arquivo de saída.

Outros Métodos

Métodos para burlar essa política do Google é o que não falta. Nesse post irei focar somente nesses dois já citados. Demais métodos podem ser encontrados no próprio Google. Que irônico. :S

Conclusão

Alguém poderia dizer que burlar essa política do google é desaconselhável e que alguma retaliação poderia ocorrer por parte da empresa e que você poderia até perder seu e-mail.  Creio que isso é bobagem, pois o uso do uuencode já é conhecido faz tempo, e outra, o Google só faz essa linha dura em relação a arquivos executáveis, porque há pessoas que usam seus serviços para propagar malware. No nosso caso, podemos ficar tranquilos, pois nossa intenção não é prejudicar ninguém. ;)

Referências

[1] Uuencoding by wikipedia (Acessado em: Julho/2011)
http://en.wikipedia.org/wiki/Uuencoding

[2] Hexdump com o xxd (Acessado em: Julho/2011)
https://daemoniolabs.wordpress.com/2011/07/07/hex-dump-com-o-xxd/

2 pensamentos sobre “Anexar E Enviar Executáveis Pelo Gmail

Deixe um comentário