오프라인 pcap 파일의 경우 C/C++를 사용하여 TCP 헤더의 옵션 필드를 추출하는 방법. 헤더 구조 내에 옵션 필드를 포함 시키려고했지만 Wireshark와 결과를 비교할 때 일관된 결과를 제공하지 않습니다. TCP 헤더 구조를 통해 액세스 할 때 임의의 바이트가 누락되는 것 같습니다. 도와주세요.C/C++을 사용하여 pcap 파일의 TCP 헤더에서 옵션 필드를 추출하는 방법
0
A
답변
0
파일을 직접 읽는 대신 pcap_open_offline
또는 pcap_fopen_offline
을 libpcap
에서 사용하십시오. 이렇게하면 저장 파일을 읽고 필터를 제공 할 수 있습니다. 의사 코드는 (당신이 오류 처리를 추가해야합니다) 다음과 같이 진행됩니다
char *fname = "/path/to/my/file";
const u_char *packet;
pcap_t *handle;
handle = pcap_open_offline (fname, errbuf);
while (packet = pcap_next(handle,&header))
{
char *data = (char *) packet;
...
}
pcap_close (handle);
혹시 당신은 이미 libpcap
를 사용하는 경우, 당신은 코드를 게시해야합니다. IP 헤더를 안정적으로 찾으려면 이더넷 유형 (vs ETHER_TYPE_8021Q
)을 확인한 다음 TCP 헤더 (IP 헤더의 길이가 다를 수 있음)를 찾아 TCP 헤더에 대한 포인터를 얻으십시오 .