Hexter

Como abrir e ler um ficheiro binário no Mac

Tens um ficheiro sem uma extensão útil, ou um que o macOS não reconhece, um .bin, um dump de firmware, um save antigo de um jogo, algo que um dispositivo exportou. Fazes duplo clique e ou não acontece nada, ou abre no TextEdit como uma parede de caracteres estragados. Queres saber como abrir um ficheiro binário no Mac sem andar a adivinhar e sem arriscar o próprio ficheiro.

Porque é que o duplo clique não funciona

O macOS decide como abrir um ficheiro com base na sua extensão e, na falta dela, num palpite sobre o seu tipo. Os ficheiros binários, ficheiros que guardam dados em bruto em vez de texto, não têm uma extensão padrão que o sistema reconheça, por isso o macOS ou se recusa a abri-los ou os entrega a qualquer app que ache mais próxima. Normalmente é o TextEdit, que tenta descodificar os bytes como texto e te mostra sobretudo símbolos ilegíveis, com uma ou outra palavra real a espreitar por entre eles.

Esse efeito de palavra-legível-no-meio-do-ruído não é da tua imaginação. Os ficheiros binários contêm muitas vezes texto embutido (caminhos de ficheiros, rótulos, strings de versão) ainda que os dados à volta sejam genuinamente binários. O TextEdit apresenta tudo isso como texto, e é por isso que ficas com aquele aspeto meio ilegível, meio familiar. Não te está de facto a mostrar nada de útil, e se guardares a partir do TextEdit por acidente, podes corromper o ficheiro.

O que realmente queres: uma vista hexadecimal

Um ficheiro binário é apenas uma sequência de bytes, cada um deles um número de 0 a 255. A forma padrão de olhar para isso em segurança é uma vista hexadecimal: cada byte mostrado como um valor hexadecimal de dois caracteres (00 a FF), alinhado em linhas ao lado de uma coluna de deslocamento (onde estás no ficheiro) e de uma coluna de texto (os mesmos bytes interpretados como ASCII, para as partes que são legíveis). É isso que um editor hexadecimal te dá, e é a única vista que te mostra o conteúdo real sem adivinhar um formato.

Três formas de lá chegar

Terminal, com xxd ou hexdump. O macOS traz ambos. Corre xxd yourfile.bin | less e obténs um dump hexadecimal com deslocamento diretamente no Terminal. É rápido e está sempre disponível, mas é só de leitura, não tem pesquisa, não tem salto para o deslocamento e não interpreta nada do que estás a ver para além do hex em bruto. Serve para uma espreitadela rápida, é desajeitado para algo mais.

TextEdit ou outro editor de texto. Não faças isso. Como acima, descodifica os bytes como texto, o que é a lente errada para dados binários, e há um risco real de corromper o ficheiro em silêncio se ele for guardado.

Um editor hexadecimal dedicado. É a ferramenta certa se estás a fazer mais do que um relance de cinco segundos: percorrer um ficheiro grande, procurar um padrão de bytes específico, saltar para um deslocamento conhecido, ou verificar o que um conjunto de bytes representa de facto (um número, uma data, uma cor, uma string noutra codificação). O Hexter foi feito exatamente para isto. Abre todos os ficheiros só de leitura por predefinição, por isso olhar para um ficheiro binário desconhecido não corre o risco de o alterar. Os ficheiros abrem instantaneamente, independentemente do tamanho, porque o Hexter lê os bytes a pedido em vez de carregar o ficheiro inteiro para a memória.

Passo a passo

  1. Abre o ficheiro. Arrasta-o para cima do Hexter, ou usa Ficheiro > Abrir. Não é preciso adivinhar primeiro um tipo de ficheiro; o Hexter abre qualquer coisa como bytes em bruto.
  2. Lê a disposição. A coluna de deslocamento à esquerda diz-te onde estás no ficheiro. A grelha hexadecimal no meio mostra cada byte como dois caracteres hex. O painel de texto à direita mostra os mesmos bytes como ASCII, para as partes do ficheiro que sejam texto de verdade.
  3. Salta para um deslocamento específico com ⌘J se já sabes onde procurar, em vez de percorrer.
  4. Seleciona bytes para os inspecionar. Selecionar um intervalo mostra-te esses dados interpretados como diferentes tipos numéricos (inteiros de 8, 16, 32 ou 64 bits, com ou sem sinal, em qualquer ordem de bytes) na barra lateral do Inspetor. É assim que descobres se quatro bytes são um tamanho de ficheiro, um carimbo temporal, ou outra coisa.
  5. Pesquisa com ⌘F se andas à procura de uma string ou sequência de bytes específica em vez de percorrer manualmente.
  6. Só ativa a edição se precisares mesmo de mudar alguma coisa. O Hexter mantém os ficheiros só de leitura até ligares a edição explicitamente, e mesmo aí, as alterações ficam numa camada de patches reversível até escolheres guardar. Nada do que fazes enquanto só estás a olhar pode tocar no ficheiro original.

Se se vier a revelar que o ficheiro é um formato que o Hexter reconhece estruturalmente, PNG, ZIP, Mach-O, WAV ou SQLite, o separador Analisar interpreta a estrutura real (fronteiras de chunks, cabeçalhos, campos) ao lado dos bytes em bruto, por isso ficas com mais do que apenas hex.

É este o fluxo todo: abrir, ler as três colunas, saltar ou pesquisar para chegar onde precisas, e inspecionar uma seleção quando precisas de saber o que um conjunto específico de bytes significa de facto. Sem adivinhar, e sem nada em risco até tu o dizeres.