抓包工具Wireshark过滤规则实践第一篇

引子

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

题外话

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

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

本文根据wireshark1.12编写。

wireshark过滤器简要介绍

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

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

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

1. 直接协议过滤

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

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

2. 值比较过滤

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

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

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

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

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

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可能出现的字符串,最常用的是*/*

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

3. 表达式组合过滤

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

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

举个例子:

注意:在使用!=比较符结合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),有个图可能更好理解:

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

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

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-03-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

怎样用Python给宝宝取个好名字?

每个人一生中都会遇到一件事情,在事情出现之前不会关心,但是事情一旦来临就发现它极其重要,并且需要在很短的时间内做出重大决定,那就是给自己的新生宝宝起个名字。 ...

18310
来自专栏星汉技术

Scala简介和安装

2636
来自专栏全栈工程师成长之路

PHP开发学习笔记(基础篇)

3215
来自专栏崔庆才的专栏

看完这篇文章还会不懂Python装饰器?掐死小编吧

1816
来自专栏大数据学习笔记

sed命令实例

sed命令行格式为: sed [-nefri] 'command 输入文本 常用选项: - -n∶使用安静(silent)模式。在一般 sed 的用法中,...

1809
来自专栏小李刀刀的专栏

Laravel 5.4 及 5.5 中的全新字符串辅助方法

Laravel 5.5 已经确定预计在 2017年 Laravel 欧洲大会上正式发布。这次重大升级,也带来了一些新的字符串相关的辅助方法。 以下介绍一些最近比...

3307
来自专栏企鹅号快讯

phpjiami 数种解密方法

Pwnhub公开赛出了个简单的PHP代码审计题目,考点有两个: 如果说仅为了做出题目拿到flag,这个题目太简单,后台也有数十名选手提交了答案和writeup。...

2067
来自专栏小樱的经验随笔

CTF---Web入门第十题 Once More

Once More分值:10 来源: iFurySt 难度:易 参与人数:4782人 Get Flag:2123人 答题人数:2166人 解题通过率:98%...

2656
来自专栏维C果糖

史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」

自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+...

3406
来自专栏LEo的网络日志

coding感想(二)

3319

扫描关注云+社区