安大
分类:
2012-06-18 15:17:33
原文地址:抓包工具Ethereal的基本使用 作者:apollochang
这是网上热心人写的教程,我实践了一下,很简单,不过基本的工作是够用了,我暂且整理整理。
完全可以按照步骤进行基本的抓包。
1. 使用前参数设定——capture 选项设置
Interface: 指定在哪个接口(网卡)上抓包。一般情况下都是单网卡,使用缺省。
Limit each packet: 限制每个包的大小,缺省情况不限制
Capture packets in promiscuous mode:是否打开混杂模式。如果打开,抓取所有的数据包。一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。
Filter: 过滤器。只抓取满足过滤规则的包(暂时略过,在主界面上进行,比较方便)
File: 如果需要将抓到的包写到文件中,在这里输入文件名称。
use ring buffer: 是否使用循环缓冲。缺省情况下不使用,即一直抓包。注意,循环缓冲只有在写文件的时候才有效。如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷
其他的项选择缺省的就可以了
2. 使用抓包
2.1直接使用
启动ethreal以后,选择菜单Capature->Start,开始抓包,按stop结束抓包。抓的包就会显示在面板中,并且已经分析好了。
注意:该方法十分简单,但是却没有进行过滤,抓的包过多,对分析问题不太方便。
2.2过滤器抓包
[not] primitive [and|or [not] primitive ...]
在抓包完成以后,显示过滤器可以用来找到你感兴趣的包,可以根据
1)协议
2)是否存在某个域
3)域值
4)域值之间的比较
来查找你感兴趣的包。
举个例子,如果你只想查看使用tcp协议的包,在ethereal窗口的左下角的Filter中输入tcp,然后回车,ethereal就会只显示tcp协议的包。如下图所示
值比较表达式
可以使用下面的操作符来构造显示过滤器
自然语言 类c表示 举例
eq == ip.addr==
ne != ip.addr!=
gt > frame.pkt_len>10
lt < frame.pkt_len<10
ge >= frame.pkt_len>=10
le <= frame.pkt_len<=10
表达式组合
可以使用下面的逻辑操作符将表达式组合起来
自然语言 类c表示 举例
and && 逻辑与,比如ip.addr=
or || 逻辑或,比如ip.addr=
xor ^^ 异或,如tr.dst[0:3] ==
not ! 逻辑非,如 !llc
例如:
我想抓取IP地址是192.168.2.10的主机,它所接收收或发送的所有的HTTP报文,那么合适的显示Filter(过滤器)就是
请记住一个诀窍:只好在Filter的背景是绿色,就证明你设定的Filter是合乎规定的,但是当背景是红色时,就说明你设定的Filter是Ethereal不允许的,是不对的。如
所有的过滤器(Filter)都可以在Filter旁边的Expression…中选取。
3. 升级抓包软件——在ethereal使用协议插件
ethereal能够支持许多协议,但有些协议需要安装插件以后才能解,比如H.323
以H.323协议为例,首先下载ethereal的H.323插件,下载地址
下载完了以后将文件(h323.dll)解压到ethereal安装目录的plugin\0.9.x目录下面,比如我的是
然后,需要进行一下设置
1)启动ethereal
2)菜单Edit->Preference
3)单击Protocols前面的"+"号,展开Protocols
4)找到Q931,并单击
5)确保"Desegment.... TCP segments"是选中的(即方框被按下去)
6)单击TCP
7)确保"Allow....TCP streams"是选中的
8)确保没有选中"Check....TCP checksum"和"Use....sequence numbers"
9)单击TPKT
10)确保"Desegment....TCP segments"是选中的
11)点击Save,然后点击Apply,然后点击OK
你也完全可以不断地重新安装新版本winpcap和ethreal,这样就可以不需在旧的ethreal的版本中安装新的插件来支持新的协议插件。这也是懒人的一种做法J
后续有时间再根据工作用到添加,整理手头的另外几份抓包资料。