libpcap使用¶
libpcap支持从网卡进行live捕获, 也支持报文文件的读写.
创建句柄¶
pcap_open_offline¶
#include <pcap/pcap.h>
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *pcap_open_offline(const char *fname, char *errbuf);
通过打开pcap文件来创建一个pcap_t读取句柄.
pcap_dump_open¶
#include <pcap/pcap.h>
pcap_dumper_t *pcap_dump_open(pcap_t *p, const char *fname);
pcap_dumper_t *pcap_dump_open_append(pcap_t *p, const char *fname);
pcap_dumper_t *pcap_dump_fopen(pcap_t *p, FILE *fp);
创建pcap文件写入(dump)句柄.
关闭句柄¶
读取packet¶
pcap_open/pcap_dispatch¶
#include <pcap/pcap.h>
typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes);
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
int pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
设置选项¶
pcap_set_promisc¶
#include <pcap/pcap.h>
int pcap_set_promisc(pcap_t *p, int promisc);
设置混杂模式, 此时句柄必须是没有被激活的.