C에서 pcap 파일을 구문 분석하려고합니다. libpcap을 사용하고 싶지 않습니다. 하지만 웬일인지, 나는 할 수 없다. 내가 어떻게 이럴 수 있니?코드의 일부 오류 - libpcap
fseek(f,24,0);
while(count<20)//reading 20 packets
{
fread(header,sizeof(struct pcap_pkthdr),1,f);
//after this I'm printing values header fields
fseek(f,ntohl(header->caplen),1);
count++;
}
출력은 libpcap의 동일하지 않습니다 : 여기 내 시도이다. 그런
이 pcap 파일의 마법 번호를 확인했습니다. 0xa1b2c3d4가 나왔습니다. 그래서 당신의 설명에서 바이트 스왑을 할 필요가 없다는 것을 의미합니다. 그러나 첫 번째 패킷의 caplen 값을 인쇄 할 때 snaplen은 0xffff 인 반면 0x1050d300 인 것으로 나타납니다. 이것이 어떻게 가능한지? 여기서 내가 뭘 잘못하고 있니? – user1192671
* 해당 * 파일의 경우 바이트 스왑 할 필요가 없습니다. 다른 파일의 경우 사용자가해야 할 수도 있습니다. caplen에 관해서, 당신은 * struct * struct pcap_pkthdr보다는 내 예제에 따라'struct pcap_sf_pkthdr'를 읽을 코드를 수정 했습니까? 그렇지 않은 경우 그렇게하십시오. –
예, 내 잘못! 작동했습니다! – user1192671