title: wireshark 抓包老手应用教程
categories:[简略抓包]
tags:[wireshark]
date: 2022/04/29
<div align = ‘right’> 作者:hackett</div>
<div align = ‘right’> 微信公众号:加班猿 </div>
wireshark 抓包老手应用教程
Wireshark 是十分风行的网络封包剖析软件,能够截取各种网络数据包,并显示数据包详细信息。罕用于开发测试过程各种问题定位。本文次要内容包含:
1、Wireshark 软件下载和装置以及 Wireshark 主界面介绍。
2、WireShark 简略抓包示例。通过该例子学会怎么抓包以及如何简略查看剖析数据包内容。
3、Wireshark 过滤器应用。过滤器蕴含两种类型,一种是抓包过滤器,就是抓取前设置过滤规定。另外一种是显示过滤器,就是在数据包剖析时进行过滤数据应用。通过过滤器能够筛选出想要剖析的内容。包含依照协定过滤、端口和主机名过滤、数据包内容过滤。具体规定和实例能够查看注释。
Wireshark 软件装置
软件下载门路:wireshark 官网。依照零碎版本抉择下载,下载实现后,依照软件提醒一路 Next 装置。
阐明:如果你是 Win10 零碎,装置实现后,抉择抓包然而不显示网卡,下载 win10pcap 兼容性安装包。下载门路:win10pcap 兼容性安装包
Wireshark 开始抓包示例
先介绍一个应用 wireshark 工具抓取 ping 命令操作的示例,让读者能够先上手操作感受一下抓包的具体过程。
1、关上 wireshark 2.6.5,主界面如下:
2、抉择菜单栏上 Capture -> Option,勾选 WLAN 网卡(这里须要依据各自电脑网卡应用状况抉择,简略的方法能够看应用的 IP 对应的网卡)。点击 Start。启动抓包。
3、wireshark 启动后,wireshark 处于抓包状态中。
4、执行须要抓包的操作,如在 cmd 窗口下执行 ping www.baidu.com。
5、操作实现后相干数据包就抓取到了。为防止其余无用的数据包影响剖析,能够通过在过滤栏设置过滤条件进行数据包列表过滤,获取后果如下。阐明:ip.addr == 119.75.217.26 and icmp 示意只显示 ICPM 协定且源主机 IP 或者目标主机 IP 为 119.75.217.26 的数据包。阐明:协定名称 icmp 要小写。
5、wireshark 抓包实现,就这么简略。对于 wireshark 显示过滤条件、抓包过滤条件、以及如何查看数据包中的具体内容在前面介绍。
Wireshakr 抓包界面介绍
阐明:数据包列表区中不同的协定应用了不同的色彩辨别。协定色彩标识定位在菜单栏 View –> Coloring Rules。如下所示
WireShark 次要分为这几个界面
\1. Display Filter(显示过滤器),用于设置过滤条件进行数据包列表过滤。菜单门路:Analyze –> Display Filters。
\2. Packet List Pane(数据包列表),显示捕捉到的数据包,每个数据包蕴含编号,工夫戳,源地址,指标地址,协定,长度,以及数据包信息。不同协定的数据包应用了不同的色彩辨别显示。
\3. 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 包中的每个字段。
\4. Dissector Pane(数据包字节区)。
Wireshark 过滤器设置
初学者应用 wireshark 时,将会失去大量的冗余数据包列表,以至于很难找到本人须要抓取的数据包局部。wireshark 工具中自带了两种类型的过滤器,学会应用这两种过滤器会帮忙咱们在大量的数据中迅速找到咱们须要的信息。
(1)抓包过滤器
捕捉过滤器的菜单栏门路为 Capture –> Capture Filters。用于 在抓取数据包前设置。
如何应用?能够在抓取数据包前设置如下。
ip host 60.207.246.216 and icmp 示意只捕捉主机 IP 为 60.207.246.216 的 ICMP 数据包。获取后果如下:
(2)显示过滤器
显示过滤器是用于在抓取数据包后设置过滤条件进行过滤数据包。通常是在抓取数据包时设置条件绝对宽泛或者没有设置导致抓取的数据包内容较多时应用显示过滤器设置条件过滤以不便剖析。同样上述场景,在捕捉时未设置抓包过滤规定间接通过网卡进行抓取所有数据包,如下
执行 ping www.huawei.com 获取的数据包列表如下
察看上述获取的数据包列表,含有大量的有效数据。这时能够通过设置显示器过滤条件进行提取剖析信息。ip.addr == 211.162.2.183 and icmp。并进行过滤。
上述介绍了抓包过滤器和显示过滤器的根本应用办法。在组网不简单或者流量不大状况下,应用显示器过滤器进行抓包后处理就能够满足咱们应用。上面介绍一下两者间的语法以及它们的区别。
wireshark 过滤器表达式的规定
1、抓包过滤器语法和实例
抓包过滤器类型 Type(host、net、port)、方向 Dir(src、dst)、协定 Proto(ether、ip、tcp、udp、http、icmp、ftp 等)、逻辑运算符(&& 与、|| 或、!非)
(1)协定过滤
比较简单,间接在抓包过滤框中间接输出协定名即可。
tcp,只显示 TCP 协定的数据包列表
http,只查看 HTTP 协定的数据包列表
icmp,只显示 ICMP 协定的数据包列表
(2)IP 过滤
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3)端口过滤
port 80
src port 80
dst port 80
(4)逻辑运算符 && 与、|| 或、!非
src host 192.168.1.104 && dst port 80 抓取主机地址为 192.168.1.80、目标端口为 80 的数据包
host 192.168.1.104 || host 192.168.1.102 抓取主机为 192.168.1.104 或者 192.168.1.102 的数据包
!broadcast 不抓取播送数据包
2、显示过滤器语法和实例
(1)比拟操作符
比拟操作符有 == 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<= 小于等于。
(2)协定过滤
比较简单,间接在 Filter 框中间接输出协定名即可。留神:协定名称须要输出小写。
tcp,只显示 TCP 协定的数据包列表
http,只查看 HTTP 协定的数据包列表
icmp,只显示 ICMP 协定的数据包列表
(3)ip 过滤
ip.src ==192.168.1.104 显示源地址为 192.168.1.104 的数据包列表
ip.dst==192.168.1.104, 显示指标地址为 192.168.1.104 的数据包列表
ip.addr == 192.168.1.104 显示源 IP 地址或指标 IP 地址为 192.168.1.104 的数据包列表
(4)端口过滤
tcp.port ==80, 显示源主机或者目标主机端口为 80 的数据包列表。
tcp.srcport == 80, 只显示 TCP 协定的源主机端口为 80 的数据包列表。
tcp.dstport == 80,只显示 TCP 协定的目标主机端口为 80 的数据包列表。
(5)Http 模式过滤
http.request.method==”GET”, 只显示 HTTP GET 办法的。
(6)逻辑运算符为 and/or/not
过滤多个条件组合时,应用 and/or。比方获取 IP 地址为 192.168.1.104 的 ICMP 数据包表达式为 ip.addr == 192.168.1.104 and icmp
(7)依照数据包内容过滤。假如我要以 IMCP 层中的内容进行过滤,能够单击选中界面中的码流,在下方进行选中数据。如下
右键单击选中后呈现如下界面
选中 Select 后在过滤器中显示如下
前面条件表达式就须要本人填写。如下我想过滤出 data 数据包中蕴含 ”abcd” 内容的数据流。蕴含的关键词是 contains 前面跟上内容。
看到这,基本上对 wireshak 有了初步理解。
Wireshark 抓包剖析 TCP 三次握手
(1)TCP 三次握手连贯建设过程
Step1:客户端发送一个 SYN=1,ACK= 0 标记的数据包给服务端,申请进行连贯,这是第一次握手;
Step2:服务端收到申请并且容许连贯的话,就会发送一个 SYN=1,ACK= 1 标记的数据包给发送端,通知它,能够通信了,并且让客户端发送一个确认数据包,这是第二次握手;
Step3:服务端发送一个 SYN=0,ACK= 1 的数据包给客户端端,通知它连贯已被确认,这就是第三次握手。TCP 连贯建设,开始通信。
(2)wireshark 抓包获取拜访指定服务端数据包
Step1:启动 wireshark 抓包,关上浏览器输出 www.huawei.com。
Step2:应用 ping www.huawei.com 获取 IP。
Step3:输出过滤条件获取待剖析数据包列表 ip.addr == 211.162.2.183
图中能够看到 wireshark 截获到了三次握手的三个数据包。第四个包才是 HTTP 的,这阐明 HTTP 确实是应用 TCP 建设连贯的。
第一次握手数据包
客户端发送一个 TCP,标记位为 SYN,序列号为 0,代表客户端申请建设连贯。如下图。
数据包的要害属性如下:
SYN:标记位,示意申请建设连贯
Seq = 0:初始建设连贯值为 0,数据包的绝对序列号从 0 开始,示意以后还没有发送数据
Ack =0:初始建设连贯值为 0,曾经收到包的数量,示意以后没有接管到数据
第二次握手的数据包
服务器发回确认包, 标记位为 SYN,ACK. 将确认序号 (Acknowledgement Number) 设置为客户的 I S N 加 1 以. 即 0 +1=1, 如下图
数据包的要害属性如下:
Seq = 0:初始建设值为 0,示意以后还没有发送数据
Ack = 1:示意以后端胜利接管的数据位数,尽管客户端没有发送任何无效数据,确认号还是被加 1,因为蕴含 SYN 或 FIN 标记位。(并不会对无效数据的计数产生影响,因为含有 SYN 或 FIN 标记位的包并不携带无效数据)
第三次握手的数据包
客户端再次发送确认包(ACK) SYN 标记位为 0,ACK 标记位为 1. 并且把服务器发来 ACK 的序号字段 +1, 放在确定字段中发送给对方. 并且在数据段放写 ISN 的 +1, 如下图:
数据包的要害属性如下:
ACK:标记位,示意曾经收到记录
Seq = 1:示意以后曾经发送 1 个数据
Ack = 1 : 示意以后端胜利接管的数据位数,尽管服务端没有发送任何无效数据,确认号还是被加 1,因为蕴含 SYN 或 FIN 标记位(并不会对无效数据的计数产生影响,因为含有 SYN 或 FIN 标记位的包并不携带无效数据)。
就这样通过了 TCP 三次握手,建设了连贯。开始进行数据交互
上面针对数据交互过程的数据包进行一些阐明:
数据包的要害属性阐明
Seq: 1
Ack: 1: 阐明当初共收到 1 字节数据
Seq: 1
Ack: 951: 阐明当初服务端共收到 951 字节数据
在 TCP 层,有个 FLAGS 字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下
其中,对于咱们日常的剖析有用的就是后面的五个字段。它们的含意是:SYN 示意建设连贯,FIN 示意敞开连贯,ACK 示意响应,PSH 示意有 DATA 数据传输,RST 示意连贯重置。
Wireshark 剖析罕用操作
调整数据包列表中工夫戳显示格局。调整办法为 View –>Time Display Format –> Date and Time of Day。调整后格局如下:
参考文档
(1)wireshark 抓包具体图文教程