Ethereal抓包常用过滤条件
- 格式:docx
- 大小:1.74 MB
- 文档页数:11
ethereal抓包⼯具ethereal是⽬前⽹络上开源的⼀款功能强⼤的以太⽹抓包⼯具,该软件可以监听异常封包,检测软件封包问题,从⽹络上抓包,并且能对数据包进⾏分析,从⽽帮助⽤户解决各种⽹络故障,更加⽅便查看、监控TCP session动态等等。
ethereal抓包⼯具需要⼀个底层的抓包平台,在Linux中是采⽤Libpcap函数库抓包,在windows系统中采⽤函数库抓包。
软件基本类似于tcpdump,但ethereal还具有设计完美的GUI和众多分类信息及过滤选项。
⽤户通过ethereal,同时将⽹卡插⼊混合模式,可以查看到⽹络中发送的所有通信流量,可以应⽤于故障修复、分析、软件和协议开发以及教育领域。
对于ethereal,有图形界⾯和字符界⾯两种⽅式。
到linux系统上执⾏rpm -qa | grep ethereal-gnome可查看是否安装了图形版本,但是如果服务器上没有xwin图形环境,那么就只能⽤字符界⾯了。
命令:tethereal可选参数:-V、-f如果只执⾏tethereal,那么将只抓取数据包的包头,不显⽰⾥边的内容。
加上-V参数后,即可显⽰内容。
-f 参数⽤于过滤,默认情况下将抓取tcp和udp所有协议。
如果想抓取UDP数据包并显⽰内容,则执⾏tethereal -V -f udp 即可另外还可以配合grep命令提取需要的关键内容。
图形化:ethereal使⽤教程⼀、打开抓包配置项1. 设置抓包的⽹卡2. 设置抓包的过滤项:只有满⾜条件的数据才会被ethereal捕捉,如果不填则捕捉所有的数据包capture选项interface: 指定在哪个接⼝(⽹卡)上抓包。
⼀般情况下都是单⽹卡,所以使⽤缺省的就可以了Limit each packet: 限制每个包的⼤⼩,缺省情况不限制Capture packets in promiscuous mode: 是否打开混杂模式。
如果打开,抓取所有的数据包。
Ethereal -抓包、报文分析工具Ethereal 是一种开放源代码的报文分析工具,适用于当前所有较为流行的计算机系统,包括 Unix、Linux 和 Windows 。
主界面如上图,点“抓包配置”按钮,出现抓包配置界面如下图。
在“Interface”中选择网卡,即用来抓包的接口,如果选择错误就不能抓到报文;“Capture packets in promiscuous mode(混杂模式抓包)”是指捕捉所有的报文,如不选中就只捕捉本机的收发报文;如果选中“Limit each packet to xx bytes(限制每个包的大小)”则只捕捉小于该限制的包;抓包时,数据量比较大,解析起来速度慢,可在“Capture Filter(抓包过滤设置“Display Options(显示设置)”中建议选中“Update list of packets in realtime(实时更新抓包列表)”、“Automatic scrolling in live capture(自动滚屏)”和“Hide capture info dialog(隐藏抓包信息对话框)”三项。
抓包配置好就可以点击“Start”开始抓包了。
抓包结束,按“停止”按钮即可停止。
为了快速查看需要的报文,在“Filter”栏中输入过滤条件后按回车键即可对抓到的包进行过滤。
注意“Filter”栏中输入的过滤条件正确则其底色为绿色,错误则其底色为红色。
常用有些报文还可以判断网络的状况,例如输入显示过滤条件tcp.analysis.flags,可以显示丢失、重发等异常情况相关的TCP报文,此类报文的出现频率可以作为评估网络状况的一个标尺。
偶尔出现属于正常现象,完全不出现说明网络状态上佳。
tcp.flags.reset==1。
SYN是TCP建立的第一步,FIN是TCP连接正常关断的标志,RST是TCP连接强制关断的标志。
统计心跳报文有无丢失。
在statistics->conversations里选择UDP,可以看到所有装置的UDP报文统计。
Wireshark的抓包及过滤规则实验Wireshark是世界上最流行的网络分析工具。
这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。
与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。
Wireshark的优势:- 安装方便。
- 简单易用的界面。
- 提供丰富的功能。
Wireshark的原名是Ethereal,新名字是2006年起用的。
当时Ethereal的主要开发者决定离开他原来供职的公司,并继续开发这个软件。
但由于Ethereal这个名称的使用权已经被原来那个公司注册,Wireshark这个新名字也就应运而生了。
实验一抓ARP包一:安装并运行wireshark开始捕获数据包,如图所示点击第二行的start开始捕获数据包。
二:几分钟后就捕获到许多的数据包了,主界面如图所示:如上图所示,可看到很多捕获的数据。
第一列是捕获数据的编号;第二列是捕获数据的相对时间,从开始捕获算为0.000秒;第三列是源地址,第四列是目的地址;第五列是数据包的信息。
选中第一个数据帧,然后从整体上看看Wireshark的窗口,主要被分成三部分。
上面部分是所有数据帧的列表;中间部分是数据帧的描述信息;下面部分是帧里面的数据三:开始分析数据在下图中Filter后面的编辑框中输入:arp(注意是小写),然后回车或者点击“Apply”按钮截图(替换掉该图)现在只有ARP协议了,其他的协议数据包都被过滤掉了。
注意到中间部分的三行前面都有一个“+”,点击它,这一行就会被展开。
如下图所示:截图(替换掉该图)现在展开第一行。
看到的结果如下:截图(替换掉该图)在上图中我们看到这个帧的一些基本信息:帧的编号:帧的大小:帧被捕获的日期和时间:帧距离前一个帧的捕获时间差:帧距离第一个帧的捕获时间差:帧装载的协议:现在展开第二行:截图(替换掉该图)我们可以看到:目的地址(Destination):源地址(Source):帧中封装的协议类型:Trailer:是协议中填充的数据,为了保证帧最少有64字节。
⽹络协议分析⼯具Ethereal的使⽤⼤学时计算机⽹络课的实验报告,当时提不起兴趣,今天看来还挺有⽤的。
可以学习下怎样抓数据包,然后分析程序的通信协议。
⼀:学习使⽤⽹络协议分析⼯具Ethereal的⽅法,并⽤它来分析⼀些协议。
实验步骤:1.⽤“ipconfig”命令获得本机的MAC地址和缺省路由器的IP地址;(注:缺省路由器即 ”Default Gateway”)命令⾏:Start->Run->CMD->ipconfig /all >C:\Mac.txt(在命令⾏中把ipconfig命令保存在⽂本⽂档⾥⾯备⽤)结果:本机Mac地址:00.09.73.4B.8A.D7 缺省路由器IP:192.168.8.254步骤截图:图1(本机⽹络信息:Mac.txt)2.⽤“arp”命令清空本机的缓存:命令⾏:Start->Run->CMD->arp –d图2(arp命令 –d参数的帮助说明)3.运⾏Ethereal,开始捕获所有属于ARP协议或ICMP协议的,并且源或⽬的MAC地址是本机的包:图3(Capture->Options中关于⽹卡设置和Capture Filter)图4(抓包截图)4.执⾏命令:“ping” 缺省路由器的IP地址:图5(捕获包)图6(ping 过程)⼆:⽤Ethereal观察tracert命令的⼯作过程:1.⽤Ethereal语法内容及参数说明:命令⾏操作步骤:Start->Run->CMD->tracert图1(Tracert命令全部参数的帮助说明)2.运⾏Ethereal, 设定源和⽬的MAC地址是本机的包,捕获tracert命令中⽤到的消息:Tracert使⽤ICMP,相应过滤规则为:ether host 00:09:73:4B:8A:D7 and icmp图3(Capture->Options中关于⽹卡设置和Capture Filter)3.执⾏“tracert -d ” ,捕获包:执⾏命令:tracert -d :图3 (执⾏命令 tracert –d )图4(抓包截图)图5(捕获包)4.Tracert⼯作原理:Tracert使⽤ICMP消息,具体地讲,tracert发出的是Echo Request消息,触发返回的是Time Exceeded消息和Echo Reply消息。
Ethereal软件下载、安装以及基本操作操作步骤:1.双击启动桌面上ethereal图标,按ctrl+K进行“capture option”的选择。
2.首先选择正确的NIC,进行报文的捕获。
3.对“capture option”各选项的详细介绍:Interface是选择捕获接口;Capture packetsin promiscuous mode表示是否打开混杂模式,打开即捕获所有的报文,一般我们只捕获到本机收发的数据报文,所以关掉;Limit each packet 表示限制每个报文的大小;Capture files 即捕获数据包的保存的文件名以及保存位置。
4.“capture option”确认选择后,点击ok就开始进行抓包;同时就会弹出“Ethereal:capture form (nic) driver”,其中(nic)代表本机的网卡型号。
同时该界面会以协议的不同统计捕获到报文的百分比,点击stop即可以停止抓包。
5.下图为Ethereal截取数据包的页面。
由上而下分別是截取数据包的列表以及封包的详细资料,最下面则是封包的內容,这时是以16进制及ASCII编码的方式来表示。
其中在列表这部份,最前面的编号代表收到封包的次序,其次是时间、来源地址、目的地址,最后则是协议的名称以及关于此封包的摘要信息。
6.若是想将截获到的数据包列表资料储存起来,可以执行[File]→[Save]或[Save As]将资料储存起来,存储对话框如下图所示,这些储存的数据包资料可以在以后执行[Open]来加以开启。
设置Ethereal的显示过滤规则操作步骤:1.在抓包完成后,显示过滤器用来找到你所感兴趣的包,依据1)协议2)是否存在某个域3)域值4)域值之间的比较来查找你感兴趣的包。
2.举个例子,如果你只想查看使用tcp协议的包,在ethereal窗口的工具栏的下方的Filter中输入tcp,让后回车,ethereal就会只显示tcp协议的包,如下图所示:3.值比较表达式,可以使用下面的操作符来构造显示过滤器。
1. 打开MMS Ethereal2. 打开选项网卡一定要选择对,即你用哪个网卡在抓包,“实时更新数据”和“自动滚屏”建议勾选。
然后点击start ,弹出两个窗口,将较小的窗口最小化,不要关闭,否则不抓包了。
3. 在“Filter ”中选择过滤条件,MMS 报文的过滤条件为“mms ”,GOOSE 报文的过滤条件为“iecgoose ”,注意一定要是小写。
也可以以源地址和目的地址为过滤条件点击开始设置选择网卡实时更新数据自动滚屏在报文中单击右键,选择过滤条件就可以了,以目的的MAC 地址为01:0c:cd:01:15:2e 为例那么现在所有的报文都是目的MAC 地址为01:0c:cd:01:15:2e 的报文。
窗口中的source 和选择过滤条件实际网卡的MAC 地址SCD 中填写的MAC 地址,即组播地址destination 这两个MAC 地址都是IL2215B 的MAC 地址,source 是实际网卡的MAC 地址,就是大家平时所说的MAC 地址,destination 是组播地址,在SCD 中填写,体现在goose.txt 文件中。
下面以一组报文进行分析我们实际分析GOOSE 报文的时候,一般只需要分析IEC 61850 GOOSE 下面的报文即可。
StNum :如果状态没有变化,每一帧报文的值相同,如果状态变化了,则值加1. SqNum :如果状态没有变化,每一帧报文的值加1,如果状态变化了,则值清零。
在数据集中的每一个值,他反应的是最后一次变位的值,也就是当前的值,下面的SOE 时间表示最后一次状态变位发生的时间,是格林威治时间,即比当前时间晚了8个小时。
时间品质反应最后一次状态变位发生时候的时间品质,而不是当前状态的时间品质。
报文中数据集与装置的GOOSE 文件中的数据集一致,即顺序也一致,要想看某个值是否变位以及什么时候变位,直接在GOOSE 的数据集中找到这个点,然后到报文中数数,数到这个点既可以看他的值。
Ethereal还可以使用libpcap过滤语言进行捕获过滤。
在Capture Option对话框中,将捕获过滤表达式输入到过滤字段,一个过滤表达式是由几个简单的表达式通过and/or 及not 连接在一起形成的。
Filter string 语法输入的格式●[src|dst] host <host>●ether [src|dst] host <ehost>●gateway host <host>●[src|dst] net <net> [{mask <mask>}|{len <len>}●[tcp|udp] [src|dst] port <port>●less|greater <length>●ip|ether proto <protocol>●ether|ip broadcast|multicast●<expr> relop <expr>比如说:●捕获MAC地址为00:d0:f8:00:00:03 网络设备通信的所有报文过滤表达式为:ether host 00:d0:f8:00:00:03●捕获IP地址为192.168.10.1 网络设备通信的所有报文过滤表达式为:host 192.168.10.1●捕获网络web浏览的所有报文过滤表达式为:tcp port 80●捕获192.168.10.1除了http外的所有通信数据报文过滤表达式为:host 192.168.10.1 and not tcp port 80●捕获过滤:从一个主机到另一个主机的telnet过滤表达式为:TCP port 23 and host 10.0.0.5。
●捕获所有除10.0.0.5主机以外的telnet流量过滤表达式为:TCP port 23 and not host 10.0.0.5Capture filter比如说:a.捕获MAC地址为00:d0:f8:00:00:03 网络设备通信的所有报文ether host 00:d0:f8:00:00:03b.捕获IP地址为192.168.10.1 网络设备通信的所有报文host 192.168.10.1c.捕获网络web浏览的所有报文tcp port 80d.捕获192.168.10.1除了http外的所有通信数据报文host 192.168.10.1 and not tcp port 80◆[src|dst] host <host>◆ether [src|dst] host <ehost>◆gateway host <host>◆[src|dst] net <net> [{mask <mask>}|{len <len>}◆[tcp|udp] [src|dst] port <port>◆less|greater <length>◆ip|ether proto <protocol>◆ether|ip broadcast|multicast◆<expr> relop <expr>Equal: eq, == (等于)Not equal: ne, != (不等于)Greater than: gt, > (大于)Less Than: lt, < (小于)Greater than or Equal to: ge, >= (大等于)Less than or Equal to: le, <= (小等于)Analyze下的Display filters正确的语法如下,和“Capture Filter”的语法有所不同:显示以太网地址为00:d0:f8:00:00:03 设备通信的所有报文eth.addr==00.d0.f8.00.00.03显示IP地址为192.168.10.1 网络设备通信的所有报文ip.addr==192.168.10.1显示所有设备web浏览的所有报文tcp.port==80显示192.168.10.1除了http外的所有通信数据报文ip.addr==192.168.10.1 && tcp.port!=80。
Ethereal 使用方法一, 使用方法点击Capture 菜单下的Start 。
然后选择相应的参数,点击OK !Capture Options 选择的常见注意事项(每个选项前面的小方块,凹进去表示选中):1, Interface :如果你的计算机安装了多个网卡,注意选择你想抓包的那个网卡。
2, 需要选中的选项:Capture packets in promiscuous mode任何流经这台主机的数据包都将被捕获,如果按钮凸起,则只能捕获从主机发送或者发向该主机的数据包。
Update list of packets in real time是Ethereal 主界面上是否实时地显示抓包变化的选项,当选择了该项时,Ethereal 主界面上将实时地更新抓包列表,若不显示该项,所有的包列表将在抓包过程停止以后一起显示。
Automatic Strolling in live capture选项允许用户在抓包过程中能实时地察看新抓的数据包。
3,注意name resolution的选项不能选,否则抓包,保存,打开等过程会很慢。
“Name resolution”中有三个选项,“Enable MAC name resolution”是否将MAC地址的前三个字节翻译成IETF所规定的厂商前缀。
“Enable network name resolution”用于控制是否将IP地址解析为DNS域名。
“Enable transport name resolution”则用于控制是否将通信端口号转换为协议名称。
4,抓包时可以对所抓的包进行过滤,常用的过滤选项有:sip || mgcp,sip && h225 && h245,ip.addr == 10.11.2.9,udp.port == 1719,tcp.port == 2000等。
5,一般抓包的计算机需要与被抓的目标地址在一个HUB上,如果在一个LAN上,需要做端口镜像。
1、ethreal使用-入门ethreal可以用来从网络上抓包,并能对包进行分析。
下面介绍windows下面ethereal的使用方法安装1)安装winpcap,下载地址http://netgroup-serv.polito.it/winpcap/install/Default.htm2)安装ethreal,下载地址/使用windows程序,使用很简单。
启动ethreal以后,选择菜单Capature->Start,就OK了。
当你不想抓的时候,按一下stop,抓的包就会显示在面板中,并且已经分析好了。
下面是一个截图:2、ethereal使用-capture选项Interface: 指定在哪个接口(网卡)上抓包。
一般情况下都是单网卡,所以使用缺省的就可以了Limit each packet:限制每个包的大小,缺省情况不限制Capture packets in promiscuous mode:是否打开混杂模式。
如果打开,抓取所有的数据包。
一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。
Filter:过滤器。
只抓取满足过滤规则的包(可暂时略过)File:如果需要将抓到的包写到文件中,在这里输入文件名称。
use ring buffer:是否使用循环缓冲。
缺省情况下不使用,即一直抓包。
注意,循环缓冲只有在写文件的时候才有效。
如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷其他的项选择缺省的就可以了3、ethereal的抓包过滤器抓包过滤器用来抓取感兴趣的包,用在抓包过程中。
抓包过滤器使用的是libcap过滤器语言,在tcpdump的手册中有详细的解释,基本结构是:[not] primitive [and|or [not] primitive ...]个人观点,如果你想抓取某些特定的数据包时,可以有以下两种方法,你可以任选一种,个人比较偏好第二种方式:1、在抓包的时候,就先定义好抓包过滤器,这样结果就是只抓到你设定好的那些类型的数据包;2、先不管三七二十一,把本机收到或者发出的包一股脑的抓下来,然后使用下节介绍的显示过滤器,只让Ethereal显示那些你想要的那些类型的数据包;4、etheral的显示过滤器(重点内容)在抓包完成以后,显示过滤器可以用来找到你感兴趣的包,可以根据1)协议2)是否存在某个域3)域值4)域值之间的比较来查找你感兴趣的包。
wireshark常⽤过滤命令2筛选条件(多个过滤条件之间使⽤and或者or)1. 基于IP地址(eq等价于==)(and等价于&&)ip.src == 120.221.147.48 //基于源IPip.dst == 10.190.66.119 //基于⽬的IPip.addr == 10.190.66.119 //基于IP地址2. 基于端⼝tcp.srcport == 80 //基于源端⼝tcp.dstport == 80 //基于⽬的端⼝tcp.port == 80 //基于端⼝3. 基于协议tcp、udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl、oicq、bootp直接输⼊,即可过滤4. 基于mac地址eth.src == 58:fb:84:77:ad:9e //基于源maceth.dst == 44:8A:5B:E2:58:00 //基于⽬的maceth.addr == 58:fb:84:77:ad:9e //基于mac5. 基于数据包长度udp.length == 26 //这个长度是指udp本⾝固定长度8加上udp下⾯那块数据包之和tcp.len>= 7 //指的是ip数据包(tcp下⾯那块数据),不包括tcp本⾝ip.len == 94 //除了以太⽹头固定长度14,其它都算是ip.len,即从ip本⾝到最后frame.len == 119 //整个数据包长度,从eth开始到最后6. 基于identification标识符ip.id == 1256 //筛选出数据包标识符为1256的数据包7.排除某项协议!icmp或者not icmp //排除ICMP协议8.http模式过滤例⼦:http.request.method == "GET"http.request.method == "POST"http.request.uri == "/img/logo-edu.gif"http contains "GET"http contains "HTTP/1."// GET包http.request.method == "GET" && http contains "Host: "http.request.method == "GET" && http contains "User-Agent: "// POST包http.request.method == "POST" && http contains "Host: "http.request.method == "POST" && http contains "User-Agent: "// 响应包http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "⼀定包含如下Content-Type:9.TCP参数过滤tcp.flags 显⽰包含TCP标志的封包。
Ethereal抓包常用过滤条件
过滤语句使用的举例如下:
1. 捕获MAC地址为00:e0:fc:58:bc:a3的通信数据包,例如:
ether host 00:e0:fc:58:bc:a3
2. 捕获源IP地址为150.20.10.119的通信数据包,例如:
src host 150.20.10.119
用PC机监听STB的通信数据包时,常常要用到这个过滤条件,以保证只捕获与STB相关的数据包。
3. 捕获通过80端口来通信的数据包,使用该端口通信的数据包是基于http 协议的,例如:
tcp port 80 或者为ip proto http
以上过滤语句还可以通过and、or、not等连接成复合过滤语句。
例如:捕获160.128.10.4除了http外的所有通信数据报文
host 160.128.10.4 and not tcp port 80
Name Resolution:名字解析,可将MAC地址、网络地址、端口地址解析为相应的名称。
1)Enable MAC name resolution
通过该选项可以控制是否让ethereal将数据包中的MAC地址解析为名字。
例如在IPTV验证工作中实际抓包分析时,常常可在协议栏中看到Huawei_58:00:63这样的地址,其实真实的MAC地址是:00:e0:fc:58:00:63。
2)Enable network name resolution
通过该选项可以控制是否让ethereal将数据包中的网络地址解析为网络名称。
3)Enable transport name resolution
通过该选项可以控制是否让ethereal将数据包中的端口地址解析为协议名称。
1.1.数据包的显示分析
捕获到数据包后,主页面将显示这些包的信息,如果所抓的数据包太繁杂而不方便观察和分析,则可以在主页面的过滤栏中输入显示过滤条件,这样主页面的概要栏、协议栏和数据栏中就只显示满足过滤条件的数据包。
Ethereal中捕获数据和显示数据的功能是分别由两个不同程序实现的,因此显示过滤语句的语法与捕获过滤的不同,常用的过滤语句如下:
例一:显示以太网地址为00:d0:f8:00:00:03 设备通信的所有报文
eth.addr==00.d0.f8.00.00.03
例二:显示IP地址为192.168.10.1 网络设备通信的所有报文
ip.addr==192.168.10.1
例三:显示所有设备web浏览的报文
tcp.port==80
也可以在过滤栏中直接输入协议名称http来实现过滤,这些语句还可以通过关系符连接为复合语句,例如
例四:显示192.168.10.1除了http外的所有通信数据报文
ip.addr==192.168.10.1 && tcp.port!=80
其中&&是逻辑与(and)的意思,过滤语句还可以用逻辑或(or)、逻辑否(not)和逻辑异或(xor)来连接。
当输入的过滤语句正确时,过滤栏会显示为绿色,否则显示为红色。
以上只是给出了最简单常用的例子,如果需要了解更详细,可查阅《Ethereal 用户操作指南》等相关文档。
在数据包分析时,Ethereal还提供一个很有用的功能——Follow TCP Stream。
该功能可以将有关联的交互数据整理为一个完整的TCP会话,可方便的从应用层面观察到该会话中数据流交互的信息。
在实际的IPTV验证工作中,通过此项功能清楚的了解IPTV 系统中各组件的交互流程,并深入掌握其交互的信息,对问题的分析定位有较大的帮助。
在概要栏中选中一个需被分析的数据包,如图1-7所示,点击鼠标右键后选择Follow TCP Stream,将弹出一个对话框,如图1-8。
该对话框的Stream Content中详细显示了这个TCP会话交互的所有信息,通过对话左下角的下拉条可以选择三种不同的显示方式:Entire conversation(显示完整的会话), data from A to B only(只显示从A到B发送的信息),data from B to A only(只显示从B到A的信息)。
图1-7 进入Follow TCP Stream
图1-8 Follow TCP Stream对话框图
1.2.抓包数据的保存
捕获所需的数据包后可以保存全部的数据,也可以保存部分过滤后的数据。
从菜单栏的File中选取Save as,将弹出一个保存对话框,如图1-9。
通过该对话框可以设置文件名、指定文件存储路径、选择文件存储内容和存储形式。
在存储内容选择框中有Captured和Displayed两个按钮,可分别选择保存捕获的数据包和显示的数据包。
从左边的选项还可以选择存储指定的数据包并且能定义每个包的大小。
不同的文件存储格式能适用于不同的应用软件打开读取,如果保存的文件需要在Sniffer上打开,则必须在File type的下拉条中选择Network Associates Sniffer 的文件格式。
图1-9 文件保存界面
2.Ethereal在IPTV验证中的应用实例
简单实例:了解STB开机时的调度流程,确定实际上是哪台EPG向STB提供服务。
已知STB中设置的EDS调度服务器IP地址为160.128.10.22,升级服务器的IP地址为172.18.10.30,网络中可提供服务的EPG有多台。
以下介绍Ethereal在该实例中的应用步骤。
1、构造监听环境
使用HUB构造网络监听环境,本人的机顶盒是通过MODEM接入网络的,用HUB链接STB和MODEM,并将办公PC接入HUB就可以利用办公PC监听STB 上所有发送和接收的信息了。
如图1-10所示。
图1-10 监听STB网络架构
2、在PC机上运行Ethereal抓包
选取菜单栏中的Capture->Options 弹出Capture Options对话框,在
Interface中选择链入HUB的网卡来捕获数据包,并将网卡设置为杂收模式,否则抓不到STB上传输的包,因为该实例中只关注和机顶盒通信的数据包,所以在Capture Filter中输入过滤出包含有STB地址的数据包。
由于STB是通过PPPOE 拨号来获得IP地址上网的,因此以机顶盒的MAC地址为过滤条件。
一般对于STB 上的数据流量来说,Ethereal的捕获速度可以满足要求,因此可以选择数据包实时显示。
为方便手动停止抓包,可以不隐藏抓包信息对话框。
以上设置如图1-11所示。
设置完成后点击Capture按钮进入抓包,然后启动STB,等STB登陆到EPG 首页的时候停止抓包,并将其完整的保存为一后缀为.cap的文件。
捕获的数据显示如图1-12。
图1-11 Capture Options 设置
3、对数据包进行分析
根据图1-12可知,从No.2到No.23的数据包是STB通过PPPOE拨号获得IP地址(150.20.10.188)的通信过程的数据包;之后STB与升级服务器建立TCP会话,若需详细了解该会话中通信的信息,可按如图1-7所示的方式打开“Follow TCP Stream”的对话框,从Stream Content中即可看到整个会话中STB向升级服务器请求并获得了版本配置信息,如图1-13,根据这些信息STB决定现用的版本是否需要更新。
在此次抓包中可知STB版本无需升级,因此此次会话很块结束,转入与EDS的TCP会话连接。
图1-12 机顶盒抓包数据
图1-13 STB与升级服务器之间的TCP会话
如果不需要关心数据包中和EDS调度无关的信息,可以在过滤栏中输入:ip.addr==160.128.10.22并回车确定,概要栏就只显示过滤出的数据包,如图1-14所示。
使用Follow TCP Stream功能可清楚观察到STB在此次会话中先后发起三次请求:首先STB向调度服务器直接发起EPG登陆请求,EDS收到请求后转去后台进行调度处理;于是STB接着发起调度服务列表请求,而EDS将调度结果传回前台以便通知机顶盒;最后STB发起重定向请求,从而得到了EPG服务器的网络地址,由图1-15可知EDS返回的IP地址为160.128.10.103。
图1-14 过滤后的数据包显示
从这个实例可以看出,使用Ethereal能简单方便的掌握部件之间的交互流程和具体交互信息,也能在一定程度上了解部件内部处理的机制。
如果不进行抓包分析,即使STB已经调度到EPG并与其建立了链接,也无从查询到它具体是由哪台EPG 提供服务的,同时也不能知道EDS服务器具体的调度流程。
图1-15 EDS调度过程TCP会话。