De Hex para Texto: Reconhecendo e Decodificando Hex
O desafio
Um flag foi escrito como uma longa sequência de dígitos hexadecimais, usando apenas os caracteres 0-9 e a-f. Isso é a marca de uma codificação específica. Reconheça-a, toque no decodificador correspondente, e envie o flag.
O que você vai aprender
- Reconhecer a codificação hex pelo conjunto limitado de caracteres 0-9a-f e pelo comprimento par
- Entender que cada par de caracteres hex representa um byte
- Decodificar uma string hex com o botão decodificador correspondente em uma única etapa
- Diferenciar a codificação hex do base64 pelo conjunto de caracteres e pelo padding
- Entender por que hex não oferece confidencialidade, apenas um jeito diferente de escrever bytes
Habilidades testadas
Pré-requisitos
- A ideia de que texto pode ser escrito como uma sequência de valores de byte
- Familiaridade em comparar uma string curta com um conjunto de caracteres esperado
Como funciona
Hexadecimal, ou hex, é uma forma de escrever bytes usando dezesseis dígitos: 0-9 para os valores zero a nove e a-f para dez a quinze. Cada byte ocupa exatamente dois caracteres hex, então uma string hex sempre tem comprimento par e nunca contém nenhuma letra além de f. Esse conjunto restrito de caracteres é a forma mais fácil de reconhecer hex à primeira vista: se você vê apenas 0-9 e a-f e uma quantidade par de caracteres, quase certamente é hex.
A decodificação é mecânica. O decodificador lê a string dois caracteres de cada vez, transforma cada par no byte que ele representa, e depois mostra esses bytes como texto. Não há chave e nem segredo envolvido - o mapeamento entre um par como 48 e seu byte é fixo e público. Qualquer pessoa pode reverter hex com um único clique, e é por isso que hex, assim como base64 e ROT13, é codificação, não criptografia.
Diferenciar hex de base64 é a habilidade real sendo testada. base64 usa letras maiúsculas e minúsculas, dígitos, e frequentemente termina com padding de =, então carrega caracteres como G-Z que hex nunca tem. A string aqui não tem nenhum desses, apenas 0-9a-f, então base64 é a ferramenta errada. Os botões ROT13, URL e reverse também esperam formatos diferentes e não produziriam texto legível, então são iscas.
Erros comuns
- Tentar base64 primeiro. base64 traria letras além de
fe frequentemente padding de=. Uma string com apenas0-9a-fé hex, não base64. - Dividir os pares errado. Hex é lido em dois caracteres por byte. Ler caracteres isolados ou agrupamentos ímpares produz lixo; deixe o decodificador cuidar do pareamento.
- Acreditar que hex protege o valor. Não há chave, então hex não esconde nada. É um clique de distância do texto puro.
- Enviar os dígitos hex em vez da flag decodificada. A resposta é a flag legível após a decodificação, incluindo seu envoltório HDNA.
Como se proteger
O ponto defensivo é o mesmo em toda codificação: hex é um formato de transporte e exibição, nunca um controle de segurança. Se um valor precisa permanecer privado, ele deve ser protegido com criptografia de verdade, usando uma chave secreta gerenciada, ou mantido totalmente fora do artefato. Uma camada de hex ao redor de um valor mostra como ele foi escrito, não que ele está seguro.
- Nunca trate uma string hex como proteção para senhas, tokens ou dados pessoais.
- Use criptografia adequada com uma chave gerenciada quando os dados realmente precisarem de confidencialidade.
- Trate qualquer camada de hex, base64 ou URL em logs, configurações ou respostas como cosmética e decodifique-a durante a revisão.
- Decodifique todo valor codificado que encontrar em seus próprios sistemas para confirmar que nada sensível está exposto.