说起Wireshark就不得不提Ethereal了,Ethereal和在Windows系统中常用的sniffer
pro并称网络嗅探工具双雄,不过和sniffer pro不同的是Ethereal在Linux类系统中应用更为广泛。而Wireshark软件则是Ethereal的后续版本,他是2006年在Ethereal被收购后推出的最新网络嗅探软件,在功能上比前身更加强大。官方主页: http://www.wireshark.org/
Wireshark是功能强大的网络数据捕获工具,他可以帮助我们分析网络数据流量,在第一时间发现蠕虫病毒,木马程序以及ARP欺骗等问题的根源。
这个软件是开源代码的。可以在linux和windows下使用,在windows下编译需要安装cygwin。
简单使用教程
使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。
◆设置Wireshark的过滤规则
在用Wireshark截获数据包之前,应该为其设置相应的过滤规则,可以只捕获感兴趣的数据包。Wireshark使用与Tcpdump相似的过滤规则,并且可以很方便地存储已经设置好的过滤规则。要为Wireshark配置过滤规则,首先单击“Capture”选单,然后选择“Capture Filters...”菜单项,打开“Wireshark :Capture Filter”对话框。因为此时还没有添加任何过滤规则,因而该对话框右侧的列表框是空的(如图2所示)。在Wireshark中添加过滤器时,需要为该过滤器指定名字及规则。
|
图 4 为Wireshark添加一个过滤器 |
例如,要在主机192.168.0.3和192.168.0.11间创建过滤器,可以在“Filter name”编辑框内输入过滤器名字“cjh”,在“Filter string”编辑框内输入过滤规则“host 192.168.0.3 and
192.168.0.11”,然后单击“新建”按钮即可。
在
Wireshark中使用的过滤规则和Tcpdump几乎完全一致,这是因为两者都基于pcap库的缘故。Wireshark能够同时维护很多个过滤器。网络管理员可以根据实际需要选用不同的过滤器,这在很多情况下是非常有用的。例如,一个过滤器可能用于截获两个主机间的数据包,而另一个则可能用于截获 ICMP包来诊断网络故障。单击“保存”按钮,会到对话框。单击“关闭”按钮完成设置。
1. 指定过滤器
要将过滤器应用于嗅探过程,需要在截获数据包之前或之后指定过滤器。要为嗅探过程指定过滤器,并开始截获数据包,可以单击“Capture”选单,选择 “Start...”选单项,打开“iterface”对话框,单击该对话框中的“Filter:”按钮,然后选择要使用的网络接口,如图5所示。
|
图 5 为Wireshark指定网络接口 |
l注意:在“Capture
Options”对话框中,“Update list of packets in
real time”复选框被选中了。这样可以使每个数据包在被截获时就实时显示出来,而不是在嗅探过程结束之后才显示所有截获的数据包。
在选择了所需要的过滤器后,单击“确定”按钮,整个嗅探过程就开始了。Wireshark可以实时显示截获的数据包,因此能够帮助网络管理员及时了解网络的运行状况,从而使其对网络性能和流量能有一个比较准确的把握。如图6 。
|
图 6 Wireshark实时显示截获的数据包
Capture Options其他选项:
Interface(接口)
这个字段指定在哪个接口进行捕获。这是一个下拉字段,只能从中选择Wireshark 识别出来的接口,默认是第一块支持捕获的非loopback 接口卡。如果没有接口卡,那么第一个默认就是第一块loopback 接口卡。在某些系统中,loopback 接口卡不能用来捕获(loopback 接口卡在Windows平台是不可用的)。
lIP address(IP
地址)
所选接口卡的IP 地址。如果不能解析出IP 地址,则显示"unknown"
lLink-layer header type(链路层头类型)
除非你在极个别的情况下可能用到这个字段,大多数情况下保持默认值。具体的描述,见”
lBuffer size: n megabyte(s) (缓冲区大小:n 兆)
输入捕获时使用的buffer 的大小。这是核心buffer 的大小,捕获的数据首先保存在这里,直到写入磁盘。如果遇到包丢失的情况,增加这个值可能解决问题。
lCapture packets in promiscuous mode (在混杂模式捕获包)
这个选项允许设置是否将网卡设置在混杂模式。如果不指定,Wireshark 仅仅捕获那些进入你的计算机的或送出你的计算机的包。(而不是LAN
网段上的所有包).
lLimit each packet to n bytes (限制每一个包为n 字节)
这个字段设置每一个数据包的最大捕获的数据量。有时称作snaplen 。如果disable
这个选项默认是65535, 对于大多数协议来讲中够了。
lCapture Filter(捕获过滤)
这个字段指定一个捕获过滤。 “在捕获时进行过滤”部分进行讨论。默认是空的,即没过过滤。也可以点击标为Capture Filter 的按钮, Wireshark 将弹出Capture Filters(捕获过滤)对话框,来建立或者选择一个过滤。
四、用Wireshark分析互联网数据包实例
上面基本是以局域网为例的。下面看看Wireshark对于互联网数据的分析。Wireshark和其它的图形化嗅探器使用基本类似的界面,整个窗口被分成三个部分:最上面为数据包列表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式。使用Wireshark可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。图7是在Wireshark中对一个HTTP数据包进行分析时的情形。在图最上边的数据包列表中,显示了被截获的数据包的基本信息。
|
图 7 用Wireshark分析互联网数据包内容 |
图 7中间是协议树,通过协议树可以得到被截获的数据包的更多信息,如主机的MAC地址(Ethernet II)、IP地址(Internet Protocol)、TCP端口号(Transmission Control
Protocol),以及HTTP协议的具体内容(Hypertext Trnasfer
Protocol)。通过扩展协议树中的相应节点,可以得到该数据包中携带的更详尽的信息。
|
图 8 使用Follow TCP stearm 查看详细信息 |
图 8最下边是以十六制显示的数据包的具体内容,这是被截获的数据包在物理媒体上传输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,这样就可以很方便地对各种协议的数据包进行分析。图6 是一个详细封包分析。是点击该封包选择“Mark Pactet”。从图中可以看出,当前选中数据包的源地址是221.217.132.33,目的地址为202.106.124.50,该数据包所属的协议是超文本传输协议(HTTP)。要获取更加详细信息可以是点击该封包选择“Follow TCP stearm ”。