WIRESHARK 实用过滤表达式 (针对 IP, 协议, 端口, 长度和内容) https://www.cnblogs.com/yuhuameng/p/5871443.html
Posted on 2016-09-14 12:47 雨花梦 阅读 (32344) 评论 (0) 编辑 收藏
首先说几个最常用的关键字,"eq" 和 "==" 等同, 可以使用 "and" 表示并且,"or" 表示或者."!" 和 "not" 都表示取反.
一, 针对 wireshark 最常用的自然是针对 IP 地址的过滤. 其中有几种情况:
(1) 对源地址为 192.168.0.1 的包的过滤, 即抓取源地址满足要求的包.
表达式为: ip.src == 192.168.0.1
(2) 对目的地址为 192.168.0.1 的包的过滤, 即抓取目的地址满足要求的包.
表达式为: ip.dst == 192.168.0.1
(3) 对源或者目的地址为 192.168.0.1 的包的过滤, 即抓取满足源或者目的地址的 ip 地址是 192.168.0.1 的包.
表达式为: ip.addr == 192.168.0.1, 或者 ip.src == 192.168.0.1 or ip.dst == 192.168.0.1
(4) 要排除以上的数据包, 我们只需要将其用括号囊括, 然后使用 "!" 即可.
表达式为:!(表达式)
二, 针对协议的过滤
(1) 仅仅需要捕获某种协议的数据包, 表达式很简单仅仅需要把协议的名字输入即可.
表达式为: http
(2) 需要捕获多种协议的数据包, 也只需对协议进行逻辑组合即可.
表达式为: http or telnet (多种协议加上逻辑符号的组合即可)
(3) 排除某种协议的数据包
表达式为: not arp !tcp
三, 针对端口的过滤 (视协议而定)
(1) 捕获某一端口的数据包
表达式为: tcp.port == 80
(2) 捕获多端口的数据包, 可以使用 and 来连接, 下面是捕获高端口的表达式
表达式为: udp.port>= 2048
四, 针对长度和内容的过滤
(1) 针对长度的过虑 (这里的长度指定的是数据段的长度)
表达式为: udp.length < 30 http.content_length <=20
(2) 针对数据包内容的过滤
表达式为: http.request.uri matches "vipscu" (匹配 http 请求中含有 vipscu 字段的请求信息)
通过以上的最基本的功能的学习, 如果随意发挥, 可以灵活应用, 就基本上算是入门了. 以下是比较复杂的实例 (来自 wireshark 图解教程):
tcp dst port 3128
显示目的 TCP 端口为 3128 的封包.
ip src host 10.1.1.1
显示来源 IP 地址为 10.1.1.1 的封包.
host 10.1.2.3
显示目的或来源 IP 地址为 10.1.2.3 的封包.
src portrange 2000-2500
显示来源为 UDP 或 TCP, 并且端口号在 2000 至 2500 范围内的封包.
not imcp
显示除了 icmp 以外的所有封包.(icmp 通常被 ping 工具使用)
src host 10.7.2.12 and not dst.NET 10.200.0.0/16
显示来源 IP 地址为 10.7.2.12, 但目的地不是 10.200.0.0/16 的封包.
(src host 10.4.1.12 or src.NET 10.6.0.0/16) and tcp dst portrange 200-10000 and dst.NET 10.0.0.0/8
显示来源 IP 为 10.4.1.12 或者来源网络为 10.6.0.0/16, 目的地 TCP 端口号在 200 至 10000 之间, 并且目的位于网络 10.0.0.0/8 内的所有封包.
来源: http://www.bubuko.com/infodetail-3097135.html