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 из логов. Всё работает в вашем браузере, поэтому вставленные байты декодируются локально и никогда не покидают устройство.
Возможности
- Декодирует любое сообщение Protocol Buffers из сырых байтов без схемы .proto
- Принимает ввод в hex или base64 с автоопределением и ручным переключателем формата
- Читает типы передачи varint, fixed64, с разделителем по длине и fixed32 из тега
- Показывает varint как int64, uint64, знаковый зигзаг и булевы интерпретации
- Отображает поля fixed64/fixed32 как целое, double и float плюс сырые байты
- Рекурсивно декодирует вложенные сообщения и откатывается к строкам UTF-8 или байтам hex
- Группирует повторяющиеся поля под одним номером поля в дереве с отступами
- Сообщает понятную ошибку для усечённого, повреждённого или не-protobuf ввода
Как использовать Protobuf Decoder
- Скопируйте вашу полезную нагрузку protobuf как строку hex или base64.
- Вставьте её в поле сообщения Protobuf.
- Оставьте формат на «Авто» или выберите Hex либо Base64, если определение неверно.
- Прочитайте декодированное дерево полей, разворачивая вложенные сообщения для изучения значений.
Пример
Ввод
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 с разделителем по длине.
Частые ошибки и устранение неполадок
- Декодер показывает «Input is not valid hex» или «Input is not valid base64». — Переключите формат под ваши данные или удалите лишние символы; hex должен быть парами 0-9a-f, а base64 — использовать стандартный или URL-безопасный алфавит.
- Поле, которое должно быть строкой, отображается как вложенное сообщение или сырой hex. — Без файла .proto декодер угадывает по байтам; поля с разделителем по длине неоднозначны, поэтому вложенное сообщение, случайно похожее на текст, или наоборот, может быть прочитано неверно.
- Декодирование завершается ошибкой «Length-delimited field runs past the end of the input». — Полезная нагрузка усечена или на самом деле не является protobuf. Заново перехватите полное сообщение и убедитесь, что скопировали каждый байт, включая завершающие.
- Типы передачи группы сообщаются как неподдерживаемые. — Типы передачи 3 и 4 (start-group/end-group) устарели в protobuf и редко выдаются; перекодируйте сообщение с полями proto2/proto3 вместо групп.
Часто задаваемые вопросы
- Можно ли декодировать 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