首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-03-01 
关于libpcap的几个疑问int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, b

关于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

热点排行