Протокол дампа-буферы данных / ответа
можно ли сбрасывать (просматривать) данные, записанные в формате 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