在C/S或B/S架构的系统级测试中,有时需要验证客户端是否发送了某种特定的数据包。
可以通过Omnipeek抓包工具分析验证,过滤出符合要求的数据包。关键是设置过滤条件,使Omnepeek能够保存符合条件的数据包。设置过滤条件的过程是这样的:
1、简单过滤器
点击菜单栏view\filter打开过滤器视图,双击需要编辑的过滤打开Edit Filter对话框,如下:
图1 编辑过滤器-简单设置
图1是一个简单的设置页面,在这里可以设置需要过滤的IP地址(Address filter),type,数据通信方向(可选单向,双向),通信端口。
2、进阶设置
但是图1所示简单的设置不能满足比如过滤数据包长度,数据包内容等条件。点击图1右上角Type,选择advanced,打开如图2所示设置页面:
图2 过滤器设置-进阶设置
在上述图2中,可以看到Edit Filter中有四个条件串在一起(and)。双击每一个条件,可详细进行设置。
其中,Address过滤器可设置需过滤的源地址、目的地址、端口等,这个在图1中同样可以设置。
图3 Address过滤器
Protocol过滤器可设置需需要过滤的协议。这个过滤同样在图1中可以设置。
图4 Protocol过滤器
在图2中,可以添加and(必须同时满足)、or(满足其一即可)类型的过滤器。点击and或or,弹出如下菜单:
图5 添加过滤条件
在弹出菜单中,有多种过滤器可选择,常见的是使用Value、Pattern、Length方式的过滤器,可分别用来过滤满足指定值、模式、长度的数据包。下面一一说明。
Value过滤器设置:
图6 value过滤器设置
Length指明需要过滤的值的长度(按字节),offset指明该值在数据包中的偏移位置(按字节),Mask是掩码,Signed说明值是否是带符号的,Network byte order为缺省选项,可不修改。Operator指明需要过滤的值与value之间的大小关系,一般就是”等于“了。Value值就是需要过滤的数值。
图7是一一个断开连接tcp的数据包。我们需要分析改TCP协议数据包中的tcp flags值,来判断该数据包是用于建立tcp连接,还是断开tcp连接。在本例中,我们的目的是过滤出所有断开tcp连接的数据包。通过分析,得知当tcp flags值是20时,表明它一个断开连接的数据包。tcp flags在数据包中的偏移量是47,长度是1字节。根据这些信息,我们在图6所示编辑框中填写相关选项值。
图7 TCP数据包
Length过滤器可用来过滤指定长度的数据包,如图8所示:
图8 Length过滤器
上图指定了需要过滤的数据包长度是介于64字节到1518字节之间。如果想指定长度为64字节的数据包,则Minmum length和Maximum length均为64。
如果想指明过滤的数据包不能满足某些条件,则可以在进阶设置里,选择某个过滤条件然后点击not按钮。如下图。
图9 not条件
完成设计后,点击OK按钮。
3、应用过滤器
设置完成过滤器后,点击display filter按钮,打开,如下图10:
图10 显示过滤器
点击图10所示display filter按钮后,弹出如图11所示的菜单。点击指定过滤器,则Omnipeek按照该过滤器指定的条件,开始对当前捕获的所有数据包进行过滤。
图11 选择需要应用的过滤器
4、分析过滤后的数据包
到现在可以对过滤后的数据包进行一些分析了。Omnipeek本身提供了很多统计功能。
下面12和13是一个统计满足过滤条件的数据包总数的示例。
图12 数据包统计
图13 数据包统计
参考: