2013-07-17 46 views
-4

我實現了一個自制的嗅探器(基於winpcap),並用它在瀏覽HTTPS網站(Gmail和Facebook)時嗅探TCP連接上的端口443,但在443端口上看不到任何條目。爲什麼我無法嗅探HTTPS流量?

我研究使用什麼端口來建立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

1)這是StackOverflow的主題; 2)你的「自制嗅探器」是否正常工作? 3)不要相信你在Wikipedia上讀到的所有東西(可能是任何東西)(雖然443端口是** https:的默認端口)。 – 2013-07-17 02:04:55

+1

這是服務器上的端口443,而不是您的客戶端上的端口。你能看到HTTP連接嗎? – Thilo

+0

在TCP/IP級別,http和https之間沒有區別。 – xaxxon

回答

2

自制的嗅探器中有怎樣看的端口號的錯誤。特定的,當你檢查dest_port。您對dest_port == 443的結果應用ntohs()。您應該解決這個問題:

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

的bug的代碼總會導致0||的另一邊,由於dest_port網絡字節順序將不會匹配443

可以在不同於443的端口上使用HTTPS,但它不可能是隨機端口。這個其他的端口將以通常的方式在URL中指定,但是在開始時使用https。例如:

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

所以,甚至可以使用HTTPS通過端口80,但我不知道實際檢查的SSL客戶端問候,然後回退到在清澈處理任何Web服務器的。

有一個extension to HTTP允許它在與客戶端進行協商之後切換到SSL,明確需要安全通信。但是,這與HTTPS不同。

+0

哦,這是正確的,謝謝 – user2533527