Wireshark抓包分析微信功能----tcp/ip选修课期末大作业
分析相關(guān)功能所抓取的數(shù)據(jù)包和完整大作業(yè)報告(word版)均已上傳至Wireshark抓包分析微信功能----tcp/ip選修課期末大作業(yè)-網(wǎng)絡(luò)監(jiān)控文檔類資源-CSDN文庫
適合Wireshark入門的小伙伴們或者趕計算機網(wǎng)絡(luò)期末大作業(yè)無從下手的uu們。
鐵汁們,請放心食用!加油吧,期末人!開卷,絕不開擺!
目錄
一、設(shè)計和實現(xiàn)對流行手機網(wǎng)絡(luò)應(yīng)用的業(yè)務(wù)分析
二、網(wǎng)絡(luò)認(rèn)證、業(yè)務(wù)、傳輸過程分析與問題排除
1、題目要求
2、實驗環(huán)境
3.實驗報告
3.1虛擬AP配置過程
3.2 wireshark的MAC過濾器設(shè)計
3.3微信登陸過程解析
3.4 微信朋友圈的解析
3.5 微信瀏覽網(wǎng)頁的解析
3.6 微信附近的人的解析
3.7微信聊天過程分析
3.8微信公眾號(課堂派)解析
4. ??主要步驟流程圖
5.?? 實驗總結(jié)
5.1關(guān)鍵技術(shù)總結(jié)
5.2問題總結(jié)
5.3解決問題的方法
一、設(shè)計和實現(xiàn)對流行手機網(wǎng)絡(luò)應(yīng)用的業(yè)務(wù)分析
二、網(wǎng)絡(luò)認(rèn)證、業(yè)務(wù)、傳輸過程分析與問題排除
1、題目要求
在有線網(wǎng)絡(luò)環(huán)境下(以太網(wǎng)),采用hainanu客戶端PPoE撥號方式上網(wǎng)。在電腦上配置好虛擬AP,手機接入該局域網(wǎng)后使用了“微信”的網(wǎng)絡(luò)應(yīng)用。發(fā)現(xiàn)電腦通過ARP全網(wǎng)廣播獲得手機MAC地址之后,手機進行DNS查詢,得到服務(wù)器IP地址后, 建立連接。分析了微信不同的網(wǎng)絡(luò)服務(wù)的實現(xiàn)。
2、實驗環(huán)境
操作系統(tǒng):Windows10(電腦) HarmonyOS(手機);
應(yīng)用軟件:微信(HarmonyOS) wireshark(version:3.4.6)hainanu客戶端;windows7自帶cmd(或用win10自帶的虛擬AP:系統(tǒng)自帶的移動熱點 );
網(wǎng)絡(luò)環(huán)境:通過PPoE撥號客戶端直接登陸校外網(wǎng)(教育網(wǎng)),移動終端通過電腦建立的虛擬AP接入外網(wǎng);
網(wǎng)絡(luò)平均延時1ms(在cmd中輸入指令“ping www.163.com”得到);
????????? ??????移動終端的mac地址:B2:90:7E:E8:D7:28;
????????? ??????移動終端分配的ip地址:192.168.137.188;
電腦的mac地址:04-0E-3C-9D-FE-45;
電腦的ip地址:192.168.1.100(首選);
使用設(shè)備:LAPTOP-1KECNL1N,huawei Nova5 pro;
3.實驗報告
3.1虛擬AP配置過程
? ?1)以管理員身份運行命令提示符
? ?2)啟用并設(shè)定虛擬WiFi網(wǎng)卡
- 將mode設(shè)定為allow以啟用虛擬WiFi網(wǎng)卡
- 將無線網(wǎng)名稱ssid設(shè)置為:VituralAP
- 將無線網(wǎng)密碼設(shè)置為:123456789
- 綜上,運行命令:netsh wlan set hostednetwork mode=allow ssid=VituralAP key=123456789
- 運行截圖:
? ? ?3)設(shè)置Internet連接共享
? ? 4)開啟無線網(wǎng)絡(luò)
在命令提示符中運行:netsh wlan start hostednetwork
注:此處若出現(xiàn)問題見5.2(1)
? ?5)查看虛擬AP
在命令提示符中運行:netsh wlan show hostednetwork
3.2 wireshark的MAC過濾器設(shè)計
wireshark的過濾器應(yīng)用于WinPacp,并使用Berkeley Packet Filter(BPF)語法。這個語法被廣泛用于多種數(shù)據(jù)包嗅探軟件,主要是因為大部分?jǐn)?shù)據(jù)包嗅探軟件都依賴于使用BPF的libpcap/WinPacp庫。
首先設(shè)定捕獲過濾器,設(shè)定只捕獲VirtualAP中的數(shù)據(jù)包:
然后設(shè)置顯示過濾器:
顯示過濾器根據(jù)指定的表達(dá)式用于在一個已捕獲的數(shù)據(jù)包集合中,隱藏不想顯示的數(shù)據(jù)包,或者只顯示那些需要的數(shù)據(jù)包。顯示過濾器應(yīng)用于捕獲時或者捕獲后,告訴Wireshark只顯示那些符合過濾條件的數(shù)據(jù)包。
故將wireshark的過濾器中輸入BPF原語:
eth.dst ==B2:90:7E:E8:D7:28||eth.src == B2:90:7E:E8:D7:28
此處的“B2:90:7E:E8:D7:28”為我的手機的mac地址,利用該過濾器篩選出源地址或者目的地址是我的手機的mac地址的數(shù)據(jù)包。
3.3微信登陸過程解析
當(dāng)打開手機微信開始登錄認(rèn)證時抓包如下:
首先,由于上一節(jié)中Wireshark的過濾器中已經(jīng)設(shè)定只篩選出源mac地址或者目的mac地址是我的手機的mac地址的包,我的手機的ip地址是192.168.137.188,AP的ip地址是192.168.137.1。
分析抓取到的包的數(shù)據(jù)可知,首先,微信客戶端查詢微信服務(wù)器,域名為
weixin.qq.com 的 IP 地址
然后,獲得DNS應(yīng)答,域名服務(wù)器解析出多個ip地址:
然后,進行三次握手,前三個包是在進行tcp三步握手認(rèn)證:第一次握手,客戶端發(fā)送一個TCP,標(biāo)志位為SYN=1,第二次握手,服務(wù)器向客戶端返回一個數(shù)據(jù)包,SYN=1,ACK=1,將確認(rèn)序號設(shè)置為客戶的序號seq加1,即0+1=1;第三次握手,客戶端收到服務(wù)器發(fā)來的包后檢查確認(rèn)序號是否正確,即第一次發(fā)送的序號seq加1,以及標(biāo)志位ACK是否為1。若正確,客戶端會再向服務(wù)器端發(fā)送一個數(shù)據(jù)包,SYN=0,ACK=1,確認(rèn)序號=1,并且把服務(wù)器發(fā)來ACK的序號seq加1發(fā)送給對方,發(fā)送序號seq為1??蛻舳耸盏胶蟠_認(rèn)序號值與ACK=1,代表客戶端請求建立連接;
并且,利用SSL/TLS密碼通信框架進行密碼驗證和身份核驗以及加密通信,最終實現(xiàn)微信的登錄。
在其中一個TLS協(xié)議數(shù)據(jù)包中客戶端向服務(wù)器端發(fā)送client hello的消息,包含可用版本號、客戶端隨機數(shù)、會話ID、可用的密碼套件清單、可用的壓縮方式清單等重要信息。
3.4 微信朋友圈的解析
在手機微信朋友圈界面下拉刷新,抓包如下:
?? 首先客戶端發(fā)出DNS查詢,然后DNS服務(wù)器發(fā)回應(yīng)答,告知weixin.qq.com的ip地址。然后進行三次握手建立連接,開始傳輸http數(shù)據(jù)包,里面封裝了朋友圈界面的內(nèi)容。并且在傳輸結(jié)束后,進行tcp斷開連接的四次握手,發(fā)送FIN報文和確認(rèn)報文,最終結(jié)束連接。
3.5 微信瀏覽網(wǎng)頁的解析
利用微信的搜一搜功能訪問www.baidu.com
抓取到的包如下:
分析可知,首先,進行三次握手,建立傳輸之后,利用HTTP協(xié)議進行數(shù)據(jù)傳輸,但這個數(shù)據(jù)包還不是所要訪問的baidu.com。這里傳輸?shù)闹皇俏⑿艃?nèi)承載網(wǎng)頁的框架界面,在加載完畢后,通過將FIN位置1,通過四次握手,斷開連接。
然后,繼續(xù)分析可知,重新建立一個連接,利用http協(xié)議發(fā)出GET請求,請求URI為http://www.baidu.com/的網(wǎng)頁,通過http協(xié)議進行傳輸,從微信服務(wù)器將頁面數(shù)據(jù)傳輸給微信客戶端,實現(xiàn)瀏覽網(wǎng)頁服務(wù)。
?? ?3.6 微信附近的人的解析
抓取到的包如下:
分析抓取到的包可知,在使用“附近的人”功能時,首先利用DNS查詢
caict.com的ip地址,通過查詢資料,這個網(wǎng)址是中國信息通信研究院的網(wǎng)站,猜測可能是使用這個功能時,在獲取位置信息之前需要信通院的數(shù)據(jù)監(jiān)測或監(jiān)管。
然后,通過利用DNS查詢amap.com的ip地址,通過查資料得知,這個網(wǎng)址是高德地圖的官方網(wǎng)站。在進行三次握手建立連接之后,微信客戶端的地點信息被收集起來存儲在服務(wù)器中,當(dāng)客戶端發(fā)送附近的人請求時,服務(wù)器調(diào)用地圖信息,通過計算,得到位于附近的用戶數(shù)據(jù),并將它們傳給該客戶端。
? ??3.7微信聊天過程分析
抓取到的包如下:
通過分析可知,在進行微信聊天時,首先通過tcp三次握手建立連接,然后,用SSL/TLS密碼通信協(xié)議進行安全通信并保持?jǐn)?shù)據(jù)完整性,其中一個TLS協(xié)議數(shù)據(jù)包中客戶端向服務(wù)器端發(fā)送client hello的消息,使客戶端和服務(wù)器建立連接,再利用tcp協(xié)議傳輸數(shù)據(jù),在信息發(fā)送的過程中利用SSL對消息進行加密傳輸。
? ??3.8微信公眾號(課堂派)解析
首先在公眾號搜索界面搜索課堂派,點擊之后開始抓包,進入課堂
派公眾號首頁:
抓取到的包如下:
分析抓取到的數(shù)據(jù)包可知,在使用公眾號功能時,首先通過tcp三次握手建立連接,然后開始利用http進行數(shù)據(jù)傳輸,并且,使用TLSv1.2進行安全通信。在瀏覽公眾號時,微信客戶端和服務(wù)器多次進行數(shù)據(jù)通信。
4. ??主要步驟流程圖
5.?? 實驗總結(jié)
5.1關(guān)鍵技術(shù)總結(jié)
1)利用cmd配置虛擬AP
以管理員身份運行命令提示符并運行命令:netsh wlan set hostednetwork mode=allow ssid=VituralAP key=123456789,其中的各項參數(shù)可以調(diào)整,然后,設(shè)置Internet連接共享。最后,開啟無線網(wǎng)絡(luò),即在命令提示符中繼續(xù)運行:netsh wlan show hostednetwork。
2)wireshark的過濾器語法
?? 捕捉過濾器語法:
| 語法: | Protocol | Direction | Host(s) | Value | Logical Operations | Other expression |
| 例子: | tcp | dst | 10.1.1.1 | 80 | and | tcp dst 10.2.2.2 3128 |
??顯示過濾器語法:
| 語法 | Protocol | . | String 1 | . | String 2 | Comparison?operator | ? Value | Logical?Operations | Other?expression |
| 例子 | http | ? | request | ? | method | == | "POST" | or | icmp.type |
string1和string2是可選的。依據(jù)協(xié)議過濾時,可直接通過協(xié)議來進行過濾,也能依據(jù)協(xié)議的屬性值進行過濾。
- 按協(xié)議進行過濾:
snmp || dns || icmp?? ????? 顯示SNMP或DNS或ICMP封包。
- 按協(xié)議的屬性值進行過濾:
ip.src == 10.230.0.0/16?? ?? 顯示來自10.230網(wǎng)段的封包。
tcp.port == 25?? ?????? 顯示來源或目的TCP端口號為25的封包。
tcp.dstport == 25???? ?????? 顯示目的TCP端口號為25的封包。
http.request.method== "POST"?????? 顯示post請求方式的http封包。
http.host == "tracker.1ting.com"顯示請求的域名為tracker.1ting.com的http封包。
tcp.flags.syn == 0×02? ??? 顯示包含TCP SYN標(biāo)志的封包。
3)TCP通信原理
主要是三次握手的原理,第一次握手,客戶端發(fā)送一個TCP,標(biāo)志位為SYN=1,第二次握手,服務(wù)器向客戶端返回一個數(shù)據(jù)包,SYN=1,ACK=1,將確認(rèn)序號設(shè)置為客戶的序號seq加1,即0+1=1;第三次握手,客戶端收到服務(wù)器發(fā)來的包后檢查確認(rèn)序號是否正確,即第一次發(fā)送的序號seq加1,以及標(biāo)志位ACK是否為1。若正確,客戶端會再向服務(wù)器端發(fā)送一個數(shù)據(jù)包,SYN=0,ACK=1,確認(rèn)序號=1,并且把服務(wù)器發(fā)來ACK的序號seq加1發(fā)送給對方,發(fā)送序號seq為1。客戶端收到后確認(rèn)序號值與ACK=1,代表客戶端請求建立連接;
4)SSL/TLS密碼通信原理
SSL協(xié)議分為兩部分:Handshake Protocol和Record Protocol。其中Handshake Protocol用來協(xié)商密鑰,協(xié)議的大部分內(nèi)容就是通信雙方如何利用它來安全的協(xié)商出一份密鑰。 Record Protocol則定義了傳輸?shù)母袷健S捎诜菍ΨQ加密的速度比較慢,所以它一般用于密鑰交換,雙方通過公鑰算法協(xié)商出一份密鑰,然后通過對稱加密來通信,當(dāng)然,為了保證數(shù)據(jù)的完整性,在加密前要先經(jīng)過HMAC的處理。SSL缺省只進行server端的認(rèn)證,客戶端的認(rèn)證是可選的。SSL客戶端(也是TCP的客戶端)在TCP鏈接建立之后,發(fā)出一個ClientHello來發(fā)起握手,這個消息里面包含了自己可實現(xiàn)的算法列表和其它一些需要的消息,SSL的服務(wù)器端會回應(yīng)一個ServerHello,這里面確定了這次通信所需要的算法,然后發(fā)過去自己的證書(里面包含了身份和自己的公鑰)。Client在收到這個消息后會生成一個秘密消息,用SSL服務(wù)器的公鑰加密后傳過去,SSL服務(wù)器端用自己的私鑰解密后,會話密鑰協(xié)商成功,雙方可以用同一份會話密鑰來通信了。
5.2問題總結(jié)
1)在開啟無線網(wǎng)絡(luò)時命令提示符中提示下圖報錯(5.3(1)中解決)
2)抓包之后顯示ip地址,難以逐會話對報文進行分析,不易找到想要分析的數(shù)據(jù)(5.3(2)中解決)
3)在tcp斷開連接時,需要進行四次握手,標(biāo)志位是FIN,應(yīng)該找到4個數(shù)據(jù)包,但我試了好幾次,但實際只抓到3個數(shù)據(jù)包。查了相關(guān)資料,說是因為服務(wù)器端在給客戶端傳回的過程中,將兩個連續(xù)發(fā)送的包進行了合并。
5.3解決問題的方法
1)解決“無法啟動承載網(wǎng)絡(luò),組或資源的狀態(tài)不是執(zhí)行請求操作的正確狀態(tài)”的辦法:更新驅(qū)動至較舊的版本,有的較新的網(wǎng)卡驅(qū)動不支持承載網(wǎng)絡(luò)。
2)在使用Wireshark進行分析的過程中,可以利用DNS協(xié)議,直接將各個眼花繚亂的IP解析為域名,以提高效率。將Wireshark中IP顯示為域名的方法:在Wireshark的菜單項“編輯”的最下方,找到子菜單“首選項”,將該處復(fù)選框打鉤
即可將ip解析為域名,方便分析:
總結(jié)
以上是生活随笔為你收集整理的Wireshark抓包分析微信功能----tcp/ip选修课期末大作业的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 帝国CMS浅浅滴谈一下——博客园老牛大讲
- 下一篇: UE、UI、 IA和IxD傻傻分不清