2012-09-08 3 views
6

데이터를 쓰는 데 사용 된 유형에 대한 지식없이 PB 형식으로 작성된 데이터를 덤프 (보기) 할 수 있습니까?덤프 프로토콜 버퍼 데이터/응답

나는

간단하게는, 와이어에 protobufs는 키가 .proto 스키마의 필드에 할당 된 필드 번호의 3 튜플로 인코딩되는 것을 https://stackoverflow.com/a/10253515/883738을 발견했습니다. 유형은 다음 중 하나입니다. 여기에는 3 개 튜플의 값을 디코딩 할 수있는 충분한 정보가 들어 있습니다. 즉, 값의 길이를 알려줍니다.

내 최종 목표는 PB 형식으로 전송/수신되는 것을 보려면 Fiddler2 확장을 작성하는 것입니다.

답변

6

iire 용 wireshark 도구가 있습니다.

문제는 여기에 스키마 모르는 경우 protobuf 형식이 모호하다는 것이다 : 고정 (32)가 플로트 또는 서명 또는 부호없는 정수 (32 비트)

    • 을 고정 64는 double 또는 부호가 있거나 부호없는 정수 (64 비트) 일 수 있습니다.
    • varint는 부호가 있거나 부호가없는 정수, 지그재그 정수 또는 부울이 될 수 있습니다.
    • 문자열은 utf- 8 문자열, 프리미티브 팩 된 배열, 하위 메시지 또는 원시 바이트

    실제로 유일한 모호한 토큰은 시작/끝 그룹이며 세미 준 비입니다!

    그래서 : 그것은 일종의 행할 수 있지만 동일한 데이터의 여러 해석을 제시해야 할 수도 있습니다

    할 수도 있습니다 만 목록 필드 번호 : 바이너리 형식의 일원으로-이름이 없습니다

  • +0

    Wireshark 도구는 정말 멋지지만 HTTPS에서는 잘 작동하지 않습니다. 여러 가지 표현이 좋습니다. 그럼 라이브러리를 사용할 수 있습니까? –

    +0

    @Alex 오, 당신은 ProtoReader를 충분히 쉽게 사용할 수있을 것입니다. 그냥 기본적으로 loop.readFieldHeader()> 0 동안 반복하지만 무언가가 float인지 또는 signed int인지 unsigned int인지 알 수 없습니다. , 등 Utf - 8 당신은 아마 그것을 시도하고 그것이 작동 하는지를 볼 수 있습니다 ... –

    +0

    고마워! 한 가지 더 묻습니다. PB 데이터를 0으로 시작할 수 있습니까? –