使用libpcap庫過濾pcap檔案中的資料報

2021-08-09 01:34:41 字數 1255 閱讀 4879

工作需要,要對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裡面沒有顯式的全域...