Protobuf Decoder онлайн

Декодируйте бинарное сообщение Protocol Buffers без схемы .proto, прямо в браузере. Ваши байты остаются на устройстве.

Ваши байты protobuf декодируются локально в вашем браузере и никогда не загружаются, но избегайте вставки сообщений, содержащих реальные секреты или персональные данные, в любой инструмент.

Нужно вместо этого декодировать JWT? Попробуйте JWT Decoder.

Об инструменте Protobuf Decoder

Этот protobuf decoder читает бинарное сообщение Protocol Buffers прямо из его байтов, без файла .proto. Вставьте полезную нагрузку как hex или base64, и декодер пройдёт по сырому формату передачи: он читает каждый тег, чтобы восстановить номер поля и тип передачи, затем интерпретирует значение. Varint показываются как прочтения int64, uint64 и зигзаг; поля fixed64 и fixed32 раскрывают свои представления как целое, double и float; а поля с разделителем по длине сначала пробуются как вложенные сообщения, затем как текст UTF-8, затем как сырые байты hex. Результат отображается как дерево полей с отступами, а повторяющиеся поля сгруппированы под одним номером. Он создан для инженеров, отлаживающих трафик gRPC, перехваченные пакеты или непрозрачные блобы proto из логов. Всё работает в вашем браузере, поэтому вставленные байты декодируются локально и никогда не покидают устройство.

Возможности

Как использовать Protobuf Decoder

  1. Скопируйте вашу полезную нагрузку protobuf как строку hex или base64.
  2. Вставьте её в поле сообщения Protobuf.
  3. Оставьте формат на «Авто» или выберите Hex либо Base64, если определение неверно.
  4. Прочитайте декодированное дерево полей, разворачивая вложенные сообщения для изучения значений.

Пример

Ввод

08 96 01 12 07 74 65 73 74 69 6e 67

Результат

#1  varint   wire 0   150
#2  string   wire 2   "testing"

Поле 1 — это varint (150), а поле 2 — строка UTF-8 с разделителем по длине.

Частые ошибки и устранение неполадок

Часто задаваемые вопросы

Можно ли декодировать protobuf без файла .proto?
Да. Этот protobuf decoder читает сырой формат передачи, поэтому восстанавливает каждый номер поля, тип передачи и значение прямо из байтов. Без схемы он не может знать исходные имена полей или то, было ли число задумано как знаковое, беззнаковое или enum-значение, поэтому показывает правдоподобные интерпретации рядом.
Что означают типы передачи protobuf?
Каждый тег поля кодирует тип передачи: 0 — это varint (целые, булевы, enum), 1 — fixed64 (sfixed64, double), 2 — с разделителем по длине (строки, байты и вложенные сообщения), а 5 — fixed32 (sfixed32, float). Декодер помечает каждое поле его типом передачи, чтобы вы могли сопоставить его с исходным определением.
Вставлять protobuf как hex или base64?
Подходит и то, и другое. Оставьте переключатель на «Авто», и инструмент определит формат; чистый hex (пары hex-цифр, с необязательными пробелами, двоеточиями или префиксами 0x) читается как hex, а всё остальное трактуется как base64, включая URL-безопасный base64. Переключите вручную, если ваши данные неоднозначны.
Почему varint показан как несколько разных чисел?
Varint protobuf может представлять int64, uint64 или sint64 в зигзаг-кодировке, и формат передачи не записывает, что именно. Декодер печатает все из них, плюс булево прочтение для 0 и 1, чтобы вы могли выбрать интерпретацию, соответствующую вашей схеме.
Загружается ли куда-либо декодируемая полезная нагрузка?
Нет. Декодирование protobuf работает полностью в вашем браузере с помощью чистого JavaScript-парсера формата передачи, поэтому вставленные байты обрабатываются на вашем устройстве и никогда не отправляются на сервер.

Связанные инструменты

Все инструменты ArrayKit