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

在wireshark3.x版本,打开捕获过滤器方法如下:

三、Wireshark 显示过滤器

显示过滤器表达式浸染在在wireshark捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐蔽不符合条件的数据包。

php淘宝数据包Wireshark应用教程抓包捕捉/显示过滤器表达式追踪流 GraphQL

管理显示过滤器如下图:

显示过滤表达示在工具栏下方的“显示过滤器”输入框输入即可生效。

四、Wireshark 表达式

再给大家说下表达式的语法,无论是捕获过滤器还是显示过滤器都可以用。

捕获过滤器表达式

语法:

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

解释:

Protocol(协议):ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。
Direction(方向):src, dst,srt,src and dst, src or dst等,如果没指明方向,则默认利用 “src or dst” 作为关键字。
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”)具有相同的优先级,运算时从左至右进行。

常见利用的捕获过滤器表达式

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。

2、 只捕获某主机的所有流量

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

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

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流量

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要求。

5、只捕获特定端口的流量

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

port 5060 #捕获sip流量,由于sip的默认端口是5060。
举一反三:port 22 #捕获ssh流量

6、捕获电子邮件的流量

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

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

7、捕获vlan 的流量

vlan #捕获所有vlan 的流量

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

8、捕获 PPPoE 流量

pppoes #捕获所有的pppoes流量

pppoes and (host 192.168.5.231 and port 80) #捕获主机

如果要捕获某种协议的流量,可以考试测验捕获该端口的流量,请查看端口知识:

https://svn.nmap.org/nmap/nmap-services

显示过滤器表达式

一条基本的表达式由过滤项、过滤关系、过滤值三项组成。

比如ip.addr == 192.168.1.1,这条表达式中ip.addr是过滤项、==是过滤关系,192.168.1.1是过滤值(整条表达示的意思是找出所有ip协议中源或目标ip、即是、192.168.1.1的数据包)

1、过滤项

初学者觉得的“过滤表达式繁芜”,最紧张便是在这个过滤项上:一是不知道有哪些过滤项,二是不知道过滤项该怎么写。
wireshark的过滤项是“协议“+”.“+”协议字段”的模式。

以端口为例,端口涌现于tcp协议中以是有端口这个过滤项且其写法便是tcp.port。

推广到其他协议,如eth、ip、udp、http、telnet、ftp、icmp、snmp等等其他协议都是这么个书写思路。
当然wireshark出于缩减长度的缘故原由有些字段没有利用协议规定的名称而是利用简写(比如Destination Port在wireshark中写为dstport)又出于简利用增加了一些协议中没有的字段(比如tcp协议只有源端口和目标端口字段,为了简便利用wireshark增加了tcp.port字段来同时期表这两个),但思路总的算是不变的。
而且在实际利用时我们输入“协议”+“.”wireshark就会有支持的字段提示(特殊是过滤表达式字段的首字母和wireshark在上边2窗口显示的字段名称首字母常日是一样的),看下名称就大概知道要用哪个字段了。

wireshark支持的全部协议及协议字段可查看:https://www.wireshark.org/docs/dfref/

2、 过滤关系

过滤关系便是大于、小于、即是等几种等式关系,我们可以直接看官方给出的表。

把稳个中有“English”和“C-like”两个字段,这个意思是说“English”和“C-like”这两种写法在wireshark中是等价的、都是可用的。

3、过滤值

过滤值便是设定的过滤项该当知足过滤关系的标准,比如500、5000、50000等等。
过滤值的写法一样平常已经被过滤项和过滤关系设定好了,只是填下自己的期望值就可以了。

复合过滤表达示

所谓复合过滤表达示,便是指由多条基本过滤表达式组合而成的表达示。
基本过滤表达式的写法还是不变的,复合过滤表达示多出来的东西就只是基本过滤表达示的“连接词”

我们依然直接参照官方给出的表,同样“English”和“C-like”这两个字段还是解释这两种写法在wireshark中是等价的、都是可用的。

常见用显示过滤需求及其对应表达式的示例

数据链路层:

筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

网络层:

筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1

筛选192.168.1.0网段的数据---- ip contains "192.168.1"

筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2

筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

传输层:

筛选tcp协议的数据包----tcp

筛选除tcp协议以外的数据包----!tcp

筛选端口为80的数据包----tcp.port == 80

筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80

筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80

运用层:

特殊解释----http中http.request表示要求头中的第一行(如GET index.jsp HTTP/1.1),http.response表示相应头中的第一行(如HTTP/1.1 200 OK),其他头部都用http.header_name形式。

筛选url中包含.php的http数据包----http.request.uri contains ".php"

筛选内容包含username的http数据包----http contains "username"

五、Wireshark追踪TCP流

总结:

为了安全考虑,wireshark只能查看封包,而不能修正封包的内容,或者发送封包。

Wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,以是wireshark看不懂HTTPS中的内容。
如果是处理HTTP、HTTPS 还是建议大家用Fiddler, 其他协议比如TCP、UDP等等就可以直策应用Wireshark。