如何利用Ethereal进行协议分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ethereal是什么?它是一个图形用户接口(GUI)的网络嗅探器,能够完成与TCPDUMP相同的功能,用来捕获网络数据;但其有TCPDUMP无法相比的友好界面;而且其支持的协议之广和全也是别的嗅探器没有办法相提并论的。
那么你可以试着阅读本文,让此文给我们07年岗前实训带来方便!
1. 简单介绍
Ethereal是一个图形用户接口(GUI)的网络嗅探器,能够完成与TCPDUMP相同的功能,但操作界面要比TCPDUMP友好的多。Ethereal和TCPDUMP都依赖于pcap 库(libcap),因此两者在许多方面非常相似(有相同的数据抓取过滤条件和关键字)。同时Ethereal有与其他图形化网络嗅探器相同的界面模式,实际上如果你能够熟练地使用Ethereal,那么你也同样可以使用其他用户界面的网络嗅探器。
Ethereal也是一个跨平台的开源项目,支持Windows和Linux平台。Ethereal 起初由Gerald Combs开发,随后由一个松散的Ethereal团队组织进行维护开发。它目前所提供的强大协议分析功能完全可以同商业的网络协议分析系统媲美,从1998年发布最早的0.2版本至今,大量的志愿者为Ethereal添加新的协议解析器,如今Ethereal已经支持500多种协议解析。很难想象如此多的人开发的代码是如何很好的融入系统中的;实际上在Ethereal中添加一个新的协议解析器非常简单,笔者曾经就在很短的时间内向Ethereal添加一个协议解析器;其实系统为添加协议解析器留出了接口,而在面向程序员的开发文档中对如何添加协议解析器有很好的说明;其实网络协议种类繁多,随着时间推移,各种新的协议层出不穷,如果不是设计良好的系统,也不可能适应不断发展的网络协议。一句话,Ethereal是一个结构设计良好的系统。
那么可以利用Ethereal来做什么呢?实际上Ethereal可以用来捕获网络的数据包,然后利用其对现有协议的分析能力来帮助工作。
2. 安装Ethereal
正如前面所说Ethereal是一个开源的项目,可以从 下载,你不但可以从这里下载到可执行程序,也可以下载到源程序。当前最新版本是0.99.0版。不过正如我们前面说过的,Ethereal是建立在libcap基础之上,所以在安装Ethereal之前请先安装一个libcap的库,可以从
/下载。
Ethereal比较具有吸引力的地方是可以通过阅读其协议分析器的源代码来了解一些不容易得到的协议的详细情况;当然这是比较费力的途径,如果能够得到协议的文档说明还是不要走这条路。
3. 使用Ethereal来捕获数据包
下面以Windows平台上的Ethereal 0.99.0版本介绍一下如何使用Ethereal。
3.1. 捕获数据初级篇
启动Ethereal之后选择Capture菜单,然后选择子菜单Start就可以开始捕获数据包了。
图1:Ethereal开始界面
一旦启动捕获程序以后,Ethereal界面最前面显示一个窗口,这个窗口用来显示各种协议捕获到的数据包数量,以及已经运行的时间。图2显示这个对话框:
图2:Ethereal捕获对话框
3.2. 网络数据的分析
如果你想停止捕获数据包,只需要单击Stop按钮即可。在停止捕获数据包以后,Ethereal将捕获到的数据包进行分析,然后以图形的形式展现在用户面前;如图3所示:
图3:Ethereal网络数据包显示窗口
图3主要包括3部分,分别是:
1.协议数据包窗口;该窗口中概要的显示数据包捕获的时间,源和目的IP
地址,以及使用协议的概况。
2.协议树窗口;该窗口以树形结构显示捕获到的数据包,实际上当在协议数据包窗口中选择一个数据包的时候,该窗口显示的就是该数据包的结构;树的形状按照网络协议的层次从上到下排列。
3. 16进制数据包窗口;该窗口以16进制的形式显示协议数窗口中对应的数据包。
注意,窗口的整体布局(1、2、3窗口的位置)可以通过菜单:Edit->Preferences…来设置。
下面具体介绍上面3个窗口的功能。
3.2.1. 协议数据包窗口
3.2.1.1. 格式
捕获的数据包默认按照时间的顺序全部显示在该窗口中,窗口的选项从左到右分别是:包序号、时间(单位为秒)、数据包源的IP地址、数据包目标的IP地址、协议类型、包信息概述。下面是一个HTTP数据包的例子:
包号是20;当前包到达时间距离第一个包是59.886024秒;包的源IP地址是210.77.145.167;包的目的地址是60.166.179.164,由于是HTTP协议(基于TCP),所以有一个地址应该是本地计算机地址,该目的地址就是本地机器地址。协议类型为HTTP协议,也就是TCP端口号为80,Ethereal对支持的协议都会在这里以协议的名称显示出来,否则这里显示TCP端口号或UDP端口号,当然对于非TCP 和UDP的另当别论。
最后的信息一栏对于TCP和UDP数据包显示数据包从端口到端口,如果有TCP
和UDP标志,也会显示在该栏中;对于TCP会显示其他的参数,如窗口、ACK序号等。下面是另外一个例子。
3.2.1.2. 颜色选项
Ethereal对于不同的协议可设置不同的颜色,从而方便用户观察任何异常的数据包,设置颜色选项通过菜单View->Coloring Rules来设置。选择该菜单以后,出现颜色设置对话框,如下所示:
图4,协议颜色选项
系统提供了默认的协议颜色设置,对于某些铭感的协议标志采用红色或黑色来表示。例如:Bad TCP标志。
3.2.1.3. 浏览TCP数据流的内容
Ethereal提供了一个选项,可以用来浏览一个TCP连接上的数据,这些数据以ASCII码等形式显示;可以在协议数据包窗口中选择一个TCP数据包,然后选择右键菜单:Follow TCP Stream,然后出现如图5所示的窗口:
图5,浏览TCP数据流
Ethereal提供了4种形式来显示数据;如果选择ASCII码,对于明码传递的文本数据都可以在这里查看到,例子中的是一个HTTP协议的TCP流(HTTP是使用80端口的一种TCP协议)。
注意,你可能通过该方式一不小心浏览别人明码方式传递的帐户和口令信息哦。
3.2.2. 协议树窗口
当在协议数据包窗口中选择一个数据包的时候,该数据包的协议树就在协议树窗口中被创建。下图是一个TCP数据包的协议树窗口:
图6,协议树窗口
上面是一个HTTP协议的数据包窗口。协议树窗口显示的协议层次与网络协议的层次对应;下表是上面这个例子的对应关系:
义需要熟读TCP/IP协议族。这里需要记住一点,从应用层到最底层,通过逐渐添加数据包头来完成的,在数据链路层有一个尾部。这里仅仅举两个三个例子:IP协议节点、TCP协议节点、HTTP协议节点。
注意:帧这层没有对应的网络层,实际上该层是Ethereal为了管理自己建立的,其中的帧序号通常是显示过滤条件的重要参数。
3.2.2.1. IP协议节点
图7,IP协议节点