Dicionário

O que é o raw header de um arquivo?

O raw header mostra os primeiros bytes de um arquivo como números hexadecimais. Esses bytes revelam o tipo real de arquivo, e você pode ler muitos deles como texto.

raw-header

O raw header é a primeira parte de um arquivo, mostrada byte a byte em vez de como campos de metadados nomeados. Muitos formatos de arquivo começam com um padrão fixo de bytes, muitas vezes chamado de assinatura ou magic number. Os programas leem esse padrão para saber que tipo de arquivo é.

Em um relatório de metadados, o campo Raw Header mostra esses bytes como números hexadecimais. Cada par de caracteres, como 89 ou FF, representa 1 byte.

Um e-mail também tem uma seção de cabeçalho no topo, com campos como De, Para e Assunto. Este artigo trata do cabeçalho de um arquivo.

Como é o valor

Hexadecimal, ou base 16, escreve cada byte como 2 caracteres entre os dígitos de 0 a 9 e as letras de A a F. Um byte pode, portanto, ter qualquer valor de 00 a FF.

No código de caracteres ASCII, os valores de 21 a 7E representam letras, dígitos e pontuação, e 20 é um espaço. Valores abaixo de 20 são códigos de controle, e 00 é o caractere de todos os zeros chamado NUL.

Como ler um raw header como texto

Para transformar um raw header em texto, consulte cada byte em uma tabela ASCII. Só os bytes de 20 a 7E representam um caractere ASCII visível ou um espaço. Outros bytes não representam, então você geralmente consegue ler apenas parte de um cabeçalho.

  • 25 50 44 46 2D é lido como um sinal de porcentagem, as letras PDF e um hífen.
  • 89 50 4E 47 contém as letras PNG nos bytes 2 a 4.

Valores típicos

Formatos comuns começam com estas assinaturas:

  • Imagem PNG: 89 50 4E 47 0D 0A 1A 0A
  • Imagem JPEG: FF D8 FF, em que FF D8 marca o início da imagem
  • Imagem GIF: 47 49 46 38, depois 39 61 ou 37 61 (GIF89a ou GIF87a)
  • Documento PDF: 25 50 44 46 2D, depois a versão, como 1.7
  • Imagem TIFF, little-endian: 49 49 2A 00 (II, depois o número 42)
  • Imagem TIFF, big-endian: 4D 4D 00 2A (MM, depois o número 42)
  • Arquivo ZIP e arquivos Office baseados em ZIP, como DOCX: 50 4B 03 04 (PK)
  • Áudio MP3 com uma tag ID3v2: 49 44 33 (ID3)
  • Áudio WAV: 52 49 46 46 (RIFF), 4 bytes que variam, depois 57 41 56 45 (WAVE)
  • Vídeo MP4: um tamanho de 4 bytes, depois 66 74 79 70 (ftyp)

Em um arquivo TIFF, os 2 primeiros bytes também definem a ordem de bytes dos números no arquivo. Em um arquivo PDF, os caracteres após a assinatura indicam a versão do PDF, mas uma entrada mais adiante no arquivo pode sobrescrevê-la.

Quais arquivos o carregam

Todo arquivo tem um raw header, mas nem todo formato tem uma assinatura. Arquivos de texto simples começam diretamente com seu texto. Os programas os reconhecem porque seus primeiros bytes contêm apenas caracteres de texto.

Por que isso é importante

A extensão do nome de arquivo é só parte do nome, e qualquer pessoa pode mudá-la. O cabeçalho pode revelar o verdadeiro tipo de arquivo e o tipo MIME mesmo quando a extensão está errada.

Um servidor web pode não enviar um tipo MIME, ou um navegador pode considerar que o tipo recebido está errado. O navegador pode então comparar os primeiros bytes com uma tabela de padrões conhecidos. O comando Unix file procura por um magic number perto do início do arquivo.

Um cabeçalho também ajuda você a identificar problemas. Se um arquivo chamado photo.png não começa com 89 50 4E 47, ele não segue o formato PNG. O início do arquivo pode estar danificado, ou o arquivo pode ser de outro tipo, com a extensão errada.

Um cabeçalho composto apenas por bytes 00 não corresponde a nenhuma assinatura comum. Mas um arquivo MP4 pode começar com 00, porque um tamanho pequeno em seus 4 primeiros bytes começa com zero. Quando nada corresponde e os bytes não são texto, os navegadores tratam o arquivo como application/octet-stream.