前言
简单介绍一下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了。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |