Packet debugging for non root account in linux
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);