From live network interface

실제 interface로부터 pcap 핸들을 얻는다(root required).

pcap_t* handle = pcap_open_live("wlan0", BUFSIZ, 1, 1000, errbuf);


From existing pcap file

이미 생성된 pcap file로부터 pcap 핸들을 얻는다(root not required).

pcap_t* handle = pcap_open_offline("test.pcap", errbuf);

물론 이전에 pcap file을 생성해 놓아야 한다.

sudo tcpdump -i wlan0 -w "test.pcap" "tcp port 80"


Using pipe in command line

stdin으로부터 pcap 핸들을 얻는다(root not required).

pcap_t* handle = pcap_fopen_offline(stdin, errbuf);

다음과 같이 command line에서 pipe를 이용해서 실행할 수 있다.

sudo tcpdump -i wlan0 -U -w - "tcp port 80" | ./pcap-test


Using internal pipe in stand-alone process

프로그램 내부에서 pipe을 생성하여 확득힌 file handle로부터 pcap 핸들을 얻는다(root not required). IDE상에서 디버깅도 가능하다.

FILE* fp = popen("echo mypw | sudo -S tcpdump -U -i wlan0 -w - \"tcp port 80\"", "r");
pcap_t* handle = pcap_fopen_offline(fp, errbuf);


Youtube

https://youtu.be/W8vywNlAauA