文章目錄
- 1 寫在前面
- 2 需求分析
- 3 幾個方法
- 4 原理分析
-
5 方法實(shí)踐
- 5.1 工具準(zhǔn)備
- 5.2 詳細(xì)步驟
- 6 經(jīng)驗(yàn)總結(jié)
- 7 參考鏈接
- 8 更多分享
作者:架構(gòu)師李肯
一個專注于嵌入式IoT領(lǐng)域的架構(gòu)師。有著近10年的嵌入式一線開發(fā)經(jīng)驗(yàn),深耕IoT領(lǐng)域多年,熟知IoT領(lǐng)域的業(yè)務(wù)發(fā)展,深度掌握IoT領(lǐng)域的相關(guān)技術(shù)棧,包括但不限于主流RTOS內(nèi)核的實(shí)現(xiàn)及其移植、硬件驅(qū)動移植開發(fā)、網(wǎng)絡(luò)通訊協(xié)議開發(fā)、編譯構(gòu)建原理及其實(shí)現(xiàn)、底層匯編及編譯原理、編譯優(yōu)化及代碼重構(gòu)、主流IoT云平臺的對接、嵌入式IoT系統(tǒng)的架構(gòu)設(shè)計(jì)等等。擁有多項(xiàng)IoT領(lǐng)域的發(fā)明專利,熱衷于技術(shù)分享,有多年撰寫技術(shù)博客的經(jīng)驗(yàn)積累,連續(xù)多月獲得RT-Thread官方技術(shù)社區(qū)原創(chuàng)技術(shù)博文優(yōu)秀獎,榮獲CSDN博客專家、CSDN物聯(lián)網(wǎng)領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、2021年度CSDN&RT-Thread技術(shù)社區(qū)之星、RT-Thread官方嵌入式開源社區(qū)認(rèn)證專家、RT-Thread 2021年度論壇之星TOP4、華為云云享專家(嵌入式物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)師)等榮譽(yù)。堅(jiān)信【知識改變命運(yùn),技術(shù)改變世界】!
1 寫在前面
在平時(shí)工作中的網(wǎng)絡(luò)編程開發(fā),少不了要通過抓取網(wǎng)絡(luò)報(bào)文來分析網(wǎng)絡(luò)問題的應(yīng)用場景。有的時(shí)候,你可能通過代碼排查得焦頭爛額,毫無頭緒,但是只要一把網(wǎng)絡(luò)報(bào)文拎出來一看,一下子思路就打開了。
但是,一個嵌入式設(shè)備要怎么才能抓取其網(wǎng)絡(luò)設(shè)備呢?
假如我們的這個嵌入式設(shè)備,跑的就是普通的 RTOS 系統(tǒng),不像嵌入式Linux系統(tǒng)那樣,還可以使用諸如 tcpdump 這種命令行工具來抓取網(wǎng)絡(luò)報(bào)文,他們可能連基本的DEBUG輸入都不一樣有,僅有一個輸出LOG的串口。
那么,面對這種嵌入式設(shè)備,我們能夠怎么抓取其網(wǎng)絡(luò)報(bào)文呢?
本文將為你揭曉答案,且文中描述的方法也是筆者多年調(diào)試網(wǎng)絡(luò)問題,一直在使用的方法,希望對大家有所幫助。
2 需求分析
回到問題本身,其實(shí)需求還是比較明確的,就是需要抓取一個嵌入式設(shè)備的網(wǎng)絡(luò)報(bào)文,且這個設(shè)備不具備命令行抓取的能力,只能使用外部設(shè)備輔助完成。
同時(shí),這個嵌入式設(shè)備可能使用的是 以太網(wǎng)通訊、4G/5G等蜂窩網(wǎng)絡(luò)通訊、Wi-Fi通訊,針對這樣多樣化的通訊方式,是否能找出一種比較通用的抓包方式,滿足這幾種通訊方式下的抓包需求,這是我們所追求的。
3 幾個方法
本文先簡單介紹下,面對這種嵌入式設(shè)備的網(wǎng)絡(luò)抓包場景,可能使用到的幾種方法,但本文將會重點(diǎn)介紹其中的一種,其他的幾種,后面有空再另行整理。
- 使用路由器、交互就鏡像抓包
- 使用PC無線熱點(diǎn)捕獲抓包
- 使用網(wǎng)絡(luò)代理(中轉(zhuǎn)服務(wù)器)抓包
- 使用特殊工具抓無線空口數(shù)據(jù)包
以上幾種方法,各個各的優(yōu)勢,適用于不同的應(yīng)用場景,靈活選用即可。
像我這邊目前碰到的應(yīng)用場景,都是一些基于 Wi-Fi 通訊的終端設(shè)備,所以對我而言,采用第二種 PC無線熱點(diǎn)捕獲 抓包,就是一個最佳選擇。
4 原理分析
使用 PC無線熱點(diǎn)捕獲抓包 的這種方式,網(wǎng)絡(luò)拓?fù)鋱D如下所示:
5 方法實(shí)踐
5.1 工具準(zhǔn)備
如上面描述的抓包原理,你需要:
一臺具備網(wǎng)絡(luò)能力的PC主機(jī):如果設(shè)備需要連公網(wǎng),這臺主機(jī)還需要具備公網(wǎng)連接的能力;
一個迷你的無線網(wǎng)卡:最簡單的就類似 360Wi-Fi 那種USB無線網(wǎng)卡;如果你準(zhǔn)備的主機(jī)是一臺筆記本的話,則可以不需要額外準(zhǔn)備外置的無線網(wǎng)卡;
Windows下的Wireshark抓包工具:強(qiáng)大的網(wǎng)絡(luò)報(bào)文抓取和分析工具;
若干終端設(shè)備:配置好終端設(shè)備,使其連接由PC發(fā)射處理的無線熱點(diǎn)。
5.2 詳細(xì)步驟
1)第一步自然把相關(guān)的工具準(zhǔn)備好,相關(guān)的軟件安裝好
安裝wireshark可以參考 教程,最重要的是,記得把 WinPcap 和 USBPcap 安裝上:
2)配置PC環(huán)境,把無線熱點(diǎn)給發(fā)射出來
這里如果是 筆記本自帶了無線網(wǎng)卡的,可以參考這個 教程 把無線熱點(diǎn)搞起來。
如果是臺式主機(jī),需要外置無線網(wǎng)卡的,強(qiáng)力建議使用 360Wi-Fi,主要是廉價(jià)、便捷,應(yīng)用這種抓包場景綽綽有余。
另外,它還有一個配套的上位機(jī)工具,長這樣,基本就可以一件傻瓜式地就可以把無線熱點(diǎn)給發(fā)射出來;同時(shí),在上位機(jī)這還能看到當(dāng)前有哪些設(shè)備正連著這個無線熱點(diǎn),真的非常地方便。
3)配置終端設(shè)備連接對應(yīng)的無線熱點(diǎn)
上面的步驟完成后,終端設(shè)備就可以連接上對應(yīng)的無線熱點(diǎn)了,這個時(shí)候理論上,終端就已經(jīng)借助PC的網(wǎng)絡(luò)能力,它自己也具備了對外連接網(wǎng)絡(luò)的能力。
4)操作Wireshark抓包工具
打開wireshakr軟件,在首頁會看到很多網(wǎng)卡設(shè)備,有無線的,也有有線的,這些有波浪線的表示當(dāng)前有網(wǎng)絡(luò)數(shù)據(jù)在流動:
但是,你可能會發(fā)現(xiàn)這里并沒有那個發(fā)射無線熱點(diǎn)的 網(wǎng)卡設(shè)備 (圖中的WLAN是我筆記本的內(nèi)置無線網(wǎng)卡)。
我們可以查看下系統(tǒng) 網(wǎng)卡適配器:
5)配置下無線網(wǎng)卡適配器【關(guān)鍵步驟】
這個時(shí)候我們需要去配置一下無線網(wǎng)卡適配器,找到對應(yīng)的無線網(wǎng)卡:
右鍵 -》屬性,找到下面的這個選項(xiàng),勾選上,最后確認(rèn):
6)刷新wireshark的網(wǎng)卡設(shè)備列表
wireshark的主界面,再菜單欄找到【捕獲】-> 【刷新接口列表】,這個時(shí)候下面就會把無線網(wǎng)絡(luò)給顯示出來了:
7)啟動wireshark抓包
雙擊對應(yīng)的無線網(wǎng)卡設(shè)備,開始啟動抓包,同時(shí)在終端發(fā)起一些網(wǎng)絡(luò)交互,這時(shí)就可以看到wireshark中有網(wǎng)絡(luò)報(bào)文刷出來了。動態(tài)圖如下所示:
8)wireshark的網(wǎng)絡(luò)報(bào)文過濾
這個操作需要知道終端側(cè),在訪問哪個服務(wù)器,比如訪問百度網(wǎng)頁,我們需要先知道百度的IP是多少,然后利用wireshark的過濾規(guī)則,直接把這部分網(wǎng)絡(luò)報(bào)文給帥選出來。
比如我這里查到的百度域名解析出來的IP地址是:14.215.177.224,那么我就可以這么過濾抓包,動態(tài)圖如下:
比如我要抓取TLS相關(guān)報(bào)文,我可以利用 端口號是443 這個特性來抓取報(bào)文:
同時(shí),你的終端設(shè)備要訪問其他服務(wù)器,也是可以用相同的操作原理把它抓出來。
9)實(shí)戰(zhàn)網(wǎng)絡(luò)報(bào)文分析
值得注意的是,我們這里抓取的報(bào)文可能是純TCP的,也可能是TLS的,使用wireshark的報(bào)文分析工具就可以分析出來了。
具體可以參考一些網(wǎng)絡(luò)報(bào)文分析教程,這里不再贅述。
6 經(jīng)驗(yàn)總結(jié)
- 抓包方法很多,適合自己的才是最好的;
- 無論哪種抓包方法,能拿到有效的網(wǎng)絡(luò)報(bào)文就是王道,至少操作的便捷性,能用能知道;
- wireshark分析網(wǎng)絡(luò)報(bào)文的能力很重要,幾個重要的基礎(chǔ)操作一定要非常熟練;
- 分析網(wǎng)絡(luò)報(bào)文需要具備扎實(shí)的網(wǎng)絡(luò)基本功,必要的時(shí)候,好好補(bǔ)一補(bǔ)網(wǎng)絡(luò)報(bào)文的核心知識。
7 參考鏈接
- Wireshark安裝教程
- Win10系統(tǒng)創(chuàng)建WiFi熱點(diǎn)的兩種方法
- WireShark使用教程
- Wireshark常用過濾使用方法
- 360隨身WiFi - 360WiFi官網(wǎng)
8 更多分享
歡迎關(guān)注我的github倉庫01workstation,日常分享一些開發(fā)筆記和項(xiàng)目實(shí)戰(zhàn),歡迎指正問題。
同時(shí)也非常歡迎關(guān)注我的CSDN主頁和專欄:
【CSDN主頁:架構(gòu)師李肯】
【RT-Thread主頁:架構(gòu)師李肯】
【C/C++語言編程專欄】
【GCC專欄】
【信息安全專欄】
【RT-Thread開發(fā)筆記】
【freeRTOS開發(fā)筆記】
有問題的話,可以跟我討論,知無不答,謝謝大家。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5046文章
18834瀏覽量
298932 -
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7396瀏覽量
88240 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1239瀏覽量
39472
發(fā)布評論請先 登錄
相關(guān)推薦
評論