gpt4 book ai didi

c - 为什么我无法嗅探 HTTPS 流量?

转载 作者:行者123 更新时间:2023-11-30 21:21:48 25 4
gpt4 key购买 nike

我实现了一个自制的嗅探器(基于 winpcap),并尝试在浏览 HTTPS 网站(gmail 和 facebook)时使用它来嗅探 TCP 连接上的端口 443,但我的代码无法检测到任何流量。

我研究了哪些端口用于建立HTTPS session ,并根据Wikipedia ,默认端口为443。

下面是尝试检测我有兴趣嗅探的流量的代码的相关部分。代码可以编译,但由于某种原因我看不到任何数据包。我无法理解为什么它不起作用。 SSL 流量是否可能发生在不同的端口上?代码有错误吗?

if( ntohs(tcpheader->source_port) == 443 || ntohs(tcpheader->dest_port == 443))
{
printf("\nHTTPS:\n");
for(i=0;i<Size;i++)
{
printf("%.2x",Buffer[i]);
if(i%16==0)
printf("\n");
}
//do some something.
}

最佳答案

您自制的嗅探器在查看端口号时存在错误。具体来说,当您检查 dest_port 时。您正在对 dest_port == 443 的结果应用 ntohs()。你应该解决这个问题:

if( ntohs(tcpheader->source_port) == 443 || ntohs(tcpheader->dest_port) == 443)

有缺陷的代码几乎肯定会导致 || 的另一侧出现 0,因为 dest_port 的网络字节顺序是不太可能匹配 443

可以在不同于 443 的端口上使用 HTTPS,但它不太可能是随机端口。这个其他端口将以通常的方式在 URL 中指定,但以 https 开头。例如:

https://some.server.net:8443/

因此,甚至可以通过端口 80 使用 HTTPS,但我不知道有任何网络服务器会实际检查 SSL 客户端 hello,然后回退到清除处理中。

有一个extension to HTTP在与客户端明确需要安全通信的情况下进行协商后,允许其切换到 SSL。但是,这与 HTTPS 不同。

关于c - 为什么我无法嗅探 HTTPS 流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com