1. Wireshark简介
Wireshark: The world’s most popular network protocol analyzer.
Wireshark最初是一个名为Ethereal的项目,在2006年更名为Wireshark。Wireshark是一个免费且开源的网络协议分析工具,可以用于捕获和分析网络数据包。它支持超过2,000种协议,并且可以深入分析每个协议的细节。
参考文档:
- 《Wireshark网络分析就是这么简单》
- 《Wireshark网络分析的艺术》
- Wireshark官网
- 《K8S中Pod抓包》
- wireshark抓包教程详解
2. 安装抓包工具
2.1. 安装Wireshark
1、安装wireshark
访问Wireshark下载页,下载对应系统版本的Wireshark,双击安装。
2、配置命令行启动wireshark
macos中,wireshark默认安装路径为/Applications/Wireshark.app/Contents/MacOS/Wireshark
想要在命令行中直接启动wireshark,最好是配置一个软链
1 | ln -s /Applications/Wireshark.app/Contents/MacOS/Wireshark /usr/local/bin/wireshark |
2.2. 安装Tshark
Tshark是Wireshark的命令行版本,可以在终端中使用。它可以用于捕获和分析网络数据包。
1、安装 epel 扩展源
1 | yum install -y epel-release |
2、安装wireshark
1 | yum install -y wireshark |
wireshark包含了tshark工具。
3、验证安装
1 | tshark -v |
参考文档:Tshark - INSTALL
2.3. 安装tcpdump
tcpdump是另一个命令行网络协议分析工具,可以用于捕获和分析网络数据包。
1、安装tcpdump
1 | yum install -y tcpdump |
2、验证安装
1 | tcpdump --version |
3. 抓取数据包
3.1. Wireshark抓包
场景:访问www.voidking.com
,抓取数据包。
1、打开Wireshark,选择要捕获的接口。
2、在“Capture Options”对话框中,可以选择要捕获的协议和过滤器。
本例中,选择host过滤器,对应输入host www.voidking.com
本步骤可以省略,直接抓取所有的流量,然后在抓包后进行过滤。
3、点击“Start”按钮开始捕获数据包。
4、浏览器访问http://www.voidking.com
5、Wireshark中捕获到指定域名的数据包,可以进行分析了。
捕获到的数据包,可以再次进行过滤,例如使用http过滤器,对应输入http
。
我们可以点击任意一个 HTTP 数据包来查看其详细信息,如请求方法、请求头、响应状态码、响应头、响应内容等。
也可以右键点击一个数据包,并选择“Follow > HTTP Stream”来查看整个 HTTP 会话的内容。
请注意,如果使用HTTPS协议进行通信,Wireshark将无法直接解密和查看通信内容。但是,Wireshark仍然可以捕获加密的数据包,包括TLS握手和加密的应用数据,可以通过分析这些数据包来获取有关通信的一些信息。
3.2. Tshark命令抓包
场景:访问www.voidking.com
,抓取数据包。
1、查看可以抓包的网络接口
1 | tshark -D |
2、捕获数据包
1 | tshark -i eth0 -f "host www.voidking.com" -w stream.pcap |
3、再开一个终端 curl www.voidking.com
4、读取数据包
1 | tshark -r stream.pcap |
3.3. tcpdump命令抓包
场景:访问www.voidking.com
,抓取数据包。
1、查看可以抓包的网络接口
1 | tcpdump -D |
2、查看www.voidking.com
域名主机
1 | ping www.voidking.com |
主机为:8.136.13.58
3、捕获数据包
1 | tcpdump -i eth0 host 8.136.13.58 -w stream.pcap |
4、读取数据包
1 | tcpdump -r stream.pcap |
参考文档:在 Linux 命令行中使用 tcpdump 抓包
4. 查看数据包
1、Wireshark打开捕获到的数据包文件(.pcap文件)。
2、Wireshark将显示捕获到的所有数据包。
3、可以使用过滤器过滤出特定的流量。
4、点击任何数据包以查看其详细信息,包括协议、源和目标地址、时间戳和数据内容等。
5. Wireshark过滤器表达式
Wireshark过滤器表达式是用来过滤和搜索数据包的一种机制。这些表达式是基于BPF过滤器的语法,并支持大量的协议和字段过滤器。
5.1. 逻辑运算符
Wireshark支持逻辑运算符“and”、“or”和“not”。可以使用这些运算符将多个过滤条件组合起来。
例如,“tcp and port 80”表示同时过滤TCP流量和端口为80的流量。
5.2. 比较运算符
Wireshark支持比较运算符“==”、“!=”、“>”、“<”、“>=”和“<=”。可以使用这些运算符比较数据包中的字段值。
例如,“ip.src == 192.168.1.1”表示源IP地址为192.168.1.1的数据包。
5.3. 字段过滤器
Wireshark支持许多字段过滤器,这些过滤器用于过滤和搜索特定的协议字段。
例如,“tcp.port”表示TCP端口,而“http.request.uri”表示HTTP请求的URI字段。可以在过滤器表达式中使用这些字段过滤器来定位特定的数据包。
5.4. 协议过滤器
Wireshark支持多种协议过滤器,这些过滤器用于过滤特定的协议流量。
例如,“tcp”表示TCP流量,“udp”表示UDP流量,“http”表示HTTP流量等。
5.5. 限制表达式
Wireshark支持一些限制表达式,这些表达式用于限制过滤器的搜索结果。
例如,“ip.src == 192.168.1.1 limit 10”表示仅显示源IP地址为192.168.1.1的前10个数据包。