2012-09-08 10 views
6

データを書き込むのに使用されるタイプについて知らなくても、PBフォーマットで書き込まれたデータをダンプ(表示)することはできますか?ダンププロトコルバッファーデータ/応答

Iはhttps://stackoverflow.com/a/10253515/883738

その簡単に見つけた、ワイヤ上で、protobufsキーが.protoスキーマ内のフィールドに割り当てられたフィールド番号での3タプルとして符号化されます。タイプはの1つです。これは、3タプルの値をデコードするのに十分な情報を含んでいます。つまり、値の長さを示します。

最終的な目標は、PB形式で送受信されているものを見るためにFiddler2の拡張機能を書き込むことです。

答えて

6

iire用のwiresharkツールがあります。

ここでの問題は、あなたがスキーマを知らない場合いるProtobuf形式があいまいであるということである。

  • 固定-32は、フロートまたは符号付きまたは符号なし整数(32ビット)可能性があり
  • 固定64は、ダブルまたは符号付きまたは符号なし整数(64ビット)になります
  • varintは符号付きまたは符号なし整数、ジグザグ整数またはブール型になります
  • 文字列はutf- 8文字列、プリミティブのパックされた配列、サブメッセージ、または生のバイト

実際、曖昧ではないトークンは開始/終了グループだけですが、半減詞です。

だから:それは一種のなんとかですが、あなたは、同じデータの複数の解釈を提示する必要があるかもしれません

することもできますのみリストフィールド番号:バイナリ形式には、メンバーの名前はありません

+0

Wiresharkツールは素晴らしいですが、HTTPSでうまく動作しません。複数の表現が良い考えです。 ライブラリを使用することは可能ですか? –

+0

@Alexああ、ProtoReaderを簡単に使うことができるのは確かです。ただreader.ReadFieldHeader()> 0の間は基本的にループしますが、何かが浮動小数点かどうかを示すことはできません。などUtf-8あなたはおそらくそれを試して、それが動作するかどうかを見ることによって行うことができます... –

+0

ありがとう!もう1つの質問。 PBデータは0から始めることができますか? –