2013-07-17 6 views
0

libpcap을 사용하여 패킷을 캡처하는 응용 프로그램을 작성했습니다. 그러나 응용 프로그램은 몇 패킷 만 캡처 할 수 있으며 트래픽은 약 kbps입니다. 그러나 tcpdump가 열리면 캡쳐 된 트래픽은 10Mbps 이상이 될 것입니다. tcpdump가 닫히면 캡처 한 트래픽이 다시 몇 kbps로 떨어졌습니다.libpcap을 사용하는 응용 프로그램은 tcpdump가 열렸을 때만 모든 패킷을 캡처하거나 해결할 방법이 몇 개 밖에 없으므로 어떻게 해결합니까? 감사합니다.

누구나 알 수 있습니까? 고맙습니다.

+0

코드는 어디에 있습니까? –

+0

죄송합니다. 코드가이 컴퓨터에 없습니다. pcap_loop을 사용하여 tcpdump와 같은 패킷을 캡처합니다. – happy

답변

0

pcap_open_live()을 호출하는 경우 'promisc'인수로 0을 전달할 수 있습니다. pcap_create()pcap_activate()을 호출하는 경우 해당 호출간에 을 호출하지 않았거나 'promisc'인수 0을 전달하는 것입니다.

즉, 무차별 모드를 켜지 않을 것입니다. 따라서 컴퓨터는 네트워크상의 다른 트래픽이 아닌 컴퓨터로 들어오고 나가는 트래픽 만 캡처합니다. Tcpdump는 기본적으로 무차별 모드를 켭니다. 따라서 실행중인 동안 캡처중인 어댑터 (tcpdump가 캡처하는 어댑터와 동일한 어댑터 일 수 있음)는 무차별 모드로 표시됩니다. 네트워크상의 다른 트래픽.

+0

답장을 보내 주셔서 감사합니다. pcap_open_live를 사용하지만, "promisc"인수로 1을 전달합니다. – happy

+0

그래서 세 번째 인자가 1이되도록'pcap_open_live ({adapter}, 65535, 1, 1000, errbuf)'와 같은 것을하고 계신가요? –

+0

예, 세 번째 인수는 1입니다. – happy