Декодер / енкодер Protobuf
Protobuf, закодований у Base64
Декодовані поля (2)
| Поле № | Тип wire | Значення |
|---|---|---|
| 1 | Varint(0) | 150 |
| 2 | Length-delimited(2) | testing |
Технічні деталі
Як працює декодер Protobuf
Що робить інструмент
Декодер Protobuf розбирає сирі двійкові дані Protocol Buffer без потреби у файлі схеми .proto, показуючи номери полів, типи та значення у wire-format. Також він підтримує кодування JSON назад у двійковий protobuf, коли ви надаєте визначення .proto. Це дає змогу інспектувати непрозорі protobuf-пейлоади, перехоплені з мережевого трафіку або збережені в базах даних, без доступу до оригінальної схеми.
Поширені сценарії використання для розробників
Backend-розробники використовують декодування protobuf без схеми, щоб реверс-інженерити недокументовані gRPC API, налагоджувати серіалізовані повідомлення в топіках Kafka або інспектувати двійкові пейлоади в колонках бази даних. Дослідники безпеки аналізують мережевий трафік, закодований protobuf, під час тестування на проникнення. Режим кодування допомагає розробникам перевірити, що їхні визначення .proto дають очікуваний двійковий вихід перед розгортанням змін схеми у продакшн-сервісах.
Формати даних, типи або варіанти
Protocol Buffers використовують компактний wire format із п’ятьма wire-типами: varint (int32, int64, bool, enum), 64-бітний fixed (double, fixed64), length-delimited (string, bytes, вбудовані повідомлення, упаковані повторювані поля), 32-бітний fixed (float, fixed32) та застарілі типи груп start/end. Без схеми декодер не може відрізнити рядок від вбудованого повідомлення (обидва є length-delimited), тому він пробує обидві інтерпретації та показує найімовірніший розбір.
Поширені помилки та крайові випадки
Декодування без схеми за своєю природою неоднозначне — varint може бути знаковим int32 (zigzag), беззнаковим uint32 або булевим значенням, а поля з обмеженням за довжиною можуть бути рядками, байтами або вкладеними повідомленнями. Назви полів втрачаються під час бінарного кодування й відображаються лише як числові теги полів. Упаковані повторювані поля виглядають так само, як одне поле bytes, без контексту схеми. Завжди звіряйте декодований результат із будь-якою доступною документацією, щоб усунути неоднозначності.
Коли використовувати цей інструмент, а коли — код
Використовуйте цей браузерний інструмент для швидкого перегляду перехоплених protobuf-пейлоадів, коли у вас немає файлу .proto або ви хочете перевірити кодування без налаштування інструментарію збірки. Для продакшн-систем використовуйте protoc із належними файлами схеми, згенерованим кодом для конкретної мови та сервісами gRPC reflection, які забезпечують повну типобезпеку, пряму сумісність і інтеграцію з системою збірки вашого застосунку.