我实现了一个自制的嗅探器(基于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.
}
答案 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不同。