资源描述:
《pcap过滤规则格式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、函数名称:intpcap_compile(pcap_t*p,structbpf_program*fp,char*str,intoptimize,bpf_u_int32netmask)函数功能:该函数用于将str指定的规则整合到fp过滤程序中去,并生成过滤程序入口地址,用于过滤选择期望的数据报。参数说明:pcap_t*p:pcap_open_live返回的数据报捕获的指针;structbpf_program*fp:指向一个子函数用于过滤,在pcap_compile()函数中被赋值;char*str:该字符串规定过滤规则;intoptimiz
2、e:规定了在结果代码上的选择是否被执行;bpf_u_int32netmask:该网卡的子网掩码,可以通过pcap_lookupnet()获取;返回值:如果成功执行,返回0,否则返回-1;过滤规则由一个或多个原语(primitive)组成,如果为””则表示不进行任何过滤.原语通常由一个标识(id,名称或数字),和标识前面的一个或多个修饰子(qualifier)组成.修饰子有三种不同的类型:type类型修饰子指出标识名称或标识数字代表什么类型的东西.能够使用的类型有host,net和port.例如,`hostfoo',`net128.3',`
3、port20'.假如不指定类型修饰子,就使用缺省的host.dir方向修饰子指出相对于标识的传输方向(数据是传入还是传出标识).能够使用的方向有src,dst,srcordst和srcanddst.例如,`srcfoo',`dstnet128.3',`srcordstportftp-data'.假如不指定方向修饰子,就使用缺省的srcordst.对于`null'链路层(就是说象slip之类的点到点协议),用inbound和outbound修饰子指定所需的传输方向.proto协议修饰子需要匹配指定的协议.能够使用的协议有:ether,fdd
4、i,ip,arp,rarp,decnet,lat,sca,moprc,mopdl,tcp和udp.例如,`ethersrcfoo',`arpnet128.3',`tcpport21'.假如不指定协议修饰子,就使用任何符合类型的协议.例如,`srcfoo'指`(ip或arp或rarp)srcfoo'(注意后者不符合语法),`netbar'指`(ip或arp或rarp)netbar',`port53'指`(tcp或udp)port53'.[`fddi'实际上是`ether'的别名;分析器把他们视为``用在指定网络接口上的数据链路层.''FDD
5、I报头包含类似于以太协议的源目地址,而且通常包含类似于以太协议的报文类型,因此您能够过滤FDDI域,就象分析以太协议相同.FDDI报头也包含其他域,但是您不能在过滤器表达式里显式描述.]作为上述的补充,有一些特别的`原语'关键字,他们不同于上面的模式:gateway,broadcast,less,greater和数学表达式.这些在后面有叙述.更复杂的过滤器表达式能够通过and,or和not连接原语来组建.例如,`hostfooandnotportftpandnotportftp-data'.为了少敲点键,能够忽略相同的修饰子.例如,`tc
6、pdstportftporftp-dataordomain'实际上就是`tcpdstportftportcpdstportftp-dataortcpdstportdomain'.允许的原语有:dsthosthost假如报文中IP的目的地址域是host,则逻辑为真.host既能够是地址,也能够是主机名.srchosthost假如报文中IP的源地址域是host,则逻辑为真.hosthost假如报文中IP的源地址域或目的地址域是host,则逻辑为真.上面任何的host表达式都能够加上ip,arp,或rarp关键字做前缀,就象:iphosthos
7、t他等价于:etherprotoipandhosthost假如host是拥有多个IP地址的主机名,他的每个地址都会被查验.etherdstehost假如报文的以太目的地址是ehost,则逻辑为真.Ehost既能够是名字(/etc/ethers里有),也能够是数字(有关数字格式另见ethers(3N)).ethersrcehost假如报文的以太源地址是ehost,则逻辑为真.etherhostehost假如报文的以太源地址或以太目的地址是ehost,则逻辑为真.gatewayhost假如报文把host当做网关,则逻辑为真.也就是说,报文的
8、以太源或目的地址是host,但是IP的源目地址都不是host.host必须是个主机名,而且必须存在/etc/hosts和/etc/ethers中.(一个等价的表达式是etherhostehos