Que arquivo é este?

O documento do WhatsApp sem extensão, o anexo chamado ATT00001, a foto que “não abre”: aqui o conteúdo é lido, não o nome, e você descobre o que o arquivo realmente é, qual é a extensão certa e o que o abre. E se for um programa disfarçado de PDF, a página avisa em vermelho.

Toque aqui ou solte um ou mais arquivos
Os arquivos não saem do seu dispositivo: a página lê só os trechos de que precisa para reconhecê-los (um arquivo pequeno por inteiro, de um grande normalmente menos de duzentos quilobytes), aqui no navegador, e não envia nada a lugar nenhum.

O nome de um arquivo é uma etiqueta, não uma prova

A extensão, aquele .jpg ou .pdf no fim do nome, é só um pedaço do nome: qualquer pessoa pode mudá-la, e muitos programas a perdem pelo caminho. O WhatsApp salva alguns documentos sem extensão, o Outlook envia anexos chamados ATT00001, um app de transferência renomeia fotos do iPhone para .jpg mantendo-as em HEIC, um programa de gestão exporta um CSV e o chama de .xls. O sistema então escolhe o programa errado, ou nenhum, e o arquivo “não abre”.

O conteúdo, ao contrário, não mente, porque quase todo formato começa com uma assinatura: alguns bytes sempre iguais, colocados de propósito por quem inventou o formato. Um PDF começa com as letras %PDF, uma imagem PNG com oito bytes fixos, um arquivo ZIP com as letras PK, as iniciais de Phil Katz, que o inventou em 1989. Esta página lê esses bytes e diz o que o arquivo é, qual é a extensão certa e, se houver, qual ferramenta do site o abre.

Renomear não converte. Se a foto é um HEIC, chamá-la de .jpg não a transforma em JPEG: muda só a etiqueta, e é exatamente assim que nascem tantos arquivos que não abrem. Quando a extensão está errada, a página oferece uma cópia com o nome certo, com os mesmos bytes; quando, em vez disso, você precisa de outro formato, o caminho é um conversor, como Converter HEIC em JPG.

Como a página lê um arquivo de quatro gigabytes sem enviá-lo

Ela não o envia a lugar nenhum, e nem sequer o lê inteiro. Olha algumas dezenas de quilobytes do início e do fim, que bastam para quase todos os formatos, e depois busca só os trechos de que precisa: de um arquivo de quatro gigabytes normalmente lê menos de duzentos quilobytes, e cada cartão diz quantos bytes realmente leu. Por isso a resposta sai na hora até para um filme inteiro, e também no celular.

Muitos formatos são caixas dentro de outras caixas, e nesses casos a assinatura do início não basta. Um documento do Word, uma planilha do Excel, uma apresentação, um ebook, um app Android e um programa Java são todos arquivos ZIP: o que os diferencia são os nomes das partes que contêm e, no caso do OpenDocument e do EPUB, um pequeno arquivo chamado mimetype que deve vir primeiro. Já os antigos .doc, .xls e .ppt, os e-mails .msg do Outlook, os instaladores .msi e os arquivos do Office protegidos por senha são contêineres OLE, o mesmo contêiner para todos, e o nome dos fluxos internos os distingue.

Vídeos e fotos modernos seguem outra regra. MP4, MOV, HEIC, AVIF e M4A compartilham a mesma estrutura de caixas, e o tipo real é dado pela marca escrita na primeira caixa: por isso um vídeo de iPhone chamado .mp4 é reconhecido como MOV. Para um arquivo assinado, um p7m, a página diz também o que há dentro do envelope, por exemplo uma nota fiscal eletrônica ou um PDF.

O programa disfarçado

É o motivo mais sério para usar esta página. Um programa do Windows começa com as letras MZ, qualquer que seja o nome: se um anexo se chama fatura.pdf mas dentro há um programa, aqui você o vê em vermelho. O ícone na área de trabalho não ajuda, porque um programa pode exibir o ícone que quiser, até o de um PDF.

Três truques do nome são sinalizados à parte. A extensão dupla, como documento.pdf.exe: por padrão o Windows esconde as extensões que conhece, e na tela sobra documento.pdf. O nome de programa dado a um texto: uma fatura.pdf.js ou uma fatura.pdf.vbs contém só letras, mas um clique duplo faz o Windows executá-la, e essa é a forma mais comum de anexo golpista. E o caractere invisível que inverte o sentido do texto, o código U+202E: um arquivo chamado fatura, U+202E, fdp.exe aparece na tela como faturaexe.pdf. No cartão, esse caractere aparece como ele é, em vez de ficar livre para fazer o seu truque.

Se isso acontecer com você: não abra, apague e, se parecer vir de alguém que você conhece, confirme com a pessoa por telefone, e não respondendo à mesma mensagem. A página também sinaliza documentos com macros e arquivos que contêm uma chave privada: não são programas disfarçados, mas merecem o mesmo cuidado.

Texto não tem assinatura, e a página avisa

Um arquivo de texto é feito só de letras, e letras não têm assinatura. CSV, JSON, XML, legendas e páginas web são todos texto, e só podem ser reconhecidos pela forma do conteúdo. Ao lado de cada resultado você encontra de onde ele vem: a assinatura no início, a estrutura interna ou apenas alguns indícios, e no terceiro caso o resultado é muito provável, mas não certo.

Para texto, porém, a página diz a coisa de que mais se precisa: a codificação. UTF-8, UTF-8 com BOM, UTF-16, ou uma antiga codificação Windows de 8 bits, e é por isso que as letras acentuadas viram símbolos estranhos quando um arquivo passa de um programa para outro. Se o texto já está quebrado, com o clássico “è” no lugar de “è”, dá para consertar com Corrigir caracteres quebrados (mojibake).

Há também as quebras de linha, que o Windows escreve de um jeito e o Linux e o Mac de outro, e, para um CSV, o separador: o ponto e vírgula das versões europeias do Excel ou a vírgula da versão em inglês. Um CSV exportado por um programa de gestão com o nome .xls é reconhecido pelo que é, e com o nome certo o aviso do Excel dizendo que formato e extensão não combinam desaparece.

Quantos formatos ela reconhece e como isso é testado

Ela reconhece 131 formatos entre imagens, documentos, arquivos compactados, áudio, vídeo, programas, bancos de dados, certificados, calendários e fontes. Destes, 117 são testados com arquivos reais, escritos por programas de terceiros e não por esta página: imagens pelo Pillow, áudio e vídeo pelo ffmpeg, documentos pelas bibliotecas que os escrevem, os arquivos antigos do Office diretamente pelo Word, Excel, PowerPoint e Outlook (a coleção de testes do Apache POI), programas por compiladores. Só quatro cabeçalhos são escritos à mão, porque nenhum programa grátis os escreve: o PSD, o winmail.dat, o atalho .lnk e o .torrent.

Cada resposta é então comparada com a do comando file, o reconhecedor que Linux e macOS usam há décadas, e onde ele não consegue responder, com openssl, olefile e ffmpeg. Os outros são reconhecidos pela assinatura documentada, e o cartão diz isso em vez de apresentá-los como certos. Se um arquivo não se parece com nada, a página não inventa: diz que não o reconhece e mostra os primeiros bytes.

O que ela não faz

Ela não abre nem converte o arquivo. Diz o que ele é e o que o abre: para um arquivo compactado há Abrir um arquivo ZIP, para uma foto Converter imagem (JPG/JPEG, PNG, WebP), para um vídeo O que seu vídeo realmente é.

Não é um antivírus. Uma assinatura correta diz que tipo de arquivo é, não se ele é inofensivo: um PDF ou um documento do Word pode conter código malicioso mesmo com o nome certo. A verificação de programa disfarçado pega o truque mais comum, não todos.

Ela não verifica assinaturas digitais e não adivinha senhas: para um arquivo assinado, diz que ele está assinado e o que contém, mas se a assinatura é válida só se descobre verificando o certificado. E para saber se um arquivo baixado é idêntico ao original, compare a impressão digital dele com Checksum de arquivo (MD5, SHA-256).

Ferramentas relacionadas