工作需要,要對pcap檔案中的資料報進行過濾,只保留普通埠的tcp、udp資料報。結果如下圖
**如下:
#include #include #include #include #include #define ether_addr_len 6 /* mac位址長度(位元組) */
/*乙太網頭*/
struct sniff_ethernet
;/*ip頭*/ //假設沒有選項字段,長度20位元組
struct sniff_ip
;/*udp報頭*/
struct sniff_udp
;pcap_t *source_pcap_t=null;
pcap_dumper_t *des_pcap_dumper_t=null;
int exit_main()
if( null!=des_pcap_dumper_t )
exit(0);
}int main(int argc, char *argv)
; if( null==(source_pcap_t=pcap_open_offline(argv[1], errbuf)) )
//開啟儲存的pcap檔案
if( null==(des_pcap_dumper_t=pcap_dump_open(source_pcap_t,"./rescult.pcap")) )
//讀取資料報
struct pcap_pkthdr packet;
const u_char *pktstr;
while(1)
else
//ipv4資料報,選擇性寫入生成pcap檔案
else if( 0x0008==((struct sniff_ethernet*)(pktstr))->ether_type )
else if( 0x11==((struct sniff_ip*)(pktstr+14))->ip_p )
else
}else
}//非arp、非ipv4的其他協議資料報,寫入生成pcap檔案
else
} }
pcap_dump_close(des_pcap_dumper_t);
pcap_close(source_pcap_t);
return 0;
}
ove libpcap使用簡介
li bpcap是unix linux平台下的網路資料報捕獲函式包,大多數網路監控軟體都以它為基礎。這個庫的位置在 usr local lib下.在 usr local include下是他的標頭檔案pcap.h。要寫乙個使用libpcap庫函式的程式只需要在 中加上 i nclude 然後在編譯時...
libpcap使用入門
libpcap是unix linux平台下的網路資料報捕獲函式包,大多數網路監控軟體都以它為基礎。這個庫的位置在 usr local lib下.在 usr local include下是他的標頭檔案pcap.h。要寫乙個使用libpcap庫函式的程式只需要在 中加上 i nclude 然後在編譯時末...
使用libpcap庫的多執行緒問題
最近在系統裡遇到乙個程式,總會莫名其妙的segmentation fault,而且每次出現的問題都不相同。考慮到有多執行緒,可能會跟這個有關係。但是一直沒有找出到底 出的問題,這個程式使用libpcap的一些function來進行抓包分析,每個網絡卡對應乙個執行緒。function裡面沒有顯式的全域...