Início tecnologia

Magika: a IA do Google que confere o tipo do arquivo

Magika é um projeto do Google, open source, cujo principal objetivo é identificar o conteúdo do anexo que o usuário está recebendo, e não a extensão que aparece para ele. Ele roda no terminal, em Python, JavaScript ou em Rust. Lê só uma fração do conteúdo e devolve, com confiança e em apenas 5 milissegundos, o que aquele arquivo é, sem abrir o arquivo inteiro.

Captura de tela do README do Magika no GitHub com o comando magika -r identificando arquivos ELF, PE, PDF, Markdown, imagens e vídeo
Reprodução: README do Magika no GitHub, com exemplo de identificação de arquivos por conteúdo

O que é o Magika

O Magika é um projeto hospedado na organização do Google no GitHub, com licença Apache 2.0, e usa um modelo de aprendizado profundo para classificar arquivos. A abordagem é diferente da convencional: em vez de confiar na extensão, nos primeiros bytes fixos ou em assinaturas de antivírus, ele extrai características dos primeiros trechos do conteúdo e pede uma previsão ao modelo. O pacote traz 214 rótulos de tipos de conteúdo, que vão de documentos de escritório e código-fonte a imagens, áudio e formatos binários.

Os números de tração são do próprio projeto. Foram cerca de 100 milhões de amostras no treinamento e na avaliação, com cobertura de mais de 200 tipos de conteúdo e média de aproximadamente 99% de precisão e recall no conjunto de teste do projeto. O repositório tinha 18,7 mil estrelas e 1,1 mil forks em 8 de novembro de 2026, contagem que serve como sinal de interesse e não como avaliação de qualidade. O código nasceu em 2023 e o paper foi publicado na ICSE 2025.

Tecnologia e velocidade constante

O detalhe técnico que explica a velocidade é o volume de dados lido. Segundo a documentação do projeto, o Magika inspeciona apenas alguns trechos iniciais do arquivo, em geral até 2 KB, e nunca carrega o arquivo inteiro na memória. Isso torna o tempo de inferência praticamente constante e independente do tamanho do arquivo, tanto que dá para analisar milhares de arquivos em sequência ou varrer uma pasta inteira com o parâmetro recursivo.

Em arquivos vazios, diretórios, links simbólicos ou conteúdos menores que cerca de 8 bytes, o modelo nem roda: a ferramenta responde com rótulos simples, sem previsão. Também não existe uma decisão única de confiança. Cada tipo de conteúdo tem o próprio limiar: acima dele, a previsão é aceita; abaixo, a ferramenta devolve um rótulo genérico, como texto comum ou binário desconhecido. Há também três modos de predição. O de alta confiança troca recall por precisão, enquanto o best-guess aceita a previsão do modelo mesmo quando a confiança é baixa.

Recursos já existentes

A disponibilidade em várias linguagens é o recurso mais relevante para quem mantém sistema próprio. A linha de comando, escrita em Rust, vem dentro do pacote Python e pode ser instalada com pip ou brew. Para embutir a verificação no código, existem módulos Python, Rust, JavaScript/TypeScript e Go. O site do projeto ainda oferece uma demonstração que roda no próprio navegador, sem instalar nada.

  • Linha de comando em Rust com saída em texto, JSON ou JSONL
  • Identificação recursiva de diretórios e leitura via entrada padrão
  • Retorno do tipo, do MIME e da pontuação de confiança de cada arquivo
  • Modos de predição ajustáveis entre precisão e cobertura
  • Uso em escala no Gmail, no Drive e no Safe Browsing
  • Integração com VirusTotal e com o abuse.ch

Principais dúvidas sobre o projeto

O Magika é um antivírus? Não. A ferramenta informa o tipo do conteúdo, não se ele é malicioso. Ela classifica corretamente como executável um programa disfarçado de PDF, mas quem decide se aquilo é perigoso é o verificador que vier depois.

É um produto oficial do Google? O disclaimer do próprio projeto informa que não se trata de um projeto oficial do Google, que não dá suporte e que não oferece garantias de qualidade. A ferramenta é usada internamente na empresa, mas o código segue como projeto de pesquisa de código aberto.

Qual é o tamanho do modelo e o que ele não faz? O modelo ONNX da versão 3.3 tem 3,1 MB, suficiente para rodar em um único processador sem aceleração. A documentação de limitações avisa que ainda não há detecção de arquivos poliglotas, aqueles que funcionam como dois formatos ao mesmo tempo, e que exemplos adversariais ainda são um campo aberto.

O que está por vir

A versão atual é a 1.0.3 no PyPI, 1.0.0 no npm e 1.0.0 no Go, com a linha de comando na 1.1.0, lançada em abril de 2026. O pacote para JavaScript é tratado como experimental, embora seja o mesmo usado na demonstração pública. Aprimorar a precisão e cobrir mais tipos de conteúdo seguem na lista de melhorias do repositório, sem data divulgada.

Para quem recebe arquivos de terceiros e não pode depender apenas do nome do anexo, o Magika resolve a primeira pergunta: o que isso realmente é. A decisão sobre bloquear, isolar ou abrir continua sendo do sistema que vem depois, e o projeto deixa claro que esse passo não é com ele. O código está no GitHub sob Apache 2.0, e a documentação oficial fica em securityresearch.google/magika, com a demonstração no navegador disponível em securityresearch.google/magika/demo.