目录
[1 wireshark介绍](#1 wireshark介绍)
[2 wireshark抓包流程](#2 wireshark抓包流程)
[2.1 选择网卡](#2.1 选择网卡)
[2.2 停止抓包](#2.2 停止抓包)
[2.3 保存数据](#2.3 保存数据)
[3 wireshark过滤器设置](#3 wireshark过滤器设置)
[3.1 显示过滤器的设置](#3.1 显示过滤器的设置)
[3.2 抓包过滤器](#3.2 抓包过滤器)
[4 wireshark的封包列表与封包详情](#4 wireshark的封包列表与封包详情)
[4.1 封包列表](#4.1 封包列表)
[4.2 封包详情](#4.2 封包详情)
1 wireshark介绍
wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。wireshark是开源软件,可以放心使用。 可以运行在Windows、Unix、Linux、Mac OS上。
WireShark 主要分为这几个界面:
-
Display Filter(显示过滤器), 用于过滤
-
Packet List Pane(封包列表), 显示捕获到的封包, 有源地址和目标地址,端口号。 颜色不同,代表
-
Packet Details Pane(封包详细信息), 显示封包中的字段
-
Dissector Pane(16进制数据)
-
Miscellanous(地址栏,杂项)

2 wireshark抓包流程
2.1 选择网卡
打开 Wireshark 后,会直接进入「网卡选择界面」,WLAN 是我连接无线的网卡,我们抓一下这个网卡的流量,双击网卡名,自动开始抓包。

2.2 停止抓包
点击左上角的「红色按钮」,可以停止抓包。

2.3 保存数据
点击右上角的「文件」,选择「保存」,可以保存抓包的数据。

也可以直接点击工具栏的保存按钮。

3 wireshark过滤器设置
Wireshark提供了两个过滤器:抓包过滤器 和 显示过滤器。两个过滤器的过滤思路不同。
抓包过滤器:重点在动作,需要的包我才抓,不需要的我就不抓。
显示过滤器:重点在数据的展示,包已经抓了,只是不显示出来。
3.1 显示过滤器的设置
可以在显示过滤器中输入过滤条件,来获取过滤后的封包列表显示。

常用的几个过滤条件如下:
1) 协议过滤
比如TCP,只显示TCP协议。
2)IP 过滤
比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
ip.dst==192.168.1.102, 目标地址为192.168.1.102
3) 端口过滤
tcp.port ==80, 端口为80的
tcp.srcport == 80, 只显示TCP协议的愿端口为80的。
tcp.port >= 2000 and tcp.port <= 2500 ,端口号在2000至2500范围内的封包。
4)长度和内容的过滤
udp.length < 30 http.content_length <=20,针对长度的过虑
http.request.uri matches "vip" ,匹配http请求中含有vip字段请求信息

5)逻辑运算符为 AND/ OR/NOT/&&/|| /!

6) 特定偏移值的数据包,tcp[20:3] == 47:45:54
3.2 抓包过滤器
抓包过滤器在抓包前使用,所以使用抓包过滤器时,需要先停止抓包,设置完过滤规则后,再开始抓包。停止抓包的前提下,点击工具栏的捕获按钮,点击选项。

在弹出的捕获选项界面,最下方的输入框中输入过滤语句,点击开始即可抓包。
提示:抓包过滤器的输入框,会自动检测语法,绿色代表语法正确,红色代表语法错误。

抓包过滤器过滤有一个基本的语法格式:BPF语法格式:
1)抓取指定IP地址的数据流
host 10.3.1.1:抓取发到/来自10.3.1.1的数据流
not host 10.3.1.1:抓取除了发到/来自10.3.1.1以外的所有数据流
src host 10.3.1.1:抓取来自10.3.1.1的数据流
2)抓取指定IP地址范围的数据流
net 10.3.0.0/16:抓取网络10.3.0.0上发到/来自所有主机的数据流(16表示长度)
net 10.3.0.0 mask 255.255.0.0:与之前的过滤结果相同
not dst net 10.3.0.0/16:抓取除了发到以10.3开头的IP地址以外的所有数据流
3)抓取指定端口的数据流
port 53:抓取发到/来自端口53的UDP/TCP数据流(典型是DNS数据流)
not port 53:抓取除了发到/来自端口53以外的UDP/TCP数据流
portrange 1-80:抓取发到/来自端口1-80的所有UDP/TCP数据流
tcp portrange 1-80:抓取发到/来自端口1-80的所有TCP数据流
4)熟悉报文内容的,可以通过各个协议层偏移字段
ip[2:2]==<number>:ip报文大小
Tcp[2:2] > 50 and tcp[2:2] < 100 抓取目的端口为50~100的TCP报文
4 wireshark的封包列表与封包详情
4.1 封包列表
Packet List Pane(数据包列表), 显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。不同协议的数据包使用了不同的颜色区分显示。

数据包列表是最常用的模块之一,列表中有一些默认显示的列,我们可以添加、删除、修改显示的列。
1)添加显示列
想要在数据列表中显示某一个字段,可以将这个数据字段添加至显示列中。
左键选中想要添加为列的字段,右键选择「应用为列」。

选中字段,按 Ctrl + Shift + I ,也可以实现同样的效果。
添加为列的字段会在数据列表中显示。

2)隐藏显示列
暂时不想查看的列,可以暂时隐藏起来。
在显示列的任意位置右键,取消列名的「勾选」,即可隐藏显示列。

3)删除显示列
不需要查看的字段,可以从显示列中删除。
右键需要删除的列,点击最下方的「Remove this Column」 。

注意:隐藏字段时,在列名栏的任意位置右键即可;而删除字段时,需要在指定的列名位置右键,以防误删。
4)设置时间
数据包列表栏的时间这一列,默认显示格式看起来很不方便,我们可以调整时间的显示格式。
点击工具栏的「视图」,选择「时间显示格式」,设置你喜欢的格式。

5)追踪流
要筛选到特定流,在感兴趣的流/连接的数据包列表中选择TCP、UDP、DCCP、TLS、HTTP、HTTP/2、QUIC或SIP数据包。有两种打开追踪流的界面方法,以TCP为例:
方法一: 选择菜单项【Analyze → Follow → TCP Stream 】

方法二:选择追踪到的数据→ Follow → TCP Stream

下面展示追踪到流数据,需要进行说明的是:
【1】流内容的显示顺序和它在网络上出现的顺序相同。不可打印的字符被点代替。
【2】从客户端到服务器的流量被标记为红色,而从服务器到客户端的流量被标记为蓝色。这些颜色可以通过下面地方设置
4.2 封包详情
Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为
(1)Frame: 物理层的数据帧概况
(2)Ethernet II: 数据链路层以太网帧头部信息
(3)Internet Protocol Version 4: 互联网层IP包头部信息
(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。

TCP包的具体内容
从下图可以看到wireshark捕获到的TCP包中的每个字段。

参考文献
Wireshark零基础使用教程(超详细)_wireshark抓包新手使用教程-CSDN博客