作者:农马·埃辛
来源:cnblogs.com/zhaopei/p/12152139.html
前言
说到抓包,我们平时用得最多的可能就是Chrome浏览器自带的网络面板(浏览器中按f12就会弹出)。此外,很多人使用Fiddler。这也是一个非常好的抓包工具。
然而,这两者只能捕获和分析HTTP和HTTPS数据包。如果你想分析底层协议(比如TCP的三向握手),你应该使用今天要讲的工具Wireshark。这是一个非常强大的软件,它也是开源的,并且有免费的中文语言包。
安装和基本使用
Wireshark开源地址:https://github.com/wireshark/wireshark
Wireshark下载地址:https://www.wireshark.org/download,之前的版本有:
今天我们将安装最新版本3.2.0。选择“下一步”默认安装。安装后默认是中文版。
开始抓包
显示过滤器
第一部分的内容很快就会过去,你会发现你找不到任何你想要分析的东西。在这里您可以使用显示过滤器来仅查看您想查看的内容。
在显示过滤器中输入http.request.method==’GET’,使用Chrome浏览器访问http://fanyi-pro.baidu.com/index(专门找到的http网站)。
除了过滤Get请求外,常用的显示过滤器还包括:
tcp、udp 前者表示仅显示TCP,后者表示仅显示UDP。您还可以使用!tcp,它表示tcp 以外的其他内容。也可以是tcp或udp,表示显示tcp和udp。 ip.src==192.168.1.120 和ip.dst==208.101.60.87,ip.src 代表客户端IP(源地址IP),ip.dst 代表服务器IP(目的地址IP)。 | udp.srcport==80,tcp.port表示tcp端口为80,udp.srcport表示udp源端口为80。 || or 相当于or,and 相当于and。 (还有tcp.srcport、tcp.dstport等)
捕获过滤器
显示过滤器是指捕获所有经过网卡的数据包并过滤,显示时显示出来。显然,如果流量太大,就会捕获太多内容,过滤速度也会很慢。
因此,您可以在捕获阶段过滤掉无用的流量。
UDP、TCP 前者表示仅显示TCP,后者表示仅显示UDP。您还可以使用!tcp,它表示tcp 以外的其他内容。也可以是tcp或udp,表示显示tcp和udp。 host 192.168.1.110,表示只捕获IP地址为192.168.1.110的数据包(这里的语法与显示过滤器不同;注意)dst端口443而不是端口80或端口53,代表端口过滤(这里的语法)相同作为显示过滤器)请注意,显示过滤器是不同的)
着色规则
显示第一部分内容。数据包列表有不同的背景颜色。不同的颜色代表不同的含义。浅蓝色代码UDP协议,红色文字,黑色背景代表有问题的数据包。有关更具体的规则,请参阅图表着色规则。
抓取localhost(环回地址)
localhost实际上使用了npcap环回适配器网卡(loopback网卡),并实际捕获了该网卡上的数据包。
因此,只要捕获时选择了网卡,Wireshark就可以可靠地捕获来自环回地址(例如localhost)的数据包。
抓取移动设备流量
如果您要捕获移动设备,请先打开笔记本电脑的Wi-Fi 热点。抓包对应的虚拟网卡,最后用手机连接Wi-Fi抓包。
Win10自带WiFi热点,无需寻找第三方WiFi热点软件。如果您的手机无法连接,请尝试关闭笔记本电脑的防火墙。
TCP/IP四层协议
下面的动画展示了每一层对应的数据。
从上面的动画我们可以看到,从应用层到传输层,再从网络层到以太网层,相应的数据包也依次进行。
您可以想象应用程序层数据被传递,在它经过的每一层都包装一个新的信封。它等待数据发送到目标主机,每次前进到下一层时打开信封,最后到达初始数据,即应用层。
TCP三次握手
很多人都听说过三向握手,但没有见过,今天我们就来了解一下。
三次握手过程如下: 1. 客户端发送同步SYN标志和序列号Seq(a)。 2. 服务器响应SYNACK、Seq(b)、Ack(a+1)。 3. 客户端SYN、Seq(a+1))、Ack(b+1)
现在我将向您展示如何使用Wireshark进行观察。以地址http://fanyi-pro.baidu.com/为例。
首先,打开Chrome,输入地址,按F12打开浏览器的网络面板,刷新页面,在面板中找到服务器IP。打开Wireshark并开始捕获数据包,使用显示过滤器仅显示IP地址对应的数据。
TCP四次挥手
除了三次握手之外,还有相应的四次挥手。我不知道我的网络是否不好,但是当我“摇动”它时(就像上面提到的红色文本和黑色背景的数据包),我总是会遇到重传错误和干扰。下面是我在本地环境编写代码时抓包的效果。
与握手不同,挥手意味着发送FIN 标志来断开连接,其他一切都几乎相同。
Wireshark抓包如下
HTTPS的抓包
由于HTTPS 在HTTP 的基础上添加了SSL 加密层,因此Wireshark 会捕获密文。你看不到请求参数或响应结果,甚至URL链接都是密文。
要使用Wireshark 捕获明文数据,您可以执行以下步骤:
1、Windows电脑配置环境变量SSLKEYLOGFILE D:\testssl.txt
2. Wireshark编辑器-设置-协议-TLS 选择D:\testssl.txt作为最后一个文件。
对于HTTP2,您可以执行http2.headers.method==’GET’ 或http2.headers.method==’POST’。对于HTTP,可以执行http.request.method==’GET’过滤。
UDP协议
除了捕获TCP数据包外,Wireshark还可以捕获UDP数据包。
其实这个抓包就是一个BACnet消息,而这个BACnetIP是一个基于UDP的协议。
ModBusTcp协议
结束
授人以鱼不如授人以渔。
Wireshark可以捕获和分析常见HTTP、HTTPS、TCP和其他协议的数据包,以及工业BACnet、ModBus和S7Communication等PLC协议。
参考
cnblogs.com/TankXiao/archive/2012/10/10/2711777.htmljianshu.com/p/d3725391af59blog.csdn.net/qq_38950316/article/details/81087809
原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/86170.html