我为捕获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();
}));
}
对于https网页,和get request body as string
中的txtLog
如下所示:
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
这个握手部分是什么,我该如何解码呢? 如您所知,安装的fiddler应用程序中有两个文件(TrustCert.exe& makecert.exe) 什么是这些文件,我可以在我的小应用程序中使用它们来解码数据吗?怎么样?
提前致谢
答案 0 :(得分:8)
FiddlerCore类库使用中间人方法解密HTTPS流量。
正如Fiddler book中所述:
HTTPS协议将加密(SSL或TLS)连接三明治 HTTP请求和底层TCP / IP网络连接之间 发送这些请求的时间。网络中介或 因此,观察者无法查看或修改HTTP 由于使用加密协议,流量。你可能会 然后惊讶地发现Fiddler可以查看和修改HTTPS 如果配置适当,流量。 Fiddler通过使用a来实现这一点 HTTPS中的“中间人”方法,这意味着在谈话时 对于客户端,它假装是服务器,并在与之交谈时 服务器,它假装是客户端。
HTTPS协议明确旨在通过使用数字证书来阻止此攻击 验证HTTPS服务器的身份(以及可选的身份验证) 客户)。当客户端从服务器收到证书时,它 通过确定验证证书本身是否值得信任 它是否被链接到根证书颁发机构 受客户端或操作系统信任。因为你是典型的 在您自己的计算机上运行Fiddler,您可以重新配置您的浏览器 或操作系统来信任Fiddler的根证书。你做完之后 因此,客户端应用程序在检测到时不会抱怨 Fiddler生成的证书正在保护流量。
如果您的目标是将此功能嵌入到您的应用程序中,您应该只在您的应用程序中使用FiddlerCore--这就是它存在的原因!
关于“握手”的问题 - 握手是客户端和服务器就HTTPS通信的参数达成一致的方式(例如,使用什么密码和密钥)。你没有“解码”握手本身--FiddlerCore为你处理这个。
您可能会感到困惑,因为HTTPS流量在HTTP CONNECT
隧道内运行,并且该隧道在FiddlerCore中也可见。为确保您的HTTPS会话也被捕获,请务必在调用FiddlerCoreStartupFlags.DecryptSSL
方法时传递Startup
标志。另外,请确保makecert.exe
与程序的可执行文件位于同一文件夹中。
另外,请记住,在会话之后设置bBufferResponse
属性已经完成处理无效;你应该删除它。