热搜词
发表于 2022-1-28 08:52:07 | 显示全部楼层 |阅读模式
我们都知道,wireshark可以实现本地抓包,但是各种协议的流量非常巨大,如果我们捕获所有协议的流量,那么数小时内,捕获到的流量将到达几百M,甚至几G。硬盘空间很快就被填满了。所以很有必要,只捕获特定的流量或者不捕获某些流量而捕获其他所有的流量。

一、说明
wireshark有两种过滤器:
捕获过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。
显示过滤器(DisplayFilters):用于在捕捉结果中进行详细查找。

捕获过滤器在抓抱前进行设置,决定抓取怎样的数据;显示过滤器用于过滤抓包数据,方便stream的追踪和排查。

捕获过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。

需要注意的是,这两种过滤器所使用的语法是完全不同的,本文将介绍捕获过滤器。


使用捕获过滤器的主要原因就是性能。如果你知道并不需要分析某个类型的流量,那么可以简单地使用捕获过滤器过滤掉它,从而节省那些会被用来捕获这些数据包的处理器资源。当处理大量数据的时候,使用捕获过滤器是相当好用的。

二、界面
新版Wireshark的初始界面非常简洁,主要就提供了两项功能:先设置捕获过滤器,然后再选择负责抓包的网卡。由此可见捕获过滤器的重要性。
捕获1.png

比如我们希望只抓取与80端口之间的通信,那么可以设置过滤规则“port 80”,如下图。
捕获2.png

三、捕获过滤器表达式
捕获过滤器表达式作用在wireshark开始捕获数据包之前,只捕获符合条件的数据包,不记录不符合条件的数据包。
捕获3.png

四、捕获过滤器语法规则
捕获过滤器表达式没有像显示过滤器表达式那样明显的规律,但写法不多所以也不难;而且除非全部捕获要占用的磁盘空间实现太大,且你非常明确过滤掉的数据包是你不需要的,不然一般都不用捕获过滤器表达式而用显示过滤器表达式。

在wireshark2.x版本,启动后欢迎界面即有捕获过滤器,在其中输入过滤表达式开始捕获数据包时即会生效:

捕获过滤器应用于Winpcap,并使用Berkeley Packet Filter(BPF)语法,其语法规则如下:

语法:<Protocol>  <Direction>  <Host(s)>  < Value>  < Logical  Operations>   <Other expression>

字段详解:
Protocol(协议):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没指明协议类型,则默认为捕捉所有支持的协议。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的协议。

Direction(方向):
可能值: src, dst, src and dst, src or dst
如果没指明方向,则默认使用 “src or dst” 作为关键字。
host 10.2.2.2 与 src or dst host 10.2.2.2 等价。

Host(s):
可能值: net, port, host, portrange.
默认使用”host”关键字,”src 10.1.1.1″与”src host 10.1.1.1″等价。

Logical Operations(逻辑运算):
可能值:not, and, or.
否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。
“not tcp port 3128 and tcp port 23″与”(not tcp port 3128) and tcp port 23″等价。
“not tcp port 3128 and tcp port 23″与”not (tcp port 3128 and tcp port 23)”不等价。

五、常见使用的捕获过滤语句

1.1 只(不)捕获某主机的HTTP流量

host 192.168.5.231 and port 80 and http#只捕获主机192.168.5.231 的http流量。注意如果你的HTTP端口为8080,把80 改为8080。

port 80 and http#捕获所有经过该接口的http流量。注意如果你的HTTP端口为8080,把80 改为8080。

host 192.168.5.231 and not port 80# 捕获主机192.168.5.231除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

not port 80 # 捕获除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

not port 80 and !http## 捕获除 http 之外的其他所有流量,注意如果你的HTTP端口为8080,把80 改为8080。

1.2  只捕获某主机的所有流量
如果我们希望抓取某台特定主机或设备的数据包,那么可以根据设备的IP地址或MAC地址来设置过滤规则。

host 192.168.5.231  #捕获源地址和目的地址均为192.168.5.231是数据包

dst 192.168.5.231  #捕获目的主机为192.168.5.231的数据包

src 192.168.5.231  #捕获来源主机为192.168.5.231的数据包

ether host 00-50-56-C0-00-01  #捕获指定MAC地址的数据包

ether src host 00-50-56-C0-00-01  #捕获源地址为 00-50-56-C0-00-01 的数据包

ether dst host 00-50-56-C0-00-01  #捕获目地地址为 00-50-56-C0-00-01 的数据包

net 192.168.5.0/24  #捕获网段为 192.168.5 的所有主机的所有流量

需要注意的是,host在表达式中是默认选项,因而上面的这几个表达式无论是否加上host都是表达相同含义。

1.3 只捕获某主机的DNS流量

host 192.168.5.231 and port 53 # 只捕获主机192.168.5.231 的dns流量。

src 192.168.5.231 and port 53  #只捕获主机192.168.5.231 对外的dns 的流量。

dst 192.168.5.231 and port 53 #只捕获dns服务器相应主机192.168.5.231的dns流量。

port 53          #捕获接口中的所有主机的dns流量

1.4 只(不)捕获APR流量

host 192.168.5.231 and arp#只捕获主机192.168.5.231 的arp流量。

host 192.168.5.231 and !arp #只捕获主机192.168.5.231 除arp外的所有流量。

arp#捕获接口中的所有arp请求

!arp #捕获接口中所有非arpq请求。

1.5 只捕获特定端口的流量

tcp portrange 8000-9000 an port 80    #捕获端口8000-9000之间和80端口的流量

port 22   #捕获ssh流量,因为ssh的默认端口是5060。

port 8080 //只捕获8080端口的流量

!port 8080 //捕获8080端口外的所有流量

dst port 8080 //只捕获前往8080端口的流量

1.6 捕获电子邮件的流量

host 192.168.5.231 and port 25      # 捕获主机192.168.5.231 的POP3协议的流量。

port 25 and portrange 110-143 #因为电子邮件的协议:SMTP、POP3、IMAP4,所以捕获端口的流量。

1.7 捕获vlan 的流量

vlan #捕获所有vlan 的流量

vlan and (host 192.168.5.0 and port 80)#捕获vlan 中主机192.168.5.0 ,前提是有vlan,在wifi中不一定可以捕获到相应的流量,局域网(公司,学校里面的网络应该有vlan)

1.8 捕获 PPPoE 流量

pppoes #捕获所有的pppoes流量
pppoes and (host 192.168.5.231 and port 80)  #捕获主机

全部评论1
灰儿 发表于 2022-1-29 14:05:02 | 显示全部楼层
http://www.admin365.cn/thread-46002-1-1.html   Wireshark显示过滤器表达式及其书写规则、常用过滤命令
回复

使用道具 举报

回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-23 21:26 , Processed in 0.178796 second(s), 25 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team