WinPcap过滤表达式语法

本文介绍了WinPcap的过滤表达式语法,包括关键词、协议类型和方向限定,提供了源代码和程序下载链接,帮助读者理解和创建自定义的网络数据包过滤条件。
摘要由CSDN通过智能技术生成

自己写了一个WinPcap过滤表达式语法检测软件,使用了SharpPcap包(它是使用.net对WinPcap进行了封装,其中过滤表达式和WinPcap相同)。

程序下载地址为:http://download.csdn.net/source/526497

源代码下载地址为:http://download.csdn.net/source/526501

转了两篇文章,第一篇写的很短但是很清楚,第二篇写的比较长,但是很详细。

转自:http://hi.baidu.com/jsjzpt/blog/item/aac60e9b984c53b1c8eaf40a.html

在捕获网络数据时,常常只需捕获某些特定的数据,因此在编写sniffer类的软件时,需要加入数据过滤的功能。Winpcap是sniffer软件最常用的开发库之一,在Winpcap中通过编辑过滤表达式来设置过滤条件。下面就以Winpcap开发库为例,介绍数据过滤功能的实现。

Winpcap过滤表达式采用tcpdump的语法,是一个ASCII字符串形式的高层的布尔表达式。表达式由用户(或程序员)编辑,由pcap_compile()编译成内核级的代码,编译后pcap_setfilter()将其应用到某个已打开的网络捕获设备(网卡)上。每一个来自网络的数据包都会被检查,所有的符合要求的数据包(即与过滤条件比较后,布尔表达式为真的包)将会被Winpcap堆存。

一个数据包的关键属性包括协议(如IP)、发送和接收方(如源和目的IP地址)等,这些信息都可以在PDU头部找到。Winpcap通过读取PDU头部相应字段,并结合过滤条件完成过滤操作。

过滤表达式的基本组成元素为关键词,一个表达式由一个或多个关键词组成,关键词之间通过and、or和not连接。关键词主要有两类:

第一类 声明数据包源或目的地的关键词。关键词hostnetport分别指明依据收、发方IP地址(或主机名)、网络地址和端口号进行判断,若未指定,则默认为host;关键词前加上修饰词dst、srcdst or src 指明捕获特定方向的数据,若未指定,则默认为dst or src

如“dst host 210.31.234.254”,“port 80”,“src 210.31.234.13”。

第二类 声明数据包协议类型的关键词。关键词etherfdditripip6、arp、rarp、tcp和udp分别指明数据链路层、网络层和传输层所用协议类型。

IP分组类型的ip proto等。如“ether proto /arp”、“ip proto /tcp”。

 

转自:http://blog.csdn.net/casale/archive/2006/05/29/760421.aspx 作者:陈伯仁

 

注:该文档从tcpdump的主页上获得,在www.tcpdump.org能够找到它的原始版本。

Wpcap过滤器基于已公开的断言语法。一个过滤器是一串包括过滤表达式的ASCII字符串。Pcap_compile()接受表达式并利用一个程序将之转化为核心层的包过滤器。

表达式选择将要接受的数据包。若未给出表达式,网络上的所有数据包将被核心层的过滤驱动所接受。否则,只有满足表达式为”ture”的数据包会被接受。

表达式可以包括一个或多个原子式。原子式通常由一个带前置限定词的id(名称或数字)所组成。有三种不同的前置限定词:

Type 限定词指定名称或数字所指向的类别。可能的类别有host、net和port。例如:’host foo’、’net 128.3’、’port 20’。若未指定类别限定词,默认为host。

Dir 限定词指定一个到和/或从id的特定的传输方向。可能的方向有src、dst、src or dst和src and dst。例如:’src foo’、’dst net 128.3’、’src or dst port ftp-data’。若没有该限定词,默认为src or dst。对于’null’链路层(例如像slip这种点对点的协议)inbound和outbound这两上限定词能够指定想要的方向。

Proto 限定词限定一个特殊的协议。可能的协议有:ether、fddi、tr、ip、ip6、arp、rarp、decnet、tcp和udp。例如:’ether src foo’、’arp net 128.3’、’tcp port 21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值