Wireshark的两种过滤器与BPF过滤规则

2023-11-03

Wirshark使用的关键就在于过滤出想要的数据包,下面介绍怎么过滤。

抓包过滤器

Wirshark有两种过滤器,一个是抓包过滤器,一个是显示过滤器,他们之间的区别在于抓包过滤器只抓取你设置的规则,同时丢弃其他信息,显示过滤器并不会丢弃信息,只是将不符合规则的数据隐藏起来而已。有时候一旦数据包被丢弃,这些数据包就无法在恢复回来。还有一个区别就是,捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的。

两种过滤器的目的也是不同的:
捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。
显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。

说完区别,他们也是有共同点的,就是都遵循BPF语法。看到这里,你可能大概就能知道wireshark的套路了,想用好他,熟练的使用BPF是关键,下面只是介绍了两种过滤的流程,跟着步骤,谁都能完成特定的效果。但是给你一个新任务,你是否能快速过滤出想要的数据包呢?
102_1.png

使用演示

1、 添加一条自定义的抓包规则
102_2.png
2、 选择自定义的抓包规则
102_3.png

技巧_只抓协议头部参数的抓包过滤器

先看一个ICMP协议发包的特征,

1、 发包
102_4.png
2、 分析
你会发现每一条数据包的这个位置都是00
102_5.png
3、 解释
知道协议的头部都是固定这个特征之后,我们就能完成一个根据协议头部字段的参数来自定义抓包过滤器,创建这类抓包过滤器的语法为:

proto[offset:size(optional)]=value

语法对应的示意图:
102_6.png

icmp[0:1]=0

这样就完成了一个只抓取ICMP响应的抓包过滤器规则,我实验过了,只能抓包ICMP的包。
102_7.png

1、 常用只抓协议头的抓包过滤器规则

抓包过滤器规则 描述
icmp[0]=0 ICMP响应包
icmp[0:1]=8 ICMP请求包
icmp[0:1]=3、icmp[13]=2 ICMP目的主机不可达数据包,仅抓取TCP SYN标记的数据包
icmp[13]=18 仅抓取TCP SYN/ACK标记的数据包
icmp[13]=32 仅抓取TCP URG标记设置数据包

抓包过滤器语法规则解释

语法规则图示:
102_8.png

名词解释:

  • Protocol(协议)
    常用值: etherfddiiparprarpdecnetlatscamoprcmopdltcp and udp
    如果没有特别指明是什么协议,则默认使用所有支持的协议。
  • Direction(方向)
    常用值: srcdstsrc and dstsrc or dst
    如果没有特别指明来源或目的地,则默认使用 “src or dst” 作为关键字。
    例如:
"host 10.2.2.2" 与 "src or dst host 10.2.2.2" 相同 
  • Host(s):
    常用值: net、 porthostportrange
    如果没有指定此值,则默认使用”host”关键字。
    例如:
"src 10.1.1.1" 与 "src host 10.1.1.1" 相同
  • Logical Operations(逻辑运算):
    常用值值:notandor
    否(“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)" 不同

常见的抓包过滤器BPF

来源或目的地是指定地址的包
host 192.168.0.123
host www.taobao.com


范围内的包
net 192.168.0.0/24
or
net 192.168.0.0 mask 255.255.255.0


抓取目的地是某范围的包
dst net 192.168.0.0/24
or
dst net 192.168.0.0 mask 255.255.255.0


抓取来源是某范围的包
src net 192.168.0.0/24
or
src net 192.168.0.0 mask 255.255.255.0


仅抓取DNS(端口是53)的包
port 53
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内的所有封包。

显示过滤器

使用演示

在这里输入过滤语法,必须正确才会显示绿色。
102_9.png

显示过滤器语法规则解释

语法图示:
102_10.png

名词解释:

  • Protocol(协议)
    您可以使用大量位于OSI模型第2至7层的协议。(wireshark支持的协议介绍 https://www.wireshark.org/docs/dfref/)
    常用值: IPTCPDNSSSH
  • String1, String2 (可选项)
    协议的子类。
    点击相关父类旁的”+”号,然后选择其子类
  • Comparison operators (比较运算符)
    可以使用6种比较运算符
    102_11.png
  • Logical expressions(逻辑运算符)
    102_12.png
    举例:
    “tcp.dstport 80 xor tcp.dstport 1025”
    只有当目的TCP端口为80或者来源于端口1025(但又不能同时满足这两点)时,这样的封包才会被显示。

常见的显示过滤器BPF

只显示本地发出去的包
ip.src==192.168.8.60


过滤从某地址发出的请求
ip.src==192.168.8.60


过滤发送到某地址的请求
ip.dst==192.168.8.60


过滤http协议
http


过滤某地址
http.request.uri=="/projectname/a.html"


过滤全地址(它与uri的区别是,包含host)
http.request.full_uri=="www.mydomain.com/projectname/a.html"
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:除了10.1.2.3以外任意;目的IP:任意
以及
来源IP:任意;目的IP:除了10.4.5.6以外任意

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6
显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。
换句话说,显示的封包将会为:
来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意

tcp.port == 25  显示来源或目的TCP端口号为25的封包。
tcp.dstport == 25   显示目的TCP端口号为25的封包。
tcp.flags   显示包含TCP标志的封包。
tcp.flags.syn == 0x02   显示包含TCP SYN标志的封包。

Find文本匹配器

流量面板文本搜索

ctr + f 弹出搜索框
102_13.png

并且支持这几种匹配模式
102_14.png

Stream文本搜索

102_15.png
这里只支持普通的文本搜索;
102_16.png

总结_注意事项

  • 写表达式时关键字要转义
当使用关键字作为值时,需使用反斜杠“\”
"ether proto \ip" (与关键字"ip"相同).
这样写将会以IP协议作为目标。

"ip proto \icmp" (与关键字"icmp"相同).
这样写将会以ping工具常用的icmp作为目标。

可以在"ip"或"ether"后面使用"multicast"及"broadcast"关键字。
当您想排除广播请求时,"no broadcast"就会非常有用。
  • 辅助生存表达式
    mac os版打开的方式
    102_17.png
    遇到一些陌生协议,想要写表达式的时候,可以打开这个工具,它把所有协议的参数选项,可用符号都列举出来了,在没有思路的时候,是个辅助好工具。
    102_18.png

参考

https://biot.com/capstats/bpf.html
https://wiki.wireshark.org/CaptureFilters
https://openmaniak.com/cn/wireshark_filters.php
https://staight.github.io/2018/07/25/BPF过滤规则/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Wireshark的两种过滤器与BPF过滤规则 的相关文章

  • 利用wireshark对TCP抓包分析

    抓包结果已上传可免费下载对应观看 wireshark抓包结果 一 流程梳理 我的机子192 168 1 131简称A与服务端机子223 166 138 30简称B先三次握手建立TCP连接 再进行HTTP请求 最后四次挥手断开TCP连接 1
  • Chrome 和 Chromium 区别

    Chromium Chromium 官网 https www chromium org Chromium 源码 https github com chromium chromium Chromium是谷歌的开源项目 由开源社区维护 拥有诸多
  • Wireshark中lua脚本介绍

    Wireshark中lua脚本介绍 概述 Wireshark是非常强大的报文解析工具 是网络定位中不可缺的使用工具 在物联网中很多为自定义协议 wireshark无法解析 此时lua脚本就有了用武之地 Lua是一个脚本语言 不需要编译可以直
  • Wireshark网络抓包工具下载和安装(2023)

    一 Wireshark的下载 下载网址 https www wireshark org download html 也可以阿里网盘自取 wiresharkhttps www aliyundrive com s c4qeGBQMfwj提取码
  • wireshark怎么抓包和详细图文教程

    wireshark是非常流行的网络封包分析软件 功能十分强大 可以截取各种网络封包 显示网络封包的详细信息 使用wireshark的人必须了解网络协议 否则就看不懂wireshark了 为了安全考虑 wireshark只能查看封包 而不能修
  • linux下libpcap抓包分析

    linux下libpcap抓包分析 一 首先下载libpcap包http www tcpdump org latest release 然后安装 安装完成后进入安装根目录的tests文件夹 编译运行findalldevstest c 编译时
  • ubuntu 18.04安装wireshark及网卡接口权限问题

    1 安装 sudo apt fast install wireshark 第一次安装过程中可能会提示Should non superusers be able to capture packets 选是即可 默认是否 2 待安装成功后 你会
  • wireshark 实用过滤表达式

    wireshark 实用过滤表达式 针对ip 协议 端口 长度和内容 1 关键字 与 eq 和 等同 可以使用 and 表示并且 或 or 表示或者 非 和 not 都表示取反 多组条件联合过滤数据包的命令 就是通过每个单个的条件命令与关键
  • LINUX上wireshark无权限问题

    1 查找dumpcap目录 sudo find name dumpcap 2 增加wireshark组 sudo groupadd wireshark 3 将dumpcap目录权限给于wireshark组 并给于相关权限 sudo chgr
  • Wireshark抓包及DNS报文分析

    Wireshark抓包及DNS报文分析 来来来 点我进行5分钟视频学习 冲冲冲 一 抓包整体描述 第一行 帧Frame 2 指的是要发送的数据块 其中 所抓帧的序号为2 捕获字节数等于传送字节数 696字节 第二行 以太网 有线局域网技术
  • Chrome 和 Firefox CORS AJAX 调用在某些 Mac 计算机上中止

    我们有一个网页 www saddleback com live Chrome 和 Firefox CORS AJAX 调用在某些 Mac 计算机上会中止 在装有 OSX 10 9 最新更新 Chrome 和 Firefox 最新更新 的 M
  • 如何自动测量两台主机之间的带宽使用情况

    我有一个具有 TCP 客户端和服务器的应用程序 我在不同的机器上设置客户端和服务器 现在我想测量消耗了多少带宽 在应用程序的单次运行期间发送和接收的字节数 我发现wireshark就是这样一个可以帮助我获得统计数据的工具 然而 wiresh
  • 推荐好用的XSS漏洞扫描利用工具

    工具介绍 toxssin 是一种开源渗透测试工具 可自动执行跨站脚本 XSS 漏洞利用过程 它由一个 https 服务器组成 它充当为该工具 toxin js 提供动力的恶意 JavaScript 有效负载生成的流量的解释器 安装与使用 1
  • 推荐好用的XSS漏洞扫描利用工具

    工具介绍 toxssin 是一种开源渗透测试工具 可自动执行跨站脚本 XSS 漏洞利用过程 它由一个 https 服务器组成 它充当为该工具 toxin js 提供动力的恶意 JavaScript 有效负载生成的流量的解释器 安装与使用 1
  • 使用 tshark 过滤 VoIP 呼叫

    我正在分析网络上的 VoIP 呼叫 目前我正在使用生成的 pcap 文件 但稍后我将实时监听该文件 我正在使用 tshark 我可以很容易地从 pcap 中过滤一些重要数据 例如 源 ip 地址和端口 目标 ip 地址和端口 有效负载 pc
  • Wireshark/tshark 中的 2 通道过滤器

    选项 Y 2 and R in tshark迷惑我很久了 看完说明书我才知道 Y用于单通滤波器和 2在 2 遍过滤器中 如果我们在第 1 遍过滤器结束之前无法获取一些信息 但我还是不明白有什么区别 2 Y blabla and 2 R ba
  • 使用 libwireshark 以编程方式获取 Wireshark 功能

    如果我想编写一个使用 Wireshark 功能的脚本 我会使用 tshark 我听说还有一个 libwireshark 可以在用 C 编写程序时使用 但是我一生都找不到any其文档 我尝试隔离wireshark源树中的库代码 但似乎代码组织
  • 如何在 OSX Catalina (10.15) 中使用 Wireshark 捕获 USB 流量

    我正在尝试让 Wireshark USB 捕获工作 显然 Catalina 之前的技巧就是调出界面 以便 Wireshark 可以看到它 https forums developer apple com thread 95380 https
  • 如何从wireshark复制捕获的数据包的十六进制数据

    这是例子 这是捕获的数据包数据 00000000 00 6e 0b 00 n 00000004 4d 5a e8 00 00 00 00 5b 52 45 55 89 e5 81 c3 81 MZ REU 00000014 12 00 00
  • 如何捕获远程系统网络流量?

    我一直在使用wire shark来分析socket程序的数据包 现在我想看看其他主机的流量 因为我发现我需要使用只有Linux平台支持的监控模式 所以我尝试了但我无法捕获在我的网络中传输的任何数据包 列为捕获的 0 个数据包 设想 我有一个

随机推荐

  • Hibernate学习(2)- hibernate.cfg.xml详解

    1 主配置文件主要分为三部分 注意 通常情况下 一个session factory节点代表一个数据库 1 1 第一部分 数据库连接部分 注意 hibernate connection driver class 中间的 1 2 第二部分 其他
  • LintCode 202. Segment Tree Query (线段树经典题!)

    Segment Tree Query 中文English For an integer array index from 0 to n 1 where n is the size of this array in the correspon
  • 玩转ChatGPT:视频制作

    一 写在前面 最近 在码深度学习图像识别的相关知识和代码 这一part 看看能否用小Chat搞一个介绍视频 简单问小Chat 咒语 我怎么使用你做一个视频 需要配合什么软件生成 大意就是 惊呆了 这不是我想要的 还是先半自动 后全自动吧 二
  • flink启动报错Failed to construct kafka producer

    flink local模式下启动 sink2kafka报错 具体报错如下 apache kafka common KafkaException Failed to construct kafka producer at org apache
  • python谁是卧底、猜词语

    python谁是卧底 谁是卧底也是深受很多人喜欢的游戏 起码要三人以上才能玩 大致分为几个阶段 1 分配平民词语和卧底词语 gt 2 玩家依次发言 gt 3 根据发言投票认为谁是卧底 gt 4 得到票数最多的玩家出局 gt 5 出局玩家刚好
  • 网络安全—攻防

    招聘需求 尝试通过收集招聘平台的相关职业岗位描述DJ 进行相关方面能力学习 攻防安全 认证 TCSP证书 CISM证书 CISP证书 CISSP证书 CISP PTE证书 CISP DSG证书 CISP A证书 CISD证书 CCSRP证书
  • 2020-10-14 KIBANA7 配置(搜索、可视化组件和仪表板)导出导入

    需求描述 线上Kibana的可视化图表跟仪表盘配置意外丢失了 还好测试环境有相同的配置 根据Kibana的功能进行配置的导出 gt 导入 避免手工一个一个重新配置的繁琐跟配置错误疏漏等情况 也同时进行下配置文件的导出备份工作 参考资料 官方
  • 好分数阅卷3.0_自考阅卷老师是怎么打分的?

    距离十月自考还有一个月 又到了全国考生转发考神的时间 但还有一招更有用 解密阅卷老师 往年很多同学查分后 都会有这么几个疑问 在答题的时候 感觉每道题都答得不错 为什么分数只有这么点 56 57这种分数 搞不懂老师为什么就不能多给我几分 俗
  • Matlab如何打包成jar并给java使用(混合编程)

    Matlab如何打包成jar并给java使用 由于期末数字图像课程设计需求 使用matlab码好了函数可是没有界面 所以打算用jsp随便搞一搞 可是这样就要跨语言编程了 说得很高大上其实就是打成jar然后丢到项目lib包里面去 这时就需要打
  • H5——连连看小游戏实现思路及源码

    部门要求推广新产品用连连看小游戏的方式 设计那边UI还没有排期 先撸个功能demo 正好记录一下 连连看都玩过 程序的关键在于判断连续点击的两张图片是否能够消除 两个图片消除的条件有两个 图片相同 两张图之间连线的转角数不超过2 第一个条件
  • 高级纹理映射技术(6)

    高级纹理映射技术 6 对一些特殊的应用需要对纹理坐标进行处理 主要包括纹理坐标自动生成和纹理坐标变换 下图显示了纹理坐标的来源 处理过程以及到达光栅处理器的过程 纹理坐标自动生成 在Direct3D程序中 不仅可以在模型载入阶段或渲染阶段指
  • EPICS asynPortDriver中数组用法示例

    本驱动程序是继承自asynPortDriver 分别重写了用于读取32位整型数组和32位浮点型数组的 readInt32Array和readFloat32Array 1 源代码如下 arraydriver h include epicsEv
  • 30道软件测试高频面试题

    如果哪个测试经理在看我的文章 希望对面试者要微笑 不然面试结束 出门之后就一万个草泥马奔腾而过 其实面试者并不是希望你给他们什么 而是一种尊重 平等的谈话 不要高高在上感觉自己超牛逼一样 任何大牛都是从菜鸟起步的 当然 正在学习测试技术的人
  • VUE之Vxe-table动态生成多级表头

    需求 1 第一列为正常列 2 第二列开始为动态生成列 根据接口返回数据生成 3 最后一列为编辑列 实现步骤 模板中定义
  • Java 类的主动使用和被动使用

    Java程序对类的使用方式分为 主动使用和被动使用 主动使用 又分为七种情况 1 创建类的实例 2 访问某个类或者接口的静态变量 或者对该静态变量赋值 3 反射 比如 Class forName java lang String 4 初始化
  • 代码漏洞说明

    1 代码注入 命令注入 命令注入是指 在应用程序执行的命令中包含来源于不可信数据时 程序本身没有对这些不可信数据做正确 合理的验证和过滤 导致系统执行恶意命令 例1 以下代码通过Runtime exec 方法调用Windows的dir命令
  • PID简介

    一 基本定义 Sv 用户设定值 给定信号 Pv 控制对象当前状态值 反馈信号 E 偏差值 偏差信号 所以 E Sv Pv 二 PID各个控制基本分析 1 P控制 比例控制 Pout Kp Ek 假定从早上开机上电 我们每隔一秒钟就通过传感器
  • html5的session,HTML5 sessionStorage会话存储

    sessionStorage 是HTML5新增的一个会话存储对象 用于临时保存同一窗口 或标签页 的数据 在关闭窗口或标签页之后将会删除这些数据 本篇主要介绍 sessionStorage 会话存储 的使用方式 包括添加 修改 删除等操作
  • c++语言的学习——判断闰年

    判断闰年 描述 判断某年是否是闰年 输入 输入只有一行 包含一个整数a 0 lt a lt 3000 输出 一行 如果公元a年是闰年输出Y 否则输出N 样例输入 2006 样例输出 N 提示 公历纪年法中 能被4整除的大多是闰年 但能被10
  • Wireshark的两种过滤器与BPF过滤规则

    Wirshark使用的关键就在于过滤出想要的数据包 下面介绍怎么过滤 抓包过滤器 Wirshark有两种过滤器 一个是抓包过滤器 一个是显示过滤器 他们之间的区别在于抓包过滤器只抓取你设置的规则 同时丢弃其他信息 显示过滤器并不会丢弃信息