抓包工具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 条评论
登录 后参与评论

相关文章

来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来 前情回顾 在上一篇博文《Vue2+VueRou...

19710
来自专栏练小习的专栏

使用自定义标记来构建页面

在用html5来搭建页面的时候,为了兼容不支持html5标记的浏览器,需要把html5标记全部createElement一遍。

2106
来自专栏Create Sun

mvc+webapi 项目架构

首先项目是mvc5+webapi2.0+orm-dapper+ef codefirst+redis+quartz.net+actionmq。 1.项目框架层次结...

36516
来自专栏赵康的专栏

在Atom中配置Python开发环境

当然,这里有很多很棒的文本编辑器。例如Sublime Text, Brackets, Atom。我一直都是Atom的粉丝,因为它是完全免费的,而且它有很多可用的...

52713
来自专栏大数据钻研

一个基于Java的开源URL嗅探器

这是一个可以检测并规范化文本中的URL地址的Java库。 ? 今天,我们很高兴做一个分享,因为我所在的 Linkedin 公司 开源了我们做的一个ULR探测工具...

35611
来自专栏编程

Python教程2

前言 有关标准对象和模块的说明,请参阅Python标准库(https://docs.python.org/3/library/index.html#librar...

1689
来自专栏Crossin的编程教室

【Python 第62课】 调试程序

写代码,不可避免地会出现bug。很多人在初学编程的时候,当写完程序运行时,发现结果与自己预料中的不同,或者程序意外中止了,就一时没了想法,不知道该从何下手,只能...

2629
来自专栏F-Stack的专栏

FreeBSD下的工具(sysctl、netstat等)如何移植到F-Stack

F-Stack基于DPDK,绕过内核的协议栈,移植了FreeBSD协议栈到用户态,在大幅提高性能的同时,常规网络设置分析工具(如sysctl、netstat、i...

2838

在Atom中设置Python开发环境

当然,网络上有很多很棒的文本编辑器。Sublime Text,Bracket,Atom等。就我个人而言,我一直都是Atom的粉丝,因为它是完全免费的,并且它有...

3598
来自专栏大数据文摘

手把手 | 范例+代码:一文带你上手Python网页抓取神器BeautifulSoup库

1673

扫码关注云+社区