type
status
date
slug
summary
tags
category
icon
password
Wireshark是一款开源的网络协议分析工具,它可以用于捕获和分析网络流量,捕获来自网络的数据包,并对这些数据包进行解码和分析,一般是网络工程师和运维工程师常备的工具。既然Wireshark是一个全能的抓包工具,作为程序员在日常工作中调试网络接口分析Bug必然不在话下(因此文章标题为牛刀小试),不过网络上对如何使用 Wireshark 进行抓包的教程还是非常稀少的,倒是有些系统性的书可以参阅下。有能力的朋友建议直接查看官方Wiki进行尝试:https://wiki.wireshark.org/Home
有人说 Wireshark 太难用了,简单抓个Https包不如Charles之类的工具来的简单,这也是因为 Wireshark 太强大以至于难以驾驭,但是 Wireshark 真的可以帮助我们看清各种网络协议的本质,相信爬上这个学习陡坡之后就会对这个工具将会有不一样的评价。本文将会根据实践有效的 Https 抓包进行记录,实践环境:MacOS Ventura; Wireshark Version 4.0.6
Wireshark 常用功能介绍
Capture Filter
注意:设置 Capture Filter 之前务必三思,以免把有用的包也过滤掉,尤其是容易被忽略的广播包。
如何锁定目标的包相关会话包
选择目标包之后右键,Follow TCP Flow,Wireshark 会通过两端的IP和端口号为我们过滤相关的数据包。
如何自动生成过滤表达式
- 选择目标包右键,选择
Prepare a Filter-->Selected
将会生成过滤表达式到,Filter 输入框,此时可以进行修改。继续使用下面Not Selected
之类的选项可以在既有选项上继续拼接,自由度还是非常高可以自行尝试。

- 如果选择
Apply as Filter-->Selected
将会直接将其提交到 Filter 输入框中并执行。
- 此外,我们可以对包中的任意字段进行自定义过滤表达式生成的操作。例如我们将
Source Address
字段的值生成Filter表达式:

一些Wireshark实用的额外设置
- Color Rules 给不同的包类型设置不同颜色。入口路径:View—Color Rules

- 设置抓到包的时间格式,入口路径:View—Time Display Format

主旨内容
Http 抓包流程
Https 解密抓包流程
Https 解密抓包最重要的就是 SSL/TLS 的解密操作。常见的两种方式:
- 获取公钥用于解密
- 伪装成中间人,使用自己的证书转发所有流量到服务端
- 当客户端(如浏览器或移动应用程序)与服务器进行TLS握手时,为了解密传输的加密数据,Charles需要生成一个自签名的根证书,并将其安装到设备或浏览器上。客户端在与服务器建立TLS连接时会验证这个自签名根证书。
- 当客户端与服务器进行TLS握手时,Charles会拦截握手通信并使用之前安装的证书对服务器进行身份验证。Charles会生成一个临时证书来与服务器进行 TLS 握手交换密钥,然后使用该密钥来解密传输的数据。解密后的数据可以在Charles界面中进行查看和分析。
中间人抓包Https流量的原理:
iPhone 抓包设置
需要抓包手机中的数据,可以通过创建一张虚拟网卡,抓包这张网卡上的所有流量。
iPhone 抓包 Https
Wireshark上不可行
总结归纳
使用Wireshark来抓包TLS还是需要自备密钥的,因为直接抓网卡的流量,它没有中间人的方式来抓包。虽然有一些返奇淫技巧来实现,不过配制的难度都较高,跟移动设备之间的联动也没有很方便。
如果是业务开发,需要在移动设备上进行tls解码,还使用 Charles 这样的工具进行中间人模拟抓取吧。
参考文档
致谢: