Decodificador Protobuf Online
Decodifique uma mensagem binária Protocol Buffers sem o schema .proto, no seu navegador. Seus bytes ficam no seu dispositivo.
Seus bytes protobuf são decodificados localmente no seu navegador e nunca são enviados, mas evite colar mensagens que contenham segredos reais ou dados pessoais em qualquer ferramenta.
Precisa decodificar um JWT? Experimente o Decodificador JWT.
Sobre Decodificador Protobuf
Este decodificador protobuf lê uma mensagem binária Protocol Buffers direto dos seus bytes, sem nenhum arquivo .proto necessário. Cole o payload como hex ou base64 e o decodificador percorre o formato de fio bruto: ele lê cada tag para recuperar o número do campo e o tipo de fio, depois interpreta o valor. Varints são mostrados como leituras int64, uint64 e zig-zag; campos fixed64 e fixed32 expõem suas visões de inteiro, double e float; e campos delimitados por tamanho são testados primeiro como mensagens aninhadas, depois como texto UTF-8 e por fim como bytes hex brutos. O resultado é renderizado como uma árvore de campos indentada, com campos repetidos agrupados sob o mesmo número. Foi feito para engenheiros depurando tráfego gRPC, pacotes capturados ou blobs proto opacos de logs. Tudo roda no seu navegador, então os bytes que você cola são decodificados localmente e nunca saem do seu dispositivo.
Recursos
- Decodifica qualquer mensagem Protocol Buffers a partir de bytes brutos sem precisar do schema .proto
- Aceita entrada em hex ou base64 com detecção automática e um seletor manual de formato
- Lê os tipos de fio varint, fixed64, delimitado por tamanho e fixed32 a partir da tag
- Mostra varints como interpretações int64, uint64, zig-zag com sinal e booleana
- Renderiza campos fixed64/fixed32 como visões de inteiro, double e float, além dos bytes brutos
- Decodifica recursivamente mensagens aninhadas e recorre a strings UTF-8 ou bytes hex
- Agrupa campos repetidos sob o mesmo número de campo em uma árvore indentada
- Informa um erro claro para entradas truncadas, malformadas ou que não são protobuf
Como usar Decodificador Protobuf
- Copie seu payload protobuf como uma string hex ou base64.
- Cole-o na caixa de mensagem Protobuf.
- Deixe o formato em Auto, ou escolha Hex ou Base64 se a detecção estiver errada.
- Leia a árvore de campos decodificada, expandindo mensagens aninhadas para inspecionar os valores.
Exemplo
Entrada
08 96 01 12 07 74 65 73 74 69 6e 67
Saída
#1 varint wire 0 150
#2 string wire 2 "testing"
O campo 1 é um varint (150) e o campo 2 é uma string UTF-8 delimitada por tamanho.
Erros comuns e solução de problemas
- O decodificador mostra "Input is not valid hex" ou "Input is not valid base64". — Ajuste o seletor de formato para combinar com seus dados, ou remova caracteres estranhos; o hex deve ser pares de 0-9a-f e o base64 deve usar o alfabeto padrão ou seguro para URL.
- Um campo que deveria ser uma string é renderizado como uma mensagem aninhada ou hex bruto. — Sem o arquivo .proto o decodificador adivinha a partir dos bytes; campos delimitados por tamanho são ambíguos, então uma sub-mensagem que por acaso pareça texto, ou o contrário, pode ser interpretada erroneamente.
- A decodificação falha com "Length-delimited field runs past the end of the input". — O payload está truncado ou não é realmente protobuf. Recapture a mensagem completa e confirme que você copiou cada byte, incluindo os finais.
- Tipos de fio de grupo são informados como não suportados. — Os tipos de fio 3 e 4 (start-group/end-group) estão obsoletos no protobuf e raramente são emitidos; recodifique a mensagem com campos proto2/proto3 em vez de grupos.
Perguntas frequentes
- Posso decodificar protobuf sem o arquivo .proto?
- Sim. Este decodificador protobuf lê o formato de fio bruto, então ele recupera cada número de campo, tipo de fio e valor diretamente dos bytes. Sem o schema ele não pode saber os nomes de campo originais nem se um número era um valor com sinal, sem sinal ou enum, então ele mostra as interpretações plausíveis lado a lado.
- O que significam os tipos de fio do protobuf?
- Cada tag de campo codifica um tipo de fio: 0 é um varint (ints, bools, enums), 1 é fixed64 (sfixed64, double), 2 é delimitado por tamanho (strings, bytes e mensagens aninhadas), e 5 é fixed32 (sfixed32, float). O decodificador rotula cada campo com seu tipo de fio para que você o mapeie de volta à definição de origem.
- Devo colar o protobuf como hex ou base64?
- Qualquer um funciona. Deixe o seletor em Auto e a ferramenta detecta o formato; hex limpo (pares de dígitos hex, com espaços, dois-pontos ou prefixos 0x opcionais) é lido como hex e todo o resto é tratado como base64, incluindo base64 seguro para URL. Mude o seletor manualmente se seus dados forem ambíguos.
- Por que um varint é mostrado como vários números diferentes?
- Um varint protobuf pode representar um int64, um uint64 ou um sint64 codificado em zig-zag, e o formato de fio não registra qual. O decodificador imprime todos eles, mais uma leitura booleana para 0 e 1, para que você escolha a interpretação que combina com seu schema.
- O payload decodificado é enviado para algum lugar?
- Não. A decodificação protobuf roda inteiramente no seu navegador usando um analisador de formato de fio em JavaScript puro, então os bytes que você cola são processados no seu dispositivo e nunca enviados para um servidor.
Ferramentas relacionadas
Todas as ferramentas de ArrayKit