4
저는 패킷 수집기를 구현하고 있지만 패킷 손실이 있습니다.libpcap은 특정 IP에서 일부 패킷을 버립니다.
내 바이너리는 특정 IP 영역에서 대부분의 패킷을 가져올 수 있습니다. (예 : 100.101.1.1, 100.101.2.1). 그러나 특정 IP 영역에서는 패킷을 가져올 수 없습니다. (예 200.201.1.1, 200.201.2.1)
그 시점에서 tcpdump는 모든 IP 영역에서 패킷을 가져올 수 있습니다.
struct bpf_program fp;
pcap_t *pcd;
char errbuf[PCAP_ERRBUF_SIZE];
bpf_u_int32 netp;
char port[16], dev[16];
......
pcd = pcap_open_live(dev, BUFSIZ, PROMISCUOUS, -1, errbuf);
pcap_compile(pcd, &fp, port, 0, netp);
pcap_setfilter(pcd, &fp);
while(1){
packet = pcap_next(pcd, &hdr);
}
나를 위해 어떤 아이디어가 있습니까 : 내 구현에서
내 PCAP의 코드는 다음과 같다? 당신이, 당신이 매개 변수 dev에 대해 동일한 인터페이스 이름을 사용하고 같은 코드의 다음 줄은 모든 권리만큼 고려해야 할 tcpdump를를 사용하여 인터페이스의 모든 IP 패킷을 얻을 수 있음을 언급 한 이후
'ifconfig'의 출력을 추가하고 tcpdump를 실행하는 데 사용하는 명령 줄을 추가하십시오. 찾고있는 IP가 현재 열려있는 인터페이스에 있지 않을 수 있습니까? –
개발자는 무엇입니까? dev 대신 null 또는 any를 전달하면 모든 인터페이스에서 패킷을 캡처 할 수 있어야합니다. – Magn3s1um