FiddlerCore如何解密HTTPS流量

Sil*_*ght 4 c# windows-applications fiddlercore

我为捕获https流量写了一个小程序.我想使用该软件捕获DECODED获取和发布数据.
如你所知,Fiddler应用程序可以像魅力那样做,现在我正在寻找一种在我的程序中这样做的方法.

例如,这是我的代码:

   void FiddlerApplication_AfterSessionComplete(Fiddler.Session oSession)
        {
            this.Invoke(new MethodInvoker(delegate
            {
                oSession.bBufferResponse = true;
                txtLog.Text += "full-url : \r\n" + oSession.fullUrl.ToString() + "\r\n-----------------------------------------------\r\n";
                txtLog.Text += "method : \r\n" + oSession.oRequest.headers.HTTPMethod + "\r\n-----------------------------------------------\r\n";
                txtLog.Text += "request headers : \r\n" + oSession.oRequest.headers + "\r\n-----------------------------------------------\r\n";
                txtLog.Text += "responce headers : \r\n" + oSession.oResponse.headers + "\r\n-----------------------------------------------\r\n";
                txtLog.Text += "get request body as string : \r\n" + oSession.GetRequestBodyAsString() + "\r\n-----------------------------------------------\r\n";
                txtLog.Text += "request body bytes : \r\n" + oSession.requestBodyBytes + "\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n";

                txtLog.SelectionStart = txtLog.Text.Length;
                txtLog.ScrollToCaret();
            }));
        }
Run Code Online (Sandbox Code Playgroud)

get request body as stringtxtLoghttps网页中如下所示:

get request body as string : 
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Major Version: 3
Minor Version: 1
Random: 52 02 18 75 64 2D 8D 65 75 B9 C4 1B 58 76 92 3E 6B C5 BF 1D 3B D4 53 5D D2 FA CA D8 BF CE 02 5D
SessionID: empty
Ciphers: 
    [002F]  TLS_RSA_AES_128_SHA
Run Code Online (Sandbox Code Playgroud)

什么是握手部分,我该如何解码呢?
如您所知,安装的fiddler应用程序中有两个文件(TrustCert.exe和makecert.exe).
什么是这些文件,我可以在我的小应用程序中使用它们来解码数据吗?怎么样?

提前致谢

Eri*_*Law 8

FiddlerCore类库解密使用人在中间人的做法HTTPS流量.

正如Fiddler书中所讨论的那样:

HTTPS协议将HTTP请求与发送这些请求的基础TCP/IP网络连接之间的加密(SSL或TLS)连接夹在中间.因此,由于使用加密协议,网络中介或观察者无法查看或修改HTTP流量.然后,您可能会惊讶地发现,如果配置得当,Fiddler可以查看和修改HTTPS流量.Fiddler通过使用HTTPS中的"中间人"方法来实现这一点,这意味着当与客户端交谈时,它假装成服务器,并且在与服务器通信时,它假装是客户端.

HTTPS协议明确旨在通过使用数字证书来验证HTTPS服务器(以及可选的客户端)的身份来阻止此攻击.当客户端从服务器接收证书时,它通过确定证书是否链接到客户端或操作系统信任的根证书颁发机构来验证证书本身是否值得信任.由于您通常在自己的计算机上运行Fiddler,因此您可以重新配置浏览器或操作系统以信任Fiddler的根证书.执行此操作后,客户端应用程序在检测到流量受Fiddler生成的证书保护时不会发出警告.

如果您的目标是将此功能嵌入到您的应用程序中,您应该在您的应用程序中使用FiddlerCore--这就是它存在的原因!

关于"握手"的问题 - 握手是客户端和服务器如何就HTTPS通信的参数达成一致(例如,使用什么密码和密钥).你没有"解码"握手本身--FiddlerCore会为你处理这个问题.

您可能会感到困惑,因为HTTPS流量在HTTP CONNECT隧道内运行,并且该隧道在FiddlerCore中也可见.要确保还捕获了HTTPS会话,请确保FiddlerCoreStartupFlags.DecryptSSL在调用Startup方法时传递该标志.此外,请确保它makecert.exe与程序的可执行文件位于同一文件夹中.

另外,请记住,在Session已经完成处理设置bBufferResponse属性没有任何效果; 你应该删除它.