关于libpcap的几个疑问,该如何解决

关于libpcap的几个疑问,该如何解决

关于libpcap的几个疑问
int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32 netmask)用来过滤包,str是要过滤的字符串,这个字符串是不是可以随便设置的?是从数据包的内容中进行过滤吗?那网络上有多种协议的数据包,又是如何取得各数据包的内容的?我猜想要对捕获来的数据包进行协议转换吧?那又回到第一个问题,怎么过滤的?


第三个参数char *str是过滤串表达式,语法还是相对复杂的,要查一下tcpdump指南,这个网址上也有介绍:
http://blog.csdn.net/zhaoyc_59211/archive/2007/08/30/1766081.aspx

比如
pszfilter = "ether src 00:90:41:c0:c1:c2 || ether dst 00:90:41:c0:c1:c3";
pcap_compile(fp, &fcode, pszfilter, 1, netmask);

上面的意思就是pcap过滤留下 目的mac为00-90-41-c0-c1-c2,源mac为00-90-41-c0-c1-c3

关于libpcap的几个疑问,该如何解决

相关文章:

你感兴趣的文章:

标签云: