wireshark 抓包整理———— 抓取https

前言

简单介绍一下wireshark如何抓取tls的信息显示明文,这里可以理解为https也行。

正文

我们晓得tls 是经过加密的,那么得的ip包里面的数据内容也是加密的,那么我们需要解密。

解密自然是需要秘钥证书的,那么我们就需要去填写某个ip地址的私钥证书理论上是可行的。

嗯,这种方式肯定可以哇。

那么出现了另外一个问题,那就是呢? 是啥子呢?

我们证书怎么拿到呢? 服务器的东西,如果不是我们的网站那更是别想了。

那怎么搞?

SSLKEYLOGFILE 是由 Mozilla 开发团队首先引入的一个调试功能,随后被 Google Chrome 等浏览器采纳

并成为网络分析工具(如 Wireshark)的非正式行业惯例,并没有组织或者标准定义这个行为,是属于一个事实上的规范

由 wireshark + chrome 抓 https 包的原理大概就是

1、chrome 发起 https 请求的时候,会将站点的加密密钥信息存储到 SSLKEYLOGFILE 指定的文件中

2、wireshark 解析报文的时候,会从 SSLKEYLOGFILE 指定的文件中读取加密密钥信息,对加密报文进行解密

因此第三方程序请求 https 报文时,如果需要使用 wireshark 进行解密报文,那么也得需要增加对 SSLKEYLOGFILE 的支持

好在一般的库也是支持的。

// 设置环境变量
Environment.SetEnvironmentVariable("SSLKEYLOGFILE", "path/to/sslkeylogfile.txt");

// 然后正常使用HttpClient或其他网络请求
using var client = new HttpClient();
var response = await client.GetAsync("https://example.com");

c# 本身就支持,库里面自动会去监测到SSLKEYLOGFILE。

就会自动的去写入这个环境变量位置。

SSLKEYLOGFILE, 这样。

然后在wireshark中这样设置:

这样就ok了。

posted @ 2025-05-08 19:00  敖毛毛  阅读(485)  评论(0)    收藏  举报