Протокол дампа-буферы данных / ответа

можно ли сбрасывать (просматривать) данные, записанные в формате PB, без каких-либо знаний о типах, используемых для записи этих данных?

Я нашел https://stackoverflow.com/a/10253515/883738 это

кратко, на проводе протобуфы кодируются как 3-кортежи, где ключ - это номер поля, присвоенный полю в поле .прото схемы. Тип один из них . Он содержит достаточно информации для декодирования значения 3-кортежа, а именно вы как долго значение.

моя конечная цель-написать расширение для Fiddler2, чтобы увидеть, что отправляется / принимается в формате PB.

2 ответов


для этого есть инструмент wireshark, iirc.

проблема здесь в том, что формат protobuf неоднозначен, если вы не знаете схему:

  • фиксированным-32 может быть float или целое число со знаком или без знака (32 бит)
  • фиксированный-64 может быть двойным или целым числом со знаком или без знака (64 бит)
  • varint может быть целым числом со знаком или без знака, целым числом зигзага или булевым
  • строка может быть строкой utf-8, упакованной массив примитивов, суб-сообщение или необработанные байты

фактически, единственными однозначными токенами являются start / end group, и они являются полу-устаревшими!

Так вот: это вроде выполнимо, но вам может потребоваться представить несколько интерпретаций одних и тех же данных

вы также можете только перечислить номера полей: в двоичном формате нет имен членов


здесь есть реализация Fiddler PB (не использовали ее):https://github.com/SecurityInnovation/ProtoMiddler