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

时间:2013-07-17 02:00:15

标签: c windows https

我实现了一个自制的嗅探器(基于winpcap)并在浏览HTTPS网站(gmail和facebook)时使用它在TCP连接上嗅探端口443,但我在443端口上看不到任何条目。

我研究了用于建立HTTPS会话的端口,根据Wikipedia,它说默认端口是443。

我认为我的代码中可能存在错误(如下),也许有人可以帮助识别错误。

代码编译但由于某种原因我看不到任何数据包。 请帮我弄清楚出了什么问题。 这是我使用的代码:

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.
 }

1 个答案:

答案 0 :(得分:2)

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

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客户端问候的Web服务器,然后在清除处理中回退。

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