winpcap을 사용하여 네트워크 트래픽을 캡처하고 있으며이 트래픽은 주로 직렬화 된 프로토콜 버퍼 교환으로 구성되어 있다는 사실을 알고 있습니다. 시스템에서 전송할 가능성이있는 모든 유형의 메시지를 알면 트래픽에서 해당 메시지를 어떻게 검색 할 수 있습니까?winpcap API를 통해 protobuf 메시지 읽기
0
A
답변
0
프로토콜 버퍼가 자체 설명이 아니기 때문에 약간의 어려움이 있습니다. 원시 바이트 스트림을 읽을 때 하나의 메시지가 끝나고 다른 메시지가 시작될 때를 결정하는 쉬운 방법이 없습니다. 그러나 약간의 노력으로 와이어 형식을 잘 이해하면 일부 데이터를 복구 할 수 있습니다.
프로토콜 버퍼 wire format은 기본적으로 일련의 키 - 값 쌍으로 구성됩니다. 각 키는 필드 번호와 와이어 유형 (함께 태그라고 함)을 나타내며 값은 해당 필드 번호와 관련된 실제 데이터입니다. 찾고있는 메시지를 알고 있다면 메시지 정의의 유형 및 필드 번호를 기반으로 볼 것으로 예상되는 태그를 검색하는 것으로 시작합니다. 태그를 계산하고 varint로 형식을 지정하는 방법을 알아 보려면 위 링크에서 설명서를 읽은 다음 원시 varint 바이트를 검색해야합니다. 일단 태그로 보이는 것을 발견하면 거기에서 메시지를 구문 분석하여 메시지가 끝나는 위치에 대한 지식을 추측해야합니다.