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