DevToys Web Pro iconDevToys Web ProБлог
Оцените нас:
Попробуйте расширение для браузера:

Декодер / энкодер Protobuf

Декодировано
Формат:

Protobuf в кодировке Base64

  • Декодированные поля (2)

  • Поле №Тип wireЗначение
    1Varint(0)150
    2Length-delimited(2)testing
    Технические детали

    Как работает декодер Protobuf

    Что делает инструмент

    Декодер Protobuf разбирает сырые бинарные данные Protocol Buffer без необходимости иметь файл схемы .proto, показывая номера полей wire-формата, типы и значения. Он также поддерживает кодирование JSON обратно в protobuf-бинарный формат, когда вы предоставляете определение .proto. Это позволяет инспектировать непрозрачные protobuf-пейлоады, захваченные из сетевого трафика или сохранённые в базах данных, без доступа к исходной схеме.

    Распространенные сценарии использования для разработчиков

    Бэкенд-разработчики используют бессхемное декодирование protobuf, чтобы реверс-инжинирить недокументированные gRPC API, отлаживать сериализованные сообщения в топиках Kafka или инспектировать бинарные пейлоады в столбцах базы данных. Исследователи безопасности анализируют protobuf-кодированный сетевой трафик во время тестирования на проникновение. Режим кодирования помогает разработчикам проверить, что их определения .proto дают ожидаемый бинарный вывод, прежде чем выкатывать изменения схемы в продакшн-сервисы.

    Форматы данных, типы или варианты

    Protocol Buffers используют компактный wire-формат с пятью wire-типами: varint (int32, int64, bool, enum), фиксированный 64-битный (double, fixed64), с разделением по длине (string, bytes, вложенные сообщения, упакованные повторяющиеся поля), фиксированный 32-битный (float, fixed32) и устаревшие типы групп start/end. Без схемы декодер не может отличить строку от вложенного сообщения (оба — length-delimited), поэтому он пробует обе интерпретации и показывает наиболее вероятный разбор.

    Распространенные ошибки и крайние случаи

    Декодирование без схемы по своей природе неоднозначно — varint может быть знаковым int32 (zigzag), беззнаковым uint32 или булевым значением, а поля с ограничением по длине могут быть строками, байтами или вложенными сообщениями. Имена полей теряются при бинарном кодировании и представлены только числовыми тегами полей. Упакованные повторяющиеся поля без контекста схемы выглядят так же, как одно поле bytes. Всегда сверяйте декодированный вывод с любой доступной документацией, чтобы устранить неоднозначности.

    Когда использовать этот инструмент, а когда — код

    Используйте этот инструмент в браузере для быстрой проверки перехваченных protobuf-пейлоадов, когда у вас нет файла .proto или вы хотите проверить кодирование без настройки цепочки сборки. Для продакшен-систем используйте protoc с корректными файлами схем, сгенерированным кодом для конкретного языка и сервисами gRPC reflection, которые обеспечивают полную типобезопасность, прямую совместимость и интеграцию с системой сборки вашего приложения.