新版QQ不僅僅通過UDP方式登錄服務器,還能夠以TCP方式登錄。本文利用SNIFFERPRO工具監視QQ登錄全過程,為了讓大家更好的理解QQ登錄過程,抓包過程結合防火墻技術,每出現一種登錄方式先抓取報文,然后用防火墻關閉該通道,這樣QQ就會自動選擇其它方式試圖登錄服務器,反復如此就可以弄清楚QQ所有登錄方式和QQ服務器的地址及端口。
1登錄速度最快的UDP方式
看看抓到的報文
圖QQ1
報文中61.53.187.229是本地IP地址,219.157.70.130是ISP的DNS服務器IP地址。從報文中可以看到QQ首先發出7個DNS解析請求,并且順利獲得了相應IP:
sz.tencent.com61.144.238.145
sz2.tencent.com61.144.238.146
sz3.tencent.com202.104.129.251
sz4.tencent.com202.104.129.254
sz5.tencent.com61.141.194.203
sz6.tencent.com202.104.129.252
sz7.tencent.com202.104.129.253
以上IP也可以通過PING域名的方法得到。接著,QQ向這7個服務器中的3個發送UDP數據包,它們是發送到
202.104.129.254的UDP數據包
202.104.129.252的UDP數據包
61.144.238.146的UDP數據包
如果服務器在5秒中沒有回應,就發如下UDP數據包
202.104.129.251的UDP數據包,
61.141.194.203的UDP數據包,
61.144.238.145的UDP數據包,
再過5秒后發送到202.104.129.253的UDP數據包
在此過程中如果服務器有回復,QQ選擇回復速度最快的一個作為連接服務器,圖QQ1中顯示分別得到了SZ4/SZ7/SZ6.tencent.com的回應,QQ選擇SZ4.tencent.com作為登錄服務器。。通過分析可以知道,如果防火墻不允許QQ走UDP方式,那么QQ至少需要10秒才能登錄服務器。圖QQ1報文清晰的顯示本地端口是4000,目的端口是8000。為了以后的實驗,這里設置防火墻攔截發往以上7個IP地址的8000端口的UDP數據包。攔截后再也沒有發現新的UDP服務器地址。
2通過80端口的TCP方式
圖QQ2顯示的是防火墻攔截UDP數據包后,QQ登錄服務器的報文。從圖中可以看出幾點變化:
域名 從類似sz?.tencent.com改為tcpconn?.tencent.com
協議 不再是UDP而是TCP
端口 目標端口80,本地端口1042(不固定1024-65534)
80端口是HTTP協議默認的端口,瀏覽網頁一般都是走80端口,許多防火墻允許用戶瀏覽網頁,所以80端口獲準允許通過。tcpconn.tencent.com域名對應的IP是218.17.209.23,繼續做實驗,發現如下域名與IP對應關系:
tcpconn.tencent.com218.17.209.23
tcpconn3.tencent.com218.17.209.23
tcpconn2.tencent.com218.18.95.153
tcpconn4.tencent.com218.18.95.153
雖然有4個域名,但是只有2個服務器IP。
3通過443端口的TCP方式
繼續實驗,用防火墻攔截上面提到的服務器80端口通道,繼續探索QQ的登錄方式。
圖QQ3清楚的表明QQ是通過TCP協議連接到服務器的443端口,443是HHTPS協議的默認端口,HTTPS也是提供用戶網頁瀏覽服務的,不過是加密了。
圖QQ3中看到的QQ服務器IP是218.18.95.153,實驗中還發現218.17.209.23也可以提供服務。反復實驗只發現這兩個IP地址。
以上的實驗都是在有公網IP的計算機上做的,理論上在局域網內部通過一個服務器共享上網的方式下,QQ的登錄方式應該是一樣的。繼續實驗,把實驗環境換到WINDOWS2000做NAT方式下的網絡中,防火墻安裝在服務器上,封堵上面提到的IP和相應端口。局域網內部所有QQ用戶都無法登錄服務器了。也可以把這些地址加入安全策略中的“IP安全策略”,并選擇BLOCK通訊即能有效作到禁止LAN內用戶登陸使用QQ。
還有一類軟件需要提一下,就是以MYIM為代表的兼容多種即時通信軟件的聊天軟件。MYIM可以在QQ卸載后獨立運行,而且可以使用多個QQ帳號登錄,是不是它的登錄過程不同于QQ呢?實驗中安裝最新版的MYIM(版本:MyIM1.0Betabuild0225),防火墻成功的封堵了MYIM的登錄,這也好理解,畢竟QQ服務器是相同的。
圖QQ4顯示無法通過NAT代理服務器登錄QQ
4用防火墻封QQ廣告
流行的木子版QQ客戶端具備去廣告功能,本文提供另外的方法,使用防火墻也可以達到禁止QQ廣告的目的。用防火墻攔截所有來自下面網址的數據報文,QQ就無法訪問服務器的廣告網頁了。這些地址是QQ成功登錄后在QQ通訊過程中通過SNIFFERPRO抓到的。
61.172.249.133
61.172.249.134
61.172.249.135
218.17.217.105
218.17.217.106
219.133.40.154
219.133.40.152
219.133.40.153
219.133.40.155
219.133.40.15qqshow-ufs.tencent.com
219.133.40.157qqring.clent.tencent.com
不過,QQ仍然彈出系統消息等窗口也非常討厭,找到QQ的安裝目錄(默認在C:\ProgramFiles\Tencent\qq),把其中的可執行文件QQexternal.exe文件改名為QQexternalb.exe。再登錄QQ就沒有窗口彈出來了。以上實驗在騰訊QQ2003IIIBuild0117簡體中文版下通過。
5關于QQ安裝目錄下的Config.db文件
用記事本打開Config.db文件,發現跟上面提到的域名極為相似的域名:
61.144.238.146:8000
sz.tencent.com:8000
sz2.tencent.com:8000
sz3.tencent.com:8000
sz4.tencent.com:8000
sz5.tencent.com:8000
sz6.tencent.com:8000
sz7.tencent.com:8000
tcpconn.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
tcpconn2.tencent.com:80
tcpconn3.tencent.com:80
tcpconn4.tencent.com:80
http2.tencent.com:80
http.tencent.com:443
也許這就是QQ記錄服務器地址的文件,不過,最后兩項用普通QQ帳號沒有涉及到,根本就沒有發起連接包。也許是收費用戶的服務器吧,這里也提供出他們的IP地址:
http.tencent.com218.17.209.42
http2.tencent.com61.144.238.149
結束語
如果騰訊增加新的QQ服務器,QQ也還是可以登錄的。另外,用第三方的代理軟件如NECE-BORDER等,支持Anonymous的Socks5代理還是可能繞過去,登陸使用QQ。