O Decodificar é a bancada de transformação de dados do CatSuite: você cola ou envia um valor do tráfego e o módulo reconhece o formato, mostra o conteúdo legível e ainda gera e identifica hashes. Ele reúne, em uma só tela, a autodetecção de JWT, Base64, URL, Hex, HTML Entities e Binary, o suporte a Base64URL e Unicode, inspetores dedicados de JWT, assinaturas JWT e JWE, e a geração de MD5, SHA-1, SHA-256 e SHA-512. Esta página explica cada conceito, cada opção e como usar e configurar o Decodificar passo a passo, do jeito mais simples para quem está começando.
O que é o Decodificar e para que serve #
Durante um teste, o tráfego vem cheio de valores "embaralhados": um parâmetro em percent-encoding na URL, um cookie em Base64, um token JWT no header Authorization, um corpo com entidades HTML, um dump em hexadecimal. O Decodificar é a ferramenta que traduz esses valores de volta para texto legível, e também faz o caminho inverso (codificar) quando você precisa montar um valor para reenviar.
Casos de uso típicos:
- Ler o conteúdo de um token JWT (header e payload) sem depender de sites externos.
- Decodificar um parâmetro ou cookie em Base64 ou Base64URL para ver o que ele carrega.
- Transformar %20,
<, bytes em Hex ou blocos binários de volta em texto. - Gerar o hash de um valor (MD5, SHA-1, SHA-256, SHA-512) para comparar com outro.
- Identificar rapidamente que tipo de hash é uma string capturada, pelo tamanho.
- Inspecionar o envelope de um JWE e descobrir quais algoritmos de criptografia ele usa.
O Decodificar é um auxiliar de análise: ele não envia requisições nem altera o alvo. É a dupla natural do Interceptador, do Repetir e do Navegador, que mandam trechos de tráfego para ele.
Conceitos essenciais do Decodificar #
Antes de mexer nas opções, vale entender os termos que aparecem na tela. Cada conceito abaixo corresponde a um formato, um painel ou um botão do módulo.
Codificar e decodificar #
Codificar é transformar um texto legível no formato de transporte (por exemplo, texto comum para Base64). Decodificar é o contrário: partir do formato de transporte e recuperar o texto legível. No painel FORMATOS, um alternador escolhe entre os dois modos para o mesmo formato selecionado.
URL (percent-encoding) #
A codificação de URL troca caracteres especiais por %XX. Um espaço vira %20, uma chave { vira %7B, e assim por diante. É o formato dos parâmetros de query e de formulários application/x-www-form-urlencoded. Ao decodificar, o Decodificar transforma %20 de volta em espaço e reconstrói o texto original.
Base64 #
O Base64 representa bytes usando 64 caracteres imprimíveis (A-Z, a-z, 0-9, +, /) com = de preenchimento. É muito comum em APIs, cookies, blobs e cabeçalhos. O Decodificar interpreta o texto como bytes UTF-8 ao codificar e reconstrói o texto ao decodificar.
Base64URL #
O Base64URL é a variante segura para URL: troca + e / por - e _ e costuma dispensar o = de preenchimento. É o formato dos três segmentos de um JWT e de muitos links e tokens. Ao codificar em Base64URL, o Decodificar remove o preenchimento =; ao decodificar, ele recompõe o preenchimento necessário automaticamente.
Hexadecimal #
O Hexadecimal (Hex) mostra cada byte como dois dígitos de 0 a f. O Decodificar exibe os bytes separados por espaço, no padrão 48 65 78. Ao decodificar, ele ignora separadores e caracteres fora de 0-9a-f e remonta os bytes dois a dois.
HTML Entities #
As entidades HTML escapam caracteres com significado na marcação: < vira <, > vira >, & vira &, " vira " e ' vira '. O Decodificar converte nos dois sentidos e também resolve entidades numéricas como é (decimal) e é (hexadecimal), que apontam para pontos de código Unicode.
ASCII / Binary #
O formato ASCII / Binary mostra cada byte como um bloco de 8 bits (01001000), separados por espaço. Ao decodificar, o Decodificar exige blocos de exatamente 8 bits contendo só 0 e 1, e reconstrói o texto a partir deles.
Unicode e UTF-8 #
O Decodificar trata o texto como UTF-8 em todas as conversões. Isso significa que caracteres acentuados, emojis e qualquer ponto de código Unicode sobrevivem ao codificar e decodificar Base64, Hex e Binary. Não há um botão "Unicode" separado: o suporte a Unicode é intrínseco ao módulo e, no caso de HTML Entities, aparece também na forma das entidades numéricas &#...; e &#x...;, que são resolvidas para o caractere Unicode correspondente.
JWT (JSON Web Token) #
Um JWT tem três partes separadas por ponto: header, payload e signature, cada uma em Base64URL. O header diz o algoritmo (alg) e o tipo (typ); o payload carrega as claims (como sub, exp, iat); a signature garante a integridade. O Inspetor de JWT separa, decodifica e formata as duas primeiras partes como JSON, converte o exp em data legível e permite remontar o token após editar o payload.
Assinaturas JWT (famílias de algoritmo) #
O painel JWT e assinaturas lê o campo alg do header e classifica a assinatura em uma família e um tipo:
- HMAC (HS256/384/512) — assinatura simétrica: o mesmo segredo compartilhado assina e valida.
- RSA (RS256/384/512) — assinatura assimétrica com PKCS#1 v1.5: chave privada assina, pública valida.
- RSA-PSS (PS256/384/512) — variante moderna do RSA com padding PSS, também assimétrica.
- ECDSA (ES256/384/512) — curvas elípticas com par de chaves, assimétrica.
- EdDSA — família moderna (normalmente Ed25519/Ed448), assimétrica.
- none — header com
alg=none: o token não está assinado.
JWE (JSON Web Encryption) #
Um JWE compacto tem cinco segmentos: protected header, encrypted key, initialization vector (IV), ciphertext e authentication tag. O Inspetor de JWE lê apenas o protected header (os metadados públicos do envelope) e identifica alg (gestão de chave), enc (criptografia do conteúdo), zip, cty, typ e kid.
Hashes #
Um hash é uma impressão digital de tamanho fixo de um conteúdo. O Decodificar gera MD5, SHA-1, SHA-256 e SHA-512 a partir do texto (em bytes UTF-8) e também identifica um hash capturado pelo tamanho em caracteres hexadecimais: 32 (MD5), 40 (SHA-1), 64 (SHA-256) e 128 (SHA-512). Hash é um caminho só de ida: ele não é reversível.
Smart Decode (autodetecção) #
O Smart Decode é a "mágica" do módulo: você cola um valor e ele testa vários formatos automaticamente, mostrando um cartão para cada detecção plausível. Ele reconhece JWT, JWE, URL, Base64, Base64URL, Hex, HTML Entities e ASCII/Binary, e só mostra um resultado quando ele é diferente da entrada e parece legível (acima de 85% de caracteres imprimíveis), evitando "lixo" na tela.
A tela do Decodificar: página inicial, painéis e abas #
O Decodificar abre numa página inicial com o título DECODIFICAR e o resumo "Analise strings, tokens e hashes rapidamente". Dela saem seis entradas, cada uma com um ícone, uma descrição curta e um chip de resumo à direita. Toque em uma entrada para abrir a página correspondente; em cada página, o atalho DECODIFICAR no topo (com a seta) volta para o início.
| Entrada | O que abre | Resumo exibido |
|---|---|---|
| FORMATOS | Codificar e decodificar URL, Base64, Base64URL, Hex, HTML Entities e ASCII/Binary | O formato atual (ex.: URL) |
| INSPETOR DE JWT | Separar header, payload e signature, converter exp e remontar o token | JWT |
| JWT E ASSINATURAS | Classificar HS/HMAC, RS/RSA, PS/RSA-PSS, ES/ECDSA e simétrica vs. assimétrica | HS / RS / ES |
| INSPETOR DE JWE | Ler o protected header e separar os 5 segmentos do JWE compacto | JWE |
| HASHES E CRIPTO | Gerar MD5, SHA-1, SHA-256, SHA-512 e identificar hashes | O algoritmo atual (ex.: SHA-256) |
| SMART DECODE | Autodetecção de JWT, Base64, URL, Hex, HTML Entities e Binary | MÁGICA |
Cada página tem a mesma estrutura: um campo de ENTRADA para colar o valor, uma linha de botões de ação e um ou mais blocos de RESULTADO. Os blocos de resultado são selecionáveis: toque e segure para copiar ou para reenviar um trecho ao próprio Smart Decode.
Opções do Decodificar e como configurar #
As opções do Decodificar ficam nas páginas FORMATOS e HASHES E CRIPTO. A tabela abaixo reúne todas.
| Opção | Valores | Padrão | O que faz |
|---|---|---|---|
| Modo (FORMATOS) | DECODIFICAR, CODIFICAR | DECODIFICAR | Define o sentido da conversão para o formato selecionado |
| Formato | URL, BASE64, BASE64URL, HEXADECIMAL, HTML ENTITIES, ASCII / BINARY | URL | Escolhe qual transformação será aplicada à entrada |
| Algoritmo (HASHES) | MD5, SHA-1, SHA-256, SHA-512 | SHA-256 | Escolhe o algoritmo usado em GERAR HASH |
Para configurar os FORMATOS, comece pelo MODO: deixe em DECODIFICAR para ler um valor capturado, ou troque para CODIFICAR quando quiser produzir um valor para reenviar. Em seguida, toque no chip do FORMATO desejado — a descrição logo abaixo explica o que aquele formato faz. Cole o conteúdo em ENTRADA e toque em EXECUTAR. O resultado aparece em RESULTADO; use USAR SAÍDA para jogar o resultado de volta na entrada e encadear conversões (por exemplo, decodificar Base64URL e depois ler o JSON).
Para configurar os HASHES, toque no chip do ALGORITMO (MD5, SHA-1, SHA-256 ou SHA-512) antes de gerar. Cole o conteúdo em ENTRADA e use GERAR HASH. Se o que você colou já é um hash e você quer saber qual é, toque em IDENTIFICAR: o módulo olha o tamanho em caracteres hexadecimais e diz o tipo provável.
Botões e ações #
Cada página tem seu próprio conjunto de botões. A tabela reúne o que cada um faz.
| Botão | Página | O que faz |
|---|---|---|
| EXECUTAR | Formatos | Aplica o formato e o modo atuais à entrada |
| USAR SAÍDA | Formatos | Copia o resultado de volta para o campo de entrada |
| COPIAR | Formatos | Copia o resultado para a área de transferência |
| ANALISAR | Inspetor de JWT | Separa e decodifica header, payload e signature |
| COPIAR TOKEN | Inspetor de JWT / JWE | Copia o token original da entrada |
| REMONTAR TOKEN | Inspetor de JWT | Recria o token a partir do payload editado |
| COPIAR REMONTADO | Inspetor de JWT | Copia o token reconstruído |
| ANALISAR ASSINATURA | JWT e assinaturas | Classifica a família e o tipo da assinatura |
| USAR TOKEN DO INSPETOR | JWT e assinaturas | Traz para cá o token já colado no Inspetor de JWT |
| ANALISAR JWE | Inspetor de JWE | Separa os 5 segmentos e lê o protected header |
| GERAR HASH | Hashes e cripto | Gera o hash da entrada no algoritmo escolhido |
| IDENTIFICAR | Hashes e cripto | Diz o tipo provável de um hash pelo tamanho |
| COPIAR HASH | Hashes e cripto | Copia o hash gerado |
| MÁGICA | Smart Decode | Roda a autodetecção sobre a entrada |
| LIMPAR | Smart Decode | Apaga a entrada e os resultados |
| USAR COMO ENTRADA | Smart Decode | Usa o texto recebido do tráfego como entrada |
| ABRIR JWT / ABRIR JWE | Smart Decode | Abre o token detectado no inspetor correspondente |
Passo a passo #
1. Decodificar um valor de formato simples #
- Na página inicial, abra FORMATOS.
- Deixe o MODO em DECODIFICAR.
- Escolha o FORMATO (por exemplo, BASE64).
- Cole o valor em ENTRADA e toque em EXECUTAR.
- Leia o RESULTADO. Se ele ainda estiver codificado em outro formato, toque em USAR SAÍDA e repita com o formato seguinte.
2. Codificar um valor para reenviar #
- Em FORMATOS, troque o MODO para CODIFICAR.
- Escolha o formato de destino (por exemplo, URL para um parâmetro de query).
- Digite ou cole o texto legível em ENTRADA e toque em EXECUTAR.
- Use COPIAR e leve o valor para o Repetir ou o Interceptador.
3. Inspecionar e remontar um JWT #
- Abra o INSPETOR DE JWT e cole o token completo em TOKEN JWT.
- Toque em ANALISAR. Veja a visualização colorida (HEADER, PAYLOAD, SIGNATURE), o HEADER DECODED e, se houver
exp, o TIMESTAMP exp convertido para data local. - Edite o JSON em PAYLOAD EDITÁVEL se quiser testar uma variação.
- Toque em REMONTAR TOKEN e depois em COPIAR REMONTADO.
- Lembre-se: a assinatura antiga é mantida, então o token remontado tende a ser recusado pelo servidor que valida a assinatura.
4. Classificar a assinatura de um JWT #
- Abra JWT E ASSINATURAS. Se o token já está no Inspetor, toque em USAR TOKEN DO INSPETOR; senão, cole em TOKEN JWT.
- Toque em ANALISAR ASSINATURA.
- Leia o RESUMO DA ASSINATURA (
ALG,TIPO,FAMÍLIA,typ) e a CLASSIFICAÇÃO, que explica o fluxo de chaves e lista os algoritmos da mesma família.
5. Ler o envelope de um JWE #
- Abra o INSPETOR DE JWE e cole o JWE compacto (5 segmentos) em TOKEN JWE.
- Toque em ANALISAR JWE.
- Veja o RESUMO DO ENVELOPE (
alg,enc,zip,cty,typ,kid), a visualização dos 5 segmentos e o PROTECTED HEADER DECODED.
6. Gerar e identificar hashes #
- Abra HASHES E CRIPTO.
- Para gerar: escolha o ALGORITMO, cole o conteúdo em ENTRADA e toque em GERAR HASH. Use COPIAR HASH para levar o valor adiante.
- Para identificar: cole o hash em ENTRADA e toque em IDENTIFICAR. O módulo responde com o tipo provável pelo tamanho.
7. Colar ou enviar um valor vindo do tráfego #
- No Interceptador, no Repetir ou em qualquer texto selecionável do app, selecione o trecho.
- No menu de seleção, toque em DECODIFICAR (ou use Enviar para Decodificar). O app mostra a mensagem "Análise enviada para o Decodificar".
- O Decodificar abre o SMART DECODE com o trecho em TEXTO RECEBIDO e já roda a autodetecção.
- Toque em USAR COMO ENTRADA para editar e reprocessar, ou em ABRIR JWT / ABRIR JWE quando um token for detectado.
- No Navegador, use Detectar JWT / Base64 em storage para mandar tokens e valores do storage da página direto para cá.
Exemplos #
Decodificação de URL (percent-encoding):
nome%3DCat%20Suite%26id%3D1024nome=Cat Suite&id=1024Base64 e Base64URL com o mesmo conteúdo:
Q2F0U3VpdGU=CatSuiteHexadecimal em bytes separados por espaço:
48 65 78HexEntidades HTML, incluindo uma entidade numérica Unicode:
<b>café</b><b>café</b>Blocos binários de 8 bits:
01001000 01101001HiJWT de exemplo e as duas primeiras partes decodificadas:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}Hashes do texto CatSuite em cada algoritmo:
MD5 08aa3451f325a5ffebb46df10aec9ecf
SHA-1 30a1abc0a012cd7a49f469d698d7881df04b201e
SHA-256 10f3dfd0bb7f1fb99bbe8fd16816ad6e5ca012be645c2a0660d50a45ecfb7961
SHA-512 1824976bbd707e6d646ff5fbb5ea3d9171d8ba3882d9ef6e81e84c34ea1a52f3ea097123e30420037917cd78bcd3df2f89cd794a3d9faa840330c5ca785aa58fIdentificação pelo tamanho em caracteres hexadecimais:
32 caracteres -> MD5
40 caracteres -> SHA-1
64 caracteres -> SHA-256
128 caracteres -> SHA-512Problemas comuns e perguntas frequentes #
Colei um Base64 e o resultado veio "sujo" ou vazio. Pode ser Base64URL (com - e _), não Base64 padrão. Troque o formato para BASE64URL. Também confira se não há quebras de linha ou espaços colados junto; o módulo remove espaços, mas conteúdo cortado não decodifica.
O Hex não decodifica. O decodificador de Hex precisa de um número par de dígitos hexadecimais. Caracteres fora de 0-9a-f são ignorados, mas, se sobrar um dígito solto, a conversão falha. Cole os bytes completos.
O Binary deu erro. Use blocos de exatamente 8 bits contendo só 0 e 1, separados por espaço. Qualquer outro caractere invalida a entrada.
O JWT não abre. Um JWT precisa de pelo menos header e payload separados por ponto, e ambos devem ser JSON válido em Base64URL. Tokens truncados, com aspas a mais ou colados pela metade não passam.
Editei o payload e o token "quebrou". É esperado. O Decodificar mantém a assinatura original ao remontar e não assina de novo (ele não tem a chave). O token remontado serve para estudo, não para enganar um servidor que valide a assinatura.
O JWE não mostra o conteúdo. O Inspetor de JWE lê apenas o envelope (protected header e segmentos). O payload continua cifrado: sem a chave correta, não há como descriptografar.
O IDENTIFICAR disse que "o tamanho não bate". O valor é hexadecimal, mas não tem 32, 40, 64 nem 128 caracteres. Pode ser um hash de outro algoritmo, um valor truncado ou algo que não é hash.
O Smart Decode não detectou nada. Ele só mostra resultados diferentes da entrada e que pareçam legíveis. Um valor que já está em texto puro, ou que decodifica para bytes ilegíveis, não gera cartão. Tente o formato específico na página FORMATOS.