Wireshark过滤规则实践第一篇:显示过滤器

引子

现在从网上看到的一些wireshark过滤规则的介绍,都是比较老一点的,新版本的语法好像有所变化,所以在这里写一篇基于最新的1.12版本的wireshark规则系列。

题外话

毕业后接触过不少和网络相关的东西,开始的时候是视频相关的,后来到无线协议相关,到现在的html,每次都少不了和网络数据包打交道。避免不了接触一些抓包工具,有wirshark,fidder,http-analyzer等,甚至还使用过浏览器自带的网络工具。Fidder,http-analyzer都是针对http、https协议的,所以使用起来就有一定的局限性,wireshark就不一样了,它使用WinPCAP作为接口,直接与网卡进行数据报文交换,保证了数据的完整性。

开头说的废话太多,可能遭到大家的吐槽。So,言归正传,本文先从wireshark的使用说起,之后还会推出几个比较实用的抓包工具的说明,请大家拭目以待。

本文根据wireshark1.12编写。

105544_GNXs_2335664.jpg

图 1

 

wireshark过滤器简要介绍

捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。

105601_VpNr_2335664.jpg

图 2

 

显示过滤器(DisplayFilters):在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。

105612_l7ZS_2335664.jpg

图 3

 

下面我就显示过滤讲一些比较实用的规则,介绍的规则都是用http做举例,其他的协议类似。

1.       直接协议过滤

针对协议的过滤,例如:http、arp、tcp、udp等。这种过滤是最简单的过滤方式,例如我要去抓取某个http请求的数据包,这样最直接,能直接看到网络请求和回复。这种过滤方式直接使用协议名称就可以进行过滤。如果对协议不了解,请看我的另一篇文章,《网络七层模型及各层协议》

105626_LhYX_2335664.jpg

图 4

有的人可能会问,图片中过滤的还http协议的包,怎么还有SSDP的包,你可以百度一下SSDP就知道了。

105652_ch6m_2335664.jpg

图 5

 

 

2.       值比较过滤

值比较使用到协议的属性值。也许有些人要问:什么是协议属性。你可以直接在过滤窗口输入”http.”,wireshark就会自动提示你接下来需要输入的属性值,你将会看到一列属性。

我们可以通过简单的语句来做过滤。例如:

http.accept   注释:表示过滤http协议中存在accept头的包

105704_sbiE_2335664.jpg

图 6

 

使用比较运算符,wireshark提供了六种比较运算符:==,!=,>,>=,<,<=。对应的英文也能实现相同功能,对应关系如下表:

105715_dXJV_2335664.jpg

图 7

 

数字部分可以使用十进制,八进制,十六进制方式。表达样式可供多种选择:

ip.len le 1500

ip.len le 02734

ip.len le 0x436

eth.dst == ff:ff:ff:ff:ff:ff

eth.dst == ff-ff-ff-ff-ff-ff

eth.dst == ffff.ffff.ffff

ip.addr == 129.111.0.0/16

http.request.uri == “http://www.wireshark.org/

 

举个例子:

http.accept == “XXX” 注释:XXX表示accept可能出现的字符串,最常用的是*/*

105733_EVK5_2335664.jpg

图 8

 

其他协议,其他属性类似,大家可以按照上述方式平时多练习,就能熟练记住各个协议的使用场景。

 

3.       表达式组合过滤

说到表达式组合过滤,需要使用到逻辑运算符

105747_zykU_2335664.jpg

图 9

 

使用表达式组合过滤,可以更准确的拿到自己想要的网络包。在使用组合过滤时,必须深刻理解这些符号的含义。

 

举个例子:

105757_TjPo_2335664.jpg

图 10

 

注意:在使用!=比较符结合eth.addr,ip.addr,tcp.port,udp.port等使用时,某些情况下可能无法达到你的预期。

举个例子:

我们经常使用ip.addr == 1.2.3.4来过滤网络包的IP地址中包含1.2.3.4地址的包。那么如何过滤网络数据包中不包含1.2.3.4这个地址的包呢,自然而然我们就会想到使用ip.addr != 1.2.3.4。但是,这个表达式可能不会得到你预期的结果。

这个表达式的含义是:包含名字为ip.addr,但值不等于1.2.3.4数据的包。众所周知,一个网络包中包含两个ip地址:源地址,目的地址。大部分情况下(自己发给自己除外),源地址和目的地址是不同的,那么肯定会满足有一个值不等于1.2.3.4。所以这个过滤表达式没有达到我们的预期。那么该如何写我们想要的表达式呢?

如果想达到我们的期望,应该这么写:!(ip.addr == 1.2.3.4),有个图可能更好理解:

 105808_0uxt_2335664.jpg

图 11

 

今天我就先讲到这里,真正的过滤规则如何使用,需要结合自己的实际。

接下来,还会推出其他过滤工具的讲解,希望大家一起进步。


第一时间获得博客更新提醒,以及更多技术信息分享,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或搜索微信号coder_online即可关注,我们可以在线交流。

转载请注明出处:http://my.oschina.net/u/2335664/blog/391940,谢谢合作!


转载于:https://my.oschina.net/ghost045/blog/391940

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值