如同Tcpdump一样,Ethereal支持非常丰富的过滤器。过滤器分为两类,一类是抓包过滤器(capture
filter),当网络流量很大时,可以非常有效地过滤噪音数据;另外一类是显示过滤器(display
filter), 可以从你抓到的所有数据包中过滤噪音数据。事实上,由于好的过滤器需要非常好的网络知识,所以除非非常需要,一半可以不作过滤;我自己比较喜欢在抓取的时候不设过滤器,然后利用简单的display
filter。建议初学者避免使用过滤器。顺便说一句,ethereal的capture
filter和display
filter语法不相同,capture
filter的语法可以参照tcpdump的语法。
事实上,Ethereal本身并不能抓包,它只能用来解析数据包;要抓取数据包,它需要借助于PCap。Pcap在windows下面的实现称作Winpcap,现在最高的稳定版本是3.0。在Linux下面,Pcap一般都已经被默认安装;
常用的Capture
Filter
常用的Display
Filter
1. 操作符:
eq, ==
Equal
ne, !=
Not Equal
gt, > Greater Than
lt, < Less Than
ge, >= Greater than or Equal to
le,
<= Less than or Equal to
举例:
Udp.port == 10002
sip.Method
== INVITE
2.
搜索操作
contains
协议,包,包含指定内容
matches
Perl标准表达式
举例:
sip contains INVITE 这个将列出所有SIP包中含有INVITE字符的包;
wsp.user_agent matches "(?i)cldc"
查找wsp.user_agent中含有cldc字符的包,并且不区分大小写。(?option)这个表达式是PERL表达式,不是所有的ethereal版本都支持的,使用前检查自己的版本是否包含“with the PCRE
library”;
3.常见关键词
ip
eth
udp
tcp
http
举例:
.pkt_len
> 100 包的数据长度大于100的包
ip.src == 192.168.214.12 源地址是192.168.214.12
ip.dst ==
www.yahoo.com目标地址是www.yahoo.com的包
ip.addr == 129.111.0.0/16 地址范围在129.111.*.*子网的包,类似于capture filter的host
http.request.method == "HEAD" 在HTTP包中查找request命令含HEAD的包
http.request.method == "\x48EAD"
和上面的一样,只是使用\x48来表示‘H’
4. 数组操作
5.逻辑操作
and, && Logical AND
or,
|| Logical OR
not,
! Logical NOT
这个我就不多举例啦,应该都理解的J
6.位操作
bitwise_and,
& Bitwise
AND
举例:
tcp.flags & 0x02 过滤所有的TCP SYN包