Hexter

O que é um editor hexadecimal (e quando você de fato precisa de um)

Alguém te disse para “verificar em um editor hexadecimal”, ou você procurou por um visualizador hexadecimal e caiu aqui sem ter total certeza do que ele é. Tudo bem. Um editor hexadecimal é um programa que te mostra o conteúdo bruto de um arquivo, byte por byte, em vez de tentar interpretá-lo como um documento, uma imagem ou uma planilha. É o mais perto que você pode chegar de olhar exatamente o que está armazenado em disco.

Por que hexadecimal, especificamente

Um arquivo, qualquer arquivo, é só uma sequência de bytes, e cada byte é um número de 0 a 255. Você poderia exibir esses números em decimal, mas 0 a 255 ocupa até três dígitos e não se alinha de forma limpa. Você poderia exibi-los em binário, mas um único byte são oito dígitos de 1s e 0s, o que é difícil de examinar visualmente. O hexadecimal (base 16, usando os dígitos 0-9 e as letras A-F) é o meio-termo: cada byte cabe em exatamente dois caracteres, de 00 a FF, então uma linha de bytes se alinha em uma grade organizada e fácil de examinar. Essa é a razão inteira de “hex” ser o padrão, e não decimal ou binário. É uma escolha de legibilidade, não uma exigência técnica.

O que você está de fato olhando

Abra qualquer arquivo em um editor hexadecimal e você verá três coisas lado a lado, para os mesmos dados:

Diagrama das três colunas de um editor hexadecimal: a coluna de offset mostrando a posição no arquivo, a grade hexadecimal mostrando cada byte como dois caracteres hex, e a coluna de texto mostrando os mesmos bytes interpretados como ASCII.
Os mesmos bytes, mostrados de três formas: onde estão, o que são, e como ficariam como texto.
  • Offset: quão adentro do arquivo você está, normalmente mostrado no próprio hex, para que você possa voltar a uma posição específica depois.
  • Bytes hex: os dados de fato, dois caracteres por byte, agrupados em linhas (comumente 16 bytes por linha).
  • Visão de texto (ASCII): os mesmos bytes reinterpretados como caracteres, para a parte do arquivo que por acaso for texto legível. Bytes que não são texto normalmente aparecem como um ponto no lugar.

Essa terceira coluna é o motivo de caminhos de arquivo, rótulos e strings de versão muitas vezes ficarem visíveis mesmo em arquivos que são majoritariamente dados binários: qualquer texto embutido aparece nessa coluna, mesmo que o arquivo como um todo não seja um arquivo de texto.

Quando você de fato precisaria de um

A maioria das pessoas passa a vida inteira sem abrir um editor hexadecimal, e isso é completamente normal. As situações em que ele é genuinamente a ferramenta certa são específicas:

  • A extensão de um arquivo não bate com seu conteúdo real. Alguém renomeou um .zip para .doc, ou você não tem certeza de que um arquivo .db é mesmo um banco de dados. Os primeiros bytes da maioria dos formatos são uma assinatura distintiva (o PNG começa com 89 50 4E 47, o ZIP com 50 4B), e uma visão hexadecimal confirma isso em segundos.
  • Um arquivo está corrompido e você quer saber como. Download truncado, transferência ruim, um cabeçalho que foi sobrescrito. Ver os bytes brutos te diz se o dano está no início, no fim ou espalhado.
  • Você está depurando algo que lê ou escreve dados binários, um formato de save, um arquivo de configuração, um protocolo de rede, e precisa confirmar exatamente quais bytes estão sendo produzidos.
  • Você quer verificar um valor específico, como confirmar que quatro bytes realmente representam o tamanho de arquivo que você espera, ou checar um carimbo de data/hora, sem confiar que uma ferramenta caixa-preta o interprete corretamente.
  • Curiosidade. Muita gente abre um editor hexadecimal uma vez só para ver como um formato de arquivo familiar de fato parece por baixo. Essa é uma razão completamente legítima.

Se nenhuma dessas descreve o que você está fazendo, você provavelmente não precisa de um, e tudo bem. É uma ferramenta especialista para um tipo específico de pergunta.

O que torna um editor hexadecimal bom, não apenas funcional

Uma vez que você precisa de um, as ferramentas em geral fazem o mesmo trabalho básico: mostrar bytes, deixar você rolar, deixar você buscar. As diferenças que importam são sobre segurança e clareza, não sobre puro número de recursos. O Hex Fiend é a opção gratuita e open source que a maioria dos usuários de Mac acaba usando por padrão, e ele é genuinamente capaz, em especial com arquivos muito grandes. O Hexter adota uma abordagem mais estreita e cautelosa: todo arquivo abre em modo somente leitura, então examinar algo desconhecido não traz risco algum, editar é um passo explícito e reversível em vez do estado padrão, e formatos de arquivo comuns (PNG, ZIP, Mach-O, WAV, SQLite) têm sua estrutura analisada automaticamente, em vez de deixar você decodificar cabeçalhos à mão.

Qual dos dois você quer depende do que você está fazendo. Se você está comparando dois arquivos de vários gigabytes byte a byte, a comparação do Hex Fiend foi feita para essa escala. Se você só precisa confirmar o que um arquivo de fato é, checar um punhado de bytes, ou fazer uma pequena edição cuidadosa sem se preocupar em destruir o original por acidente, essa é a situação para a qual o Hexter foi feito.