目錄
Libpcap開發(fā)集介紹libpcap是一個C語言庫,,libpcap的英文意思是 Packet Capture library,即數(shù)據(jù)包捕獲函數(shù)庫,,其功能是通過網(wǎng)卡抓取網(wǎng)絡(luò)以太網(wǎng)中的數(shù)據(jù)包,。這個庫為不同的平臺提供了一致的c函數(shù)編程接口,,在安裝了 libpcap 的平臺上,,以 libpcap 為接口寫的程序,、應(yīng)用,,能夠自由地跨平臺使用,。它支持多種操作系統(tǒng)。libpcap 結(jié)構(gòu)簡單,使用方便,;它提供了20多個api封裝函數(shù),,我們利用這些api函數(shù)即可完成本網(wǎng)絡(luò)探測器所需的網(wǎng)絡(luò)數(shù)據(jù)包監(jiān)聽功能,。 Libpcap開發(fā)庫的應(yīng)用
Libpcap開發(fā)庫使用說明基于pcap的嗅探器程序的總體架構(gòu),,其流程如下:
Libpcap庫主要函數(shù)說明
函數(shù)名稱:pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *ebuf)
函數(shù)名稱:pcap_t *pcap_open_offline(char *fname, char *ebuf)
函數(shù)名稱:pcap_dumper_t *pcap_dump_open(pcap_t *p, char *fname)
函數(shù)名稱:char *pcap_lookupdev(char *errbuf)
函數(shù)名稱:int pcap_lookupnet(char *device, bpf_u_int32 *netp,bpf_u_int32 *maskp, char *errbuf)
函數(shù)名稱:int pcap_dispatch(pcap_t *p, int cnt,pcap_handler callback, u_char *user)
函數(shù)名稱:int pcap_loop(pcap_t *p, int cnt,pcap_handler callback, u_char *user)
函數(shù)名稱:void pcap_dump(u_char *user, struct pcap_pkthdr *h,u_char *sp)
函數(shù)名稱:int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str, int optimize, bpf_u_int32 netmask)
函數(shù)名稱:int pcap_setfilter(pcap_t *p, struct bpf_program *fp)
函數(shù)名稱:u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)
函數(shù)名稱:int pcap_datalink(pcap_t *p)
函數(shù)名稱:int pcap_snapshot(pcap_t *p)
函數(shù)名稱:int pcap_is_swapped(pcap_t *p)
函數(shù)名稱:int pcap_major_version(pcap_t *p)
函數(shù)名稱:int pcap_minor_version(pcap_t *p)
函數(shù)名稱:int pcap_stats(pcap_t *p, struct pcap_stat *ps)
函數(shù)名稱:FILE *pcap_file(pcap_t *p)
函數(shù)名稱:int pcap_fileno(pcap_t *p)
函數(shù)名稱:void pcap_perror(pcap_t *p, char *prefix)
函數(shù)名稱:char *pcap_geterr(pcap_t *p)
函數(shù)名稱:char *pcap_strerror(int error)
函數(shù)名稱:void pcap_close(pcap_t *p)
函數(shù)名稱:void pcap_dump_close(pcap_dumper_t *p) Libpcap開發(fā)庫安裝
在Turbolinux系列產(chǎn)品中,,libpcap已經(jīng)是基本庫之一,不必再進行下載配置,。 Libpcap開發(fā)庫使用舉例下面是一段數(shù)據(jù)包捕獲程序test.c,,每捕獲一個數(shù)據(jù)包時打印信息“A packet is captured!”。 #include <stdio.h> #include <pcap.h> int main (int argc, char* argv[]) { /*the printer running when packet have captured*/ void printer() { printf("A packet is captured!\n"); return; } /*the error code buf of libpcap*/ char ebuf[PCAP_ERRBUF_SIZE]; /*create capture handler of libpcap*/ pcap_t *pd = pcap_open_live ("eth0", 68, 0, 1000, ebuf); /*start the loop of capture, loop 5 times, enter printer when capted*/ pcap_loop (pd, 5, printer, NULL); pcap_close (pd); return 0; }
A packet is captured! A packet is captured! A packet is captured! A packet is captured! A packet is captured! |
|