Windows下使用Wireshark(ethereal)进行抓包分析
说明:由于版权问题,该开源软件的新版本现已更名为Wireshark。
1、下载安装
a 从/ 下载Wincap安装;
b 从hereal/ 下载安装Windows平台的Ethereal(或从sourceforge/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命令,要求下载的主页(路径为“/”)。
上图的中间是协议树,通过协议树可以得到被截获的数据包的更多信息,如主机的MAC地址(Ethernet II)、IP地址(Internet Protocol)、TCP端口号(Transmission Control Protocol)以及HTTP协议的具体内容(Hypertext Trnasfer Protocol)。通过扩展协议树中
的相应节点,可以得到该数据包中携带的更详尽的信息。
上图最下边是以十六制显示的数据包的具体内容,这是被截获的数据包在物理媒体上传输时的最终形式,当在协议树中选中某行时,与其对应的十六进制代码同样会被选中,这样就可以很方便地对各种协议的数据包进行分析。
6、在Ethereal 使用协议插件
Ethereal 能够支持许多协议,但有些协议需要安装插件以后才能分析。此处以H.323协议为例。
a从/下载Ethereal 的H.323 插件,下载后将文件(h323.dll) 解压到Ethereal 安装目录的plugin\0.9.x。
b 进行设置:①启动ethereal ②菜单EditèPreference③单击Protocols 前面的“+”号,展开Protocols ④到Q.931 ,并单击⑤确保“ TCP segments”tcp ip协议下载安装是选中的(即方框被
按下去)⑥单击TCP ⑦确保“TCP streams”是选中的⑧确保没有选中“TCP checksum”和“sequence numbers”⑨单击TPKT ⑩确保“TCP segments” 是选中的⑾点击Save,然后点击Apply ,OK。
7、相互协作产生ftp、telnet、www等流量,抓包进行分析,根据对应报文头部加深对协议的理解。
8、抓包分析访问网上邻居时使用的协议、端口等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论