IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络协议和Netty(7):常用的网络抓包工具 Wireshark -> 正文阅读

[网络协议]网络协议和Netty(7):常用的网络抓包工具 Wireshark

目录

Wireshark的使用

1.下载

2.安装

数据包的捕获和基本用法

过滤器

捕获过滤器

捕获过滤器的 BPF 语法

显示过滤器

比较操作符和逻辑操作符

预定义过滤器?


前言:前面三次握手和四次挥手用的抓包工具就是Wireshark,本节主要介绍其简单的使用,不用死记硬背,知道大概的使用方法就行,至于命令搞个专门记录命令的文档记录,用的时候直接用就好了。

提问:为什么要抓包?

解答:

1、定位网络问题;
2、分析接口数据;
3、学习网络协议,使用抓包工具分析网络数据更直观。
大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准
确、更方便,如以下场景:
1、你发送数据给后台,但后台没有收到,可以对接口进行抓包分析,看是后台处理有
问题,还是没有将数据发出去,或是发送数据格式有误;
2、你和后台接口联调测通,但业务数据对不上,你认为是后台问题,后台认为是你发
的问题,可以抓包确认问题所在;
3、线上出现 bug 需要定位,但你没在公司,没有代码可调试,可直接抓包分析;
4、系统性能不佳,抓包看下接口响应时长,是不是后台出现性能问题。
常用的抓包工具有:F12(浏览器自带的抓包工具)、Fiddler、Charles,Wireshark。而
Wireshark 在支持的协议,用户友好度、价格(开源)、程序支持、支持的操作系统上都很
好,所以 Wireshark 也是我们最常用的抓包工具和报文分析工具。

Wireshark的使用

1.下载

官网下载:https://www.wireshark.org/download.html

根据自己笔记本的配置,选择对应的配置下载就好

2.安装

基本上都是默认选项,也可以根据自己需求选择。

需要注意的是在当弹出是否需要安装 Npcap/WinPcap 的对话框时, 务必确保 Install。

WinPcap 驱动是 Windows对于 pcap 数据包捕获的通用程序接口(APT)的实现,简单来说就是这个驱动能够通过操作系统捕捉原始数据包、应用过滤器,并能够让网卡切入或切出混杂模式。[ 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证 MAC 地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。

USBPcap 就没必要安装了。

数据包的捕获和基本用法

?进入程序后,我们发现有活跃的网络(红框处),双击这一行,Wireshark 开始捕获数据,并在窗口中显示,可以看见随着时间前进,窗口中不断刷新。等上几秒钟,结束捕获,单机工具栏中的
按钮,或者“捕获”下拉菜单中选择“停止”选项即可。

笔者点击Adapter for loopback traffic capture ,这个时候可以看见,Wireshark 窗口中显示了大量的数据,数据内容分布如下:

数据包列表:最上面的面板用表格显示了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包被捕获的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等列。
包详情:中间的面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获到的全部内容。
包数据的字节形式显示:最下面的面板显示了一个数据包未经处理的原始样子,也就是其在链路上传播时的样子。这些原始数据当然不容易理解。

在数据包列表中,可以很明显看见每行的五颜六色,这些颜色其实是 Wireshark 用来区分不同的协议的。可以通过 Coloring Rules (着色规则)窗口可以很容易地查看或修改每个协议所对应的颜色。如果想要打开这个窗口,可以在“视图”下拉菜单中选择的“着色规则”选项即可。

同时捕获的数据包可以导出为文件,也可以将数据包文件导入 Wireshark 进行分析。

过滤器

过滤器可以让你找出你所希望进行分析的数据包。简单来说,一个过滤器就是定义了一定条件,用来包含或者排除数据包的表达式。如果你不希望看到一些数据包,你可以写一个过滤器来屏蔽它们。如果你希望只看到某些数据包,你可以写一个只显示这些数据包的过滤器。

例如:我们只想抓mysql端口的数据包就可以 设置捕获规则 port 3306 这样就能抓到我们想要的包了。

Wireshark 主要提供两种主要的过滤器。

  • ·捕获过滤器:

当进行数据包捕获时,只有那些满足给定的包含/排除表达式的数据包会被捕获。

  • 显示过滤器:

该过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。

捕获过滤器

捕获过滤器用于进行数据包捕获的实际场合,使用它的一个主要原因就是性能。如果你
知道你并不需要分析某个类型的流量,你可以简单地使用捕获过滤器过滤掉它,从而节省那
些会被用来捕获这些数据包的资源。
比如,我们现在要捕获我们机器上所有 TCP类型的数据包,怎么做?在“捕获”下拉
菜单中选择“选项”,弹出窗口中:

点击开始:

我们发现捕获到所有的TCP协议

捕获过滤器的 BPF 语法

捕获过滤器应用于 WinPcap/NPcap,并使用 Berkeley Packet Filter(BPF)语法。
这个语法被广泛用于多种数据包嗅探软件,主要因为大部分数据包嗅探软件都依赖于使
用 BPF 的 libpcap/WinPcap 库。掌握 BPF 语法对你在数据包层级更深入地探索网络来说,
非常关键。
使用 BPF 语法创建的过滤器被称为表达式,并且每个表达式包含一个或多个原语。每
个原语包含一个或多个限定词,然后跟着一个 ID 名字或者数字
Type 指出名字或数字所代表的意,例如: host、port
Dir 指明传输方向是前往还是来自 例如:src、dst
Proto 限定所要匹配的协议 例如:ether、ip、tcp、udp、http、ftp
例如:
dst host 192.168.0.10 && tcp port 80
这是一个捕获过滤器样例,其中“dst host 192.168.0.10”就构成了一个原语,我们的样
例里有两个原语,两个原语用逻辑运算符“&&”组合了起来。逻辑运算符共有三个:
连接运算符: 与 (&&)
选择运算符: 或 (||)
否定运算符: 非 (!)
对我们的样例来说,表示捕获的数据包应该满足条件为:目的主机是 192.168.0.10,通
信协议是 tcp,源端口或者目的端口是 80。

主机名和地址过滤器

我们所创建的大多数过滤器都会关注于一个或一些特定的网络设备。根据这个情况,可
以根据设备的 MAC 地址、IPv4 地址、IPv6 地址或者 DNS 主机名配置过滤规则。比如:
捕获所有和主机 IPv4 地址相关的流量:
host 192.168.0.10
捕获所有和主机 Ipv6 地址相关的流量:
host fe80::1945:cbf1:1393:8f17
使用基于一台设备的主机名 host 限定词进行过滤:
host remoteserver
考虑到一台主机的 IP 地址可能会变化,你可以通过加入 ether 协议限定词,对它的 MAC
地址进行过滤:
Ether host 24-41-8C-26-04-9F
当然还可在 host 之前加 src 或者 dst 进行传输方向的限定。
端口和协议过滤器
只对 8080 端口进行流量捕获:
port 8080
想要捕获除 8080 端口外的所有流量
!port 8080
端口过滤器一样和传输方向限定符一起使用,比如:
dst port 80
协议过滤器可以让我们基于特定协议进行数据包过滤。BPF 语法甚至提供给我们的一项
强大功能,就是我们可以通过检查协议头中的每一字节来创建基于那些数据的特殊过滤器。
比如:
tcp[13]&4=4
表示捕获的数据是 tcp 协议的数据包,且 tcp 数据包中第 13 个字节的第 4 位被设置了。

显示过滤器

显示过滤器应用于捕获文件,用来告诉 Wireshark 只显示那些符合过滤条件的数据包。
你可以在包列表面板上方的 Filter 文本框中,输入一个显示过滤器。

?

显示过滤器的语法不同于捕获过滤器,比如我们通过捕获功能,捕获了本机所有的数据包?

我们不需要TCP

输入 !TCP 确认

我们发现TCP协议的数据包已经没了

现在我们多加一个限定,只显示 ip 地址为 192.168.18.1的数据包

我们看见,显示的数据包就变为:不是 TCP 数据包,同时源地址或者目的地址是192.168.18.1。

比较操作符和逻辑操作符

在我们上面的过滤条件“!udp and ip.addr==40.90.189.152”中,牵涉到了过滤条件的比
较操作符和逻辑操作符:比较操作符可以让你进行值的比较。

举例来说,当你在检查一个 TCP/P 网络中的问题
时,你可能经常需要检查和某一个 IP 地址相关的数据包。等于操作符可以让你创建一个只
显示 192.168.0.1 这个 IP 地址相关数据包的过滤器。
ip.addr==192.168.0.1
比较操作符还有:
等于 ==
不等于 !=
大于 >
小于 <
大于或等于 >=
小于或等于 <=
逻辑操作符有:
and 两个条件需同时满足
or 其中一个条件被满足
xor 有且仅有一个条件被满足
not 没有条件被满足
尽管在理论上编写过滤器表达式很简单,但针对不同问题创建过滤器时,依然需要许多
特定的关键词与操作符。可以到 Wireshark 的官网查看:
https://www.wireshark.org/docs/dfref
?

?比如 tcp 相关的,可以通过单击具体条目查看更多:

?

预定义过滤器?

过滤器可以事先设置好,不需要每次使用时都重新输入,捕获过滤器在菜单“捕获”-“捕获过滤器”中设置,显示过滤器在菜单“分析”-“Display Filters” 中设置。

?捕获过滤器

?显示过滤器

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:07:19  更:2021-08-02 11:07:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:31:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码