Wireshark 的使用与数据分析(三)-- 显示过滤器
有时使用Wireshark会发现默认设置下抓的数据有大量冗余的信息,不能立即找到自己需要的部分。除了之前介绍的捕获过滤器技巧之外,今天所介绍的显示过滤器也是一个非常重要的工具。
3.1显示过滤器
如下图所示,画圈之处就是显示过滤器。与前文介绍的捕获过滤器仅支持协议过滤不同,显示过滤器及支持协议过滤也支持内容过滤。
显示过滤器支持各种网络协议、Comparison operators(比较运算符)、Logical expressions(逻辑运算符)等,其中比较运算符可以使用以下6种:
逻辑运算符可以使用如下4种:
各类网络协议的话可以直接在过滤器中输入即可,例如arp、IP、dns、tftp等等。注意显示过滤器是区分大小写的,如果输入DNS过滤器会显示红色以提示错误。当然,还可以输入其他一些字段来过滤,如下图所示,我任意选择了一个UDP字段Length:40,在Weireshark最下面的状态栏中可以看到这个字段的真正名称是udp.length,可以输入这个字段进行过滤,当然也可以根据实际需要选择字段。
3.2语法错误
实际上在Wireshark的各类过滤器表达式中,如果你输入错误的表达式是可以通过背景色来判断的。当现实过滤器背景为红色时表明此时不能运行;如果是绿色则表语法正确可以运行,需要注意的是Wireshark不会检查逻辑表达式,例如我们输入“http && udp”,我们知道http是基于tcp协议,所以这样理论上是不合理的,但实际上通过了Wireshark的语法检查,只是通常不会有数据包。
还有一种情况,当显示过滤器背景为黄色时,表示该过滤器语法正确但可能不会过滤出用户想要的数据包。如下图示,当在显示过滤器中输入“!=”运算符时会自动触发该颜色。这是为了避免匹配出一个包中的两个字段,ip.addr我们后面会介绍,它会过滤到达或来自这个IPv4地址的数据。
此外还有一点作为补充,有时我们除了这些运算符外也会使用“contains”和“matches”这两个运算符,前者表示“包含”,例如http contains “POST”就表示过滤http协议下的所有POST请求;而后者则表示“匹配”,例如udp matches "Length",显示匹配Length字符串的udp数据。
3.3地址过滤显示
根据地址来过滤其实是我们使用最广泛的一种方式,我们可以借助Wireshark显示过滤器查看一个IP地址、地址范围或是地址范围。需要注意的是在操作符的两边不需要空格,如ip.addr==1.2.3.4和ip.addr == 1.2.3.4是一样的。
·ip.src表示捕获源地址的数据;
·ip.dst表示捕获目标地址的数据;
·ip.addr表示到达或来自某ip地址的数据;
对于IPv6,则将这些字段“ip”改为“ipv6”即可,例如ipv6.src
以ip.addr为例,使用的时候还得遵循如下的语法格式:ip.addr 比较运算符 IP地址
其中比较运算符可以使等于、不等于、大于、小于等等之前提到的那些,其他字段使用方式类似,例如:
·ip.addr == 192.168.1.1:显示ip源地址或是目标地址为192.168.1.1的数据;
·ip.host == www.baidu.com:显示到达或来自www.baidu.com的数据。
此外,如果想显示一个地址范围内的数据,可以使用ip.addr字段结合比较运算符>或<或&&组合,例如:
ip.addr > 192.168.1.1 && ip.addr <192.168.4.1:显示到达或来自192.168.2.1和192.168.3.1的数据。如果想捕获一个子网内的数据,可以结合CIDR(无类别域间路由)来显示。CIDR格式是通过在一个IP地址后面跟了一个分别表示网络位数和子网掩码的斜杠与数字,例如ip.addr==192.168.0.0/16:显示从192.168.0.0开始的源目标地址和目的地址的数据
3.4过滤显示单一的TCP/UDP会话
在实际应用中,当客户端和服务器端进行报文交互时,往往会有大量的TCP会话建立传输或是关闭,我们往往需要快速定位和过滤需要的会话,这里介绍几种方法。
第一个是使用对话过滤器(Conversation Filter),我们可以在Packet List面板中右键单击任意一个包,选择对话过滤器为TCP,可以看到Wireshark使用一段命令过滤出了数据,我们可以使用相同的方法过滤基于IP地址或是其他会话。
另一个我比较常用的是“追踪流(Follow TCP/UDP Stream)”的命令,可以看到点击追踪流之后,Wireshark会创建一个基于该包的过滤器,同时还会显示一个单独的窗口来展示详细信息。本例中是tcp.stream eq 10(画圈处),更改数字10,还可以得到其他编号的包,可以尝试一下。
今天就到这里,当然显示过滤器还会有其他一些例如关键字、括号、逻辑运算符的使用方法,我们下次再聊吧。
版权声明: 本文为 InfoQ 作者【姬翔】的原创文章。
原文链接:【http://xie.infoq.cn/article/f08c53476ccc703c8bf5b4c72】。文章转载请联系作者。
评论