接着上篇:wireshark 捕捉过滤器基本法说说显示过滤器的用法
显示过滤器语法
-
Protocol(协议) 使用大量位于OSI模型第2至7层的协议。比如:IP,TCP,DNS,SSH
-
String1, String2 (可选项) 协议的子类。
-
Comparison operators (比较运算符)
英文写法 | C语言写法 | 含义 |
---|---|---|
eq | == | 等于 |
ne | != | 不等于 |
gt | > | 大于 |
lt | < | 小于 |
ge | >= | 大于等于 |
le | <= | 小于等于 |
- Logical expressions(逻辑运算符)
英文写法 | C语言写法 | 含义 |
---|---|---|
and | && | 逻辑与 |
or | || | 逻辑或 |
xor | ^^ | 逻辑异或 |
not | ! | 逻辑非 |
例子
针对ip的过滤
ip.src == 192.168.0.1
对源地址进行过滤ip.dst == 192.168.0.1
对目的地址进行过滤ip.addr == 192.168.0.1
对源地址或者目的地址进行过滤!(ip.addr == 192.168.0.1)
如果想排除以上的数据包,只需要将其用括号囊括,然后使用 "!" 即可
针对协议的过滤
-
http
获取http协议的数据包 -
http or telnet
获取http或者telnet协议的数据包 -
not arp
或者!tcp
排除某种协议的数据包 -
snmp || dns || icmp
显示SNMP或DNS或ICMP封包。 -
ip.addr == 10.1.1.1
显示来源或目的IP地址为10.1.1.1的封包。 -
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6
显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。 -
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6
显示来源不为10.1.2.3并且目的不为10.4.5.6的封包。 -
tcp.port == 25
显示来源或目的TCP端口号为25的封包。 -
tcp.dstport == 25
显示目的TCP端口号为25的封包。 -
tcp.flags
显示包含TCP标志的封包。 -
tcp.flags.syn == 0x02
显示包含TCP SYN标志的封包。
针对端口的过滤(视传输协议而定)
tcp.port == 80
捕获80端口的TCP数据包。udp.port >= 2048
捕获大于或等于2048端口的UDP数据包。
针对长度和内容的过滤
udp.length < 20
或http.content_length <=30
针对数据段长度进行过滤
针对http请求的一些过滤实例。
http.request.uri matches "user"
针对uri 内容的过滤(请求的uri中包含“user”关键字的),注意:matches 后的关键字是不区分大小写的!http.request.uri contains "User"
(请求的uri中包含“user”关键字的),注意:contains 后的关键字是区分大小写的!http.host==baidu.com
精确过滤域名http.host contains "baidu"
模糊过滤域名http.request.full_uri=="www.mydomain.com/projectname/a.html"
过滤全地址(它与uri的区别是,包含host)http.content_type =="text/html"
过滤请求的content_type类型http.request.method=="POST"
过滤http请求方法tcp.port==80
过滤tcp协议的80端口http && tcp.port==80 or tcp.port==5566
过滤http请求而且端口号为80的数据包,或者tcp端口号为5566的数据包http.response.code==302
过滤302的http响应状态码http.cookie contains "userid"
过滤含有指定cookie的http数据包
参考: https://www.shuzhiduo.com/A/1O5EZ2qrd7/#2%E3%80%81%E6%98%BE%E7%A4%BA%E8%BF%87%E6%BB%A4%E5%99%A8 https://markrepo.github.io/tools/2018/06/25/Wireshark/