Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103628
  • 博文数量: 17
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-07 12:58
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(5)

2008年(11)

我的朋友

分类: 系统运维

2008-07-28 15:52:15

如同Tcpdump一样Ethereal,支持非常丰富的过滤器。

过滤器分为两类,一类是抓包过滤器(capture filter),当网络流量很大时,可以非常有效地过滤噪音数据;另外一类是显示过滤器(display filter), 可以从你抓到的所有数据包中过滤噪音数据。事实上,由于好的过滤器需要非常好的网络知识,所以除非非常需要,一半可以不作过滤;

顺便说一句,etherealcapture filterdisplay filter语法不相同,capture filter的语法可以参照tcpdump的语法。

 

事实上,Ethereal本身并不能抓包,它只能用来解析数据包;要抓取数据包,它需要借助于PCapPcapwindows下面的实现称作Winpcap.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.常见关键词

frame

ip

eth

udp

tcp

http

举例:

frame .pkt_len > 100 包的数据长度大于100的包

ip.src == 192.168.214.12 源地址是192.168.214.12

ip.dst == 目标地址是的包

ip.addr == 129.111.0.0/16 地址范围在129.111.*.*子网的包,类似于capture filterhost

http.request.method == "HEAD"HTTP包中查找request命令含HEAD的包

http.request.method == "\x48EAD" 和上面的一样,只是使用\x48来表示‘H

4. 数组操作

  [i:j]    i = 起点, j = 长度

  [i-j]    i = 起点, j = 末点, 包含.
  [i]      i = 起点, 长度1

  [:j]     起点等于 0, 长度= j


  [i:]     起点 = i, 至最后
还是直接举例吧:

eth.src[0:3] == 00:00:83  以太网地址的前3位

http.content_type[0:4] == "text"   content_type的前四位

frame[-4:4] == 0.1.2.3    起点为负表示终点-4 长度4位,就是末四位啦,怎么样够灵活吧~

5.逻辑操作

and, &&   Logical AND

or,  ||   Logical OR

not, !    Logical NOT

 

6.位操作

bitwise_and, &      Bitwise AND

举例:

tcp.flags & 0x02           过滤所有的TCP SYN

 

更多的关于filter的解释还是看帮助吧:ethereal-filter.html

至于CaptureFilter我就不多说啦,可以到linux下面去man tcpdump

 

需要说明的是,Ethereal是基于图形界面的,所以如果你是通过SSH或者Telnet使用Unix工作站,你可能会感觉麻烦。而如果你打算使用Tcpdump,只要你打开一下tcpdump的手册页,你肯定就会望而却步了;更糟糕的是,Tcpdump的手册页只是提供了最基本的帮助。我常用的一个方法是,在远程终端运行tcpdump,加以最少的参数。比如: tcpdump -i eth0 -s 1500 -w a.dmp 这个语句机会可以在任何情况下使用。简单解释一下,-i eth0是在eth0接口上监听, -s 1500是一个很重要的参数,它指抓取的数据包的前1500个字节,否则你可能只能看到数据包的前68个字节,因为tcpdump的默认抓取长度是68,-w a.dmp是表示把抓取的数据写入a.dmp中。抓取介绍后,CtlC,你可以看到a.dmp已经生成。然后用sftp传到本机使用Ethereal解析。

过滤规则:

一、IP过滤:ip.addr==192.168.100.25 或者 !(192.168.100.25)

IP过滤有ip.src==192.168.100.25,表示源地址为192.168.100.25

ip.dst==192.168.100.25,表示目标地址为192.168.100.25

二、端口过滤:tcp.port==80

三、协议过滤:arp

四、包长度过滤:udp.length=30

五、连接符 and / or

六、表达式:!(arp.src==192.168.1.1) and !(arp.dst.proto_ipv4==192.168.1.243)

阅读(921) | 评论(0) | 转发(0) |
0

上一篇:凡大觉悟者

下一篇:SIP包的分析

给主人留下些什么吧!~~