Windows下使用Wireshark(ethereal)进行抓包分析

来源:互联网 发布:java中有哪些集合 编辑:程序博客网 时间:2024/05/17 17:55

 http://pjing1124.blog.163.com/blog/static/5142315120091065133328/

说明:由于版权问题,该开源软件的新版本现已更名为Wireshark。

1、下载安装

a 从http://www.winpcap.org/ 下载Wincap安装;

b 从http://www.ethereal.com/ 下载安装Windows平台的Ethereal(或从http://sourceforge.net/projects/wireshark/ 下载安装Wireshark),双击安装文件安装即可。

 

2、使用

启动ethereal 以后,选择菜单Capature->Start :

选择好接受数据的网卡(Ethereal会自动选择系统中安装的唯一的网卡),再单击“OK”按钮即可开始抓包。上图中的对话框还可以进行一些设置:

l         Interface:指定在哪个接口(网卡)上抓包(系统会自动选择一块网卡)。

l         Limit each packet:限制每个包的大小,缺省情况不限制。

l         Capture packets in promiscuous mode:是否打开混杂模式。如果打开,抓取所有的数据包。一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。

l         Filter:过滤器。只抓取满足过滤规则的包。

l         File:可输入文件名称将抓到的包写到指定的文件中。

l         Use ring buffer: 是否使用循环缓冲。缺省情况下不使用,即一直抓包。注意,循环缓冲只有在写文件的时候才有效。如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷。

l         Update list of packets in real time:如果复选框被选中,可以使每个数据包在被截获时就实时显示出来,而不是在嗅探过程结束之后才显示所有截获的数据包。

单击“OK”按钮开始抓包,系统显示出接收的不同数据包的统计信息:

单击“Stop”按钮停止抓包后,所抓包的分析结果显示在面板中:

 

3、Ethereal的抓包过滤器

  抓包过滤器在抓包过程中用来抓取感兴趣的数据包。 它使用的是libcap 过滤器语言,在tcpdump 的手册中有详细的解释,基本结构是: [not] primitive [and|or [not] primitive …]。

要抓取某些特定的数据包时,可以有以下两种方法,①在抓包时先定义好抓包过滤器,这样只抓到你设定好的那些类型的数据包;②先抓取所有的数据包,再使用下节介绍的显示过滤器,让Ethereal 只显示那些需要类型的数据包。

 

4、Etheral的显示过滤器

  显示过滤器可以用来过滤显示抓包结果中感兴趣的数据包,可以根据①协议②是否存在某个域③域值④域值之间的比较来查找感兴趣的数据包。

l         【例】 只显示使用tcp 协议的数据包,在Ethereal 窗口的左下角的Filter 中输入tcp, 然后回车,ethereal 就会只显示tcp 协议的包。

l         值比较表达式:显示过滤器类似C语言,如等于(eq,==):ip.addr==10.1.10.20;不等于(ne,!=):ip.addr!=10.1.10.20 ;大于(gt,>):frame.pkt_len>10 ;小于(lt,<):frame.pkt_len<10 ;大于等于(ge,>=): frame.pkt_len>=10 ;小于等于(le,<=):frame.pkt_len<=10。

l         表达式组合:可以使用逻辑操作符将表达式组合起来,类似于C语言,如逻辑与(and,&&):ip.addr==10.1.10.20&&tcp.flags.fin;逻辑或(or,||):ip.addr==10.1.10.20||ip.addr=10.1.10.21;异或(xor,^):tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 2.3.4  逻辑非(not,!):! llc

l         【例】要抓取IP 地址是192.168.2.10 的主机所接收或发送的所有HTTP 报文,那么合适的显示Filter (过滤器)就是:

如果Filter文本框的底色是绿色则说明过滤表达式书写正确,否则就是错误的:

 

5、用Ethereal分析数据包

Ethereal的整个窗口被分成三个部分:最上面为数据包列表,用来显示截获的每个数据包的总结性信息;中间为协议树,用来显示选定的数据包所属的协议信息;最下边是以十六进制形式表示的数据包内容,用来显示数据包在物理层上传输时的最终形式。

使用Ethereal可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。下图显示的是在Ethereal中对一个HTTP数据包进行分析时的情形。

在上图最上边的数据包列表中,显示了被截获的数据包的基本信息,包括源地址、目标地址、所属协议。信息表明该数据包中含有一个HTTP的GET命令,要求下载www.wincap.org的主页(路径为“/”)。

上图的中间是协议树,通过协议树可以得到被截获的数据包的更多信息,如主机的MAC地址(Ethernet II)、IP地址(Internet Protocol)、TCP端口号(Transmission Control Protocol)以及HTTP协议的具体内容(Hypertext Trnasfer Protocol)。通过扩展协议树中的相应节点,可以得到该数据包中携带的更详尽的信息。

上图最下边是以十六制显示的数据包的具体内容,这是被截获的数据包在物理媒体上传输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,这样就可以很方便地对各种协议的数据包进行分析。

 

6、在Ethereal 使用协议插件

Ethereal 能够支持许多协议,但有些协议需要安装插件以后才能分析。此处以H.323协议为例。

a从http://www.voice2sniff.org/下载Ethereal 的H.323 插件,下载后将文件(h323.dll) 解压到Ethereal 安装目录的plugin\0.9.x。

b 进行设置:①启动ethereal ②菜单EditèPreference③单击Protocols 前面的“+”号,展开Protocols ④找到Q.931 ,并单击⑤确保“Desegment.... TCP segments”是选中的(即方框被按下去)⑥单击TCP ⑦确保“Allow....TCP streams”是选中的⑧确保没有选中“Check....TCP checksum”和“Use....sequence numbers”⑨单击TPKT ⑩确保“Desegment....TCP segments” 是选中的⑾点击Save,然后点击Apply ,OK。

 

7、相互协作产生ftp、telnet、www等流量,抓包进行分析,根据对应报文头部加深对协议的理解。

8、抓包分析访问网上邻居时使用的协议、端口等。

 

原创粉丝点击