利用Wireshark軟件對微信協(xié)議的分析
利用Wireshark 軟件對微信協(xié)議的分析 ——QPIC賈冰杰 1120101251全然 1120101259王浩峰 112010
利用Wireshark 軟件對微信協(xié)議的分析 ——QPIC
賈冰杰 1120101251
全然 1120101259
王浩峰 1120101261 (組長) 謝青梅 1120101262
閆郡 1120101263
,數(shù)據(jù)通信基礎 小組:qpic
目錄
一. 實驗規(guī)劃 ——03
二. 實驗內容
步驟1. 配置虛擬AP :
步驟2. 分析微信的登陸認證過程
步驟3. 分析微信的普通聊天過程
步驟4. 微信-附近的人
三. 實驗結論:關于微信協(xié)議
1. 微信通過內置瀏覽器和服務器交互數(shù)據(jù)。
2. 微信的數(shù)據(jù)傳輸未加密
3. 微信不同功能有獨立的服務器
4. 關于”微信與運營商大戰(zhàn)”的思考
參考文獻
2 ——04 ——05 ——06 ——07 ——09 ——09 ——10 ——11 ——12
,數(shù)據(jù)通信基礎 小組:qpic
一. 實驗規(guī)劃:
1. 接入手機, 通過wireshark 抓取微信數(shù)據(jù)包。
2. 分析微信的登陸認證過程
3. 分析微信的普通聊天過程
3.分析微信的典型應用——附近的人
4.總結:微信的協(xié)議
3
,數(shù)據(jù)通信基礎 小組:qpic
二. 實驗內容:
步驟1、配置虛擬AP :
由于微信的pc 網(wǎng)頁版本不容易操作,針對本次分析,我們使用Android 手機系統(tǒng)下的微信客戶端進行操作。通過手機連接至pc 虛擬的無線網(wǎng)絡進行微信的連接,這樣通過wireshark 軟件進行抓包。
win7系統(tǒng)下可以很容易將無線網(wǎng)卡設置為虛擬AP , 供其他無線設備接入。 配置腳本如下:
#Vitual_Wifi_setup.bat
netsh wlan set hostednetwork mode=allow ssid="HappyBoy" key=******
#在GUI 界面下,將正在使用的某個網(wǎng)絡連接共享給該虛擬AP .
netsh wlan start hostednetwork
netsh wlan show hostednetwork
將手機接入后, 可以看到: Number of clients為1.
打開wireshark ,能看到在接口列表中已經(jīng)有虛擬AP 了(如圖)。手機接入后,打開微信app ,點擊開始抓包,就能抓到微信數(shù)據(jù)包了。
4
,數(shù)據(jù)通信基礎 小組:qpic
步驟2. 分析微信的登陸認證過程:
打開微信客戶端,微信開始登錄,可以看到手機分配到的IP 為192.168.137.87,AP 站點的IP 為192.168.137.1
第一包數(shù)據(jù) 是一個域名查詢,微信客戶端向網(wǎng)絡查詢微信服務器,域名為long.weixin.qq.com 的IP 地址;
第二包數(shù)據(jù) 是ARP 地址解析,AP 站點向全網(wǎng)廣播,詢問192.168.137.87對應的MAC 地址;
第三包數(shù)據(jù) 是ARP 應答,手機告訴AP 站點自己的MAC 地址;
第四包數(shù)據(jù) 是第一包DNS 查詢的應答,將該包數(shù)據(jù)展開,可以看到:
可以看到,查詢到微信域名long.weixin.qq.com 的多個服務器IP 。 接下來TCP 的通信過程表明,微信客戶端選擇了IP 為120.204.201.154的主機進行數(shù)據(jù)傳送。
5
,數(shù)據(jù)通信基礎 小組:qpic
步驟3. 分析微信的普通聊天過程
先是建立TCP 連接:第5到第7包數(shù)據(jù)是TCP 的三次握手
首先客戶端向服務器發(fā)送標志為SYN 的連接請求,數(shù)據(jù)包標號Seq=0;
收到請求后,服務器向客戶端發(fā)送了帶有SYN 和ACK 的確認應答,發(fā)送序號Seq=0,確認序號ACK=1;接下來,客戶端向服務器發(fā)送確認應答,Seq=1,ACK=1. 連接建立完成。
第8到第19包數(shù)據(jù)是客戶端和服務器之前用HTTP 協(xié)議相互傳送了一些數(shù)據(jù)。
第18包是HTTP 數(shù)據(jù)包,它的大小為314字節(jié),其中有用數(shù)據(jù)長度為248字節(jié),數(shù)據(jù)最后一行為空行,表明數(shù)據(jù)已經(jīng)傳送完畢,如下圖所示:
第20和21包數(shù)據(jù)是關閉連接。傳送完數(shù)據(jù)后,主機發(fā)出帶FIN 的TCP 報文,要求關閉連接,客戶端發(fā)出確認(第21包數(shù)據(jù)),連接關閉。
6
,數(shù)據(jù)通信基礎 小組:qpic
超時會重傳:
第39包:未收到第38包數(shù)據(jù)的確認應答,超時后,開始重傳; 第42包:第38包數(shù)據(jù)仍未收到應答,又超時,重傳一次; 第43包:終于收到了第38包數(shù)據(jù)的應答。
步驟4. 微信-附近的人
用wireshark 抓包得到如下數(shù)據(jù)
首先是DNS 解析,展開第二包數(shù)據(jù),可以看到
7
,數(shù)據(jù)通信基礎 小組:qpic
DNS 應答返回了域名mapi.mapabc.com 的IP :211.151.71.89
mapabc.com 是北京圖盟科技有限公司的網(wǎng)站,是一家致力于互聯(lián)網(wǎng)地圖、手機地圖和相關位置服務的互聯(lián)網(wǎng)軟件技術服務公司,它是高德成員企業(yè)。(有個高德地圖的app )
隨后的幾包數(shù)據(jù),是客戶端和該服務器之間相互交換信息。
查詢該IP . 發(fā)現(xiàn)服務器位于北京。
可以看到,微信客戶端的地點信息被收集起來存儲在服務器中,當客戶端發(fā)送附近的人請求時,服務器調用地圖信息,通過計算,得到位于附近的用戶數(shù)據(jù),將它們傳給該客戶端。
附近的人---用戶頭像下載過程
第134包: HTTP 的GET 請求,展開該包:
將請求的地址輸入到瀏覽器,會看到一個用戶頭像;
第135包 是服務器端的TCP 協(xié)議將該頭像分段成兩段(第135包和136包) ,傳送給客戶端;
第136包 標為HTTP 包,表示頭像傳送出去了。
第137和138包 客戶端收到HTTP 傳來的頭像后,向服務器發(fā)TCP 確認,傳送完成。
8
,數(shù)據(jù)通信基礎 小組:qpic
三. 實驗結論:關于微信協(xié)議
1. 微信通過內置瀏覽器和服務器交互數(shù)據(jù)。
微信在應用層使用HTTP 協(xié)議傳輸數(shù)據(jù)。微信的聊天對話框如下,點擊網(wǎng)址鏈接,會跳轉到瀏覽器模式,打開該消息對應的網(wǎng)頁?,F(xiàn)在手機QQ 和微博客戶端都內置了瀏覽器。而且用wireshark 抓包發(fā)現(xiàn)微信的通信都是用HTTP 協(xié)議收發(fā)數(shù)據(jù)的,內嵌瀏覽器為網(wǎng)絡通信接口。
2. 微信的數(shù)據(jù)傳輸未加密
微信只有在輸入密碼的初次認證過程中的數(shù)據(jù)是用SSL 加密傳輸?shù)?。其他?shù)據(jù),比如聊天數(shù)據(jù),地理位置信息等,傳輸過程都沒有加密(源端加密未知)
總結:微信各個功能的數(shù)據(jù)傳輸,幾乎全都是用HTTP 協(xié)議
9
,數(shù)據(jù)通信基礎 小組:qpic
3. 微信不同功能有獨立的服務器:
①涉及到位置信息,會調用地圖,常用的有:
map.soso.com 搜搜地圖
maps.google.com 谷歌地圖
mapi.mapabc.com 高德地圖
②微信的好多圖片文件的訪問,都是對wx.qlogo.cn 和mmsns.qpic.cn 的
③微信登陸的時候,有兩個域名:long.weixin.qq.com 和short.weixin.qq.com
short.weixin.qq.com 是HTTP 協(xié)議擴展
tcp 短連接,運行8080 port,http body 為二進制。
提供API :
用戶登錄驗證
;
10