文章目錄
- 1 寫在前面
- 2 需求分析
- 3 幾個方法
- 4 原理分析
-
5 方法實踐
- 5.1 工具準備
- 5.2 詳細步驟
- 6 經驗總結
- 7 參考鏈接
- 8 更多分享
作者:架構師李肯
一個專注于嵌入式IoT領域的架構師。有著近10年的嵌入式一線開發經驗,深耕IoT領域多年,熟知IoT領域的業務發展,深度掌握IoT領域的相關技術棧,包括但不限于主流RTOS內核的實現及其移植、硬件驅動移植開發、網絡通訊協議開發、編譯構建原理及其實現、底層匯編及編譯原理、編譯優化及代碼重構、主流IoT云平臺的對接、嵌入式IoT系統的架構設計等等。擁有多項IoT領域的發明專利,熱衷于技術分享,有多年撰寫技術博客的經驗積累,連續多月獲得RT-Thread官方技術社區原創技術博文優秀獎,榮獲CSDN博客專家、CSDN物聯網領域優質創作者、2021年度CSDN&RT-Thread技術社區之星、RT-Thread官方嵌入式開源社區認證專家、RT-Thread 2021年度論壇之星TOP4、華為云云享專家(嵌入式物聯網架構設計師)等榮譽。堅信【知識改變命運,技術改變世界】!
1 寫在前面
在平時工作中的網絡編程開發,少不了要通過抓取網絡報文來分析網絡問題的應用場景。有的時候,你可能通過代碼排查得焦頭爛額,毫無頭緒,但是只要一把網絡報文拎出來一看,一下子思路就打開了。
但是,一個嵌入式設備要怎么才能抓取其網絡設備呢?
假如我們的這個嵌入式設備,跑的就是普通的 RTOS 系統,不像嵌入式Linux系統那樣,還可以使用諸如 tcpdump 這種命令行工具來抓取網絡報文,他們可能連基本的DEBUG輸入都不一樣有,僅有一個輸出LOG的串口。
那么,面對這種嵌入式設備,我們能夠怎么抓取其網絡報文呢?
本文將為你揭曉答案,且文中描述的方法也是筆者多年調試網絡問題,一直在使用的方法,希望對大家有所幫助。
2 需求分析
回到問題本身,其實需求還是比較明確的,就是需要抓取一個嵌入式設備的網絡報文,且這個設備不具備命令行抓取的能力,只能使用外部設備輔助完成。
同時,這個嵌入式設備可能使用的是 以太網通訊、4G/5G等蜂窩網絡通訊、Wi-Fi通訊,針對這樣多樣化的通訊方式,是否能找出一種比較通用的抓包方式,滿足這幾種通訊方式下的抓包需求,這是我們所追求的。
3 幾個方法
本文先簡單介紹下,面對這種嵌入式設備的網絡抓包場景,可能使用到的幾種方法,但本文將會重點介紹其中的一種,其他的幾種,后面有空再另行整理。
- 使用路由器、交互就鏡像抓包
- 使用PC無線熱點捕獲抓包
- 使用網絡代理(中轉服務器)抓包
- 使用特殊工具抓無線空口數據包
以上幾種方法,各個各的優勢,適用于不同的應用場景,靈活選用即可。
像我這邊目前碰到的應用場景,都是一些基于 Wi-Fi 通訊的終端設備,所以對我而言,采用第二種 PC無線熱點捕獲 抓包,就是一個最佳選擇。
4 原理分析
使用 PC無線熱點捕獲抓包 的這種方式,網絡拓撲圖如下所示:
![在這里插入圖片描述](https://file.elecfans.com//web2/M00/59/21/pYYBAGLkyEaAdrtuAAQbpq7iXAs377.png)
5 方法實踐
5.1 工具準備
如上面描述的抓包原理,你需要:
一臺具備網絡能力的PC主機:如果設備需要連公網,這臺主機還需要具備公網連接的能力;
一個迷你的無線網卡:最簡單的就類似 360Wi-Fi 那種USB無線網卡;如果你準備的主機是一臺筆記本的話,則可以不需要額外準備外置的無線網卡;
Windows下的Wireshark抓包工具:強大的網絡報文抓取和分析工具;
若干終端設備:配置好終端設備,使其連接由PC發射處理的無線熱點。
5.2 詳細步驟
1)第一步自然把相關的工具準備好,相關的軟件安裝好
安裝wireshark可以參考 教程,最重要的是,記得把 WinPcap 和 USBPcap 安裝上:
![img](https://file.elecfans.com//web2/M00/58/83/poYBAGLkyEaADlgjAABYz3QxhKQ893.png)
![img](https://file.elecfans.com//web2/M00/59/21/pYYBAGLkyEaAf6iyAABiHPx9gmY203.png)
2)配置PC環境,把無線熱點給發射出來
這里如果是 筆記本自帶了無線網卡的,可以參考這個 教程 把無線熱點搞起來。
如果是臺式主機,需要外置無線網卡的,強力建議使用 360Wi-Fi,主要是廉價、便捷,應用這種抓包場景綽綽有余。
另外,它還有一個配套的上位機工具,長這樣,基本就可以一件傻瓜式地就可以把無線熱點給發射出來;同時,在上位機這還能看到當前有哪些設備正連著這個無線熱點,真的非常地方便。
![image-20220726003951917](https://file.elecfans.com//web2/M00/58/83/poYBAGLkyEaACi6mAAFtNt0H1PI063.png)
3)配置終端設備連接對應的無線熱點
上面的步驟完成后,終端設備就可以連接上對應的無線熱點了,這個時候理論上,終端就已經借助PC的網絡能力,它自己也具備了對外連接網絡的能力。
4)操作Wireshark抓包工具
打開wireshakr軟件,在首頁會看到很多網卡設備,有無線的,也有有線的,這些有波浪線的表示當前有網絡數據在流動:
![image-20220726004336727](https://file.elecfans.com//web2/M00/59/21/pYYBAGLkyEeABUM6AAAuqvOrE40109.png)
但是,你可能會發現這里并沒有那個發射無線熱點的 網卡設備 (圖中的WLAN是我筆記本的內置無線網卡)。
我們可以查看下系統 網卡適配器:
![image-20220726004554579](https://file.elecfans.com//web2/M00/58/83/poYBAGLkyEeAJibFAACtuzAl7oM779.png)
5)配置下無線網卡適配器【關鍵步驟】
這個時候我們需要去配置一下無線網卡適配器,找到對應的無線網卡:
右鍵 -》屬性,找到下面的這個選項,勾選上,最后確認:
![image-20220726004806654](https://file.elecfans.com//web2/M00/58/83/poYBAGLkyEeAfYzuAAIMC2IIRWQ576.png)
6)刷新wireshark的網卡設備列表
wireshark的主界面,再菜單欄找到【捕獲】-> 【刷新接口列表】,這個時候下面就會把無線網絡給顯示出來了:
![image-20220726005013480](https://file.elecfans.com//web2/M00/59/21/pYYBAGLkyEiAY3gdAAAuyFlP74o080.png)
7)啟動wireshark抓包
雙擊對應的無線網卡設備,開始啟動抓包,同時在終端發起一些網絡交互,這時就可以看到wireshark中有網絡報文刷出來了。動態圖如下所示:
![2022-07-27-23-40-35](https://img-blog.csdnimg.cn/img_convert/c3b5677b421a4629707652781b6b691e.gif)
8)wireshark的網絡報文過濾
這個操作需要知道終端側,在訪問哪個服務器,比如訪問百度網頁,我們需要先知道百度的IP是多少,然后利用wireshark的過濾規則,直接把這部分網絡報文給帥選出來。
比如我這里查到的百度域名解析出來的IP地址是:14.215.177.224,那么我就可以這么過濾抓包,動態圖如下:
![2022-07-27-23-53-15](https://img-blog.csdnimg.cn/img_convert/6f38c32dc22724a2f6857fe2b34e05b2.gif)
比如我要抓取TLS相關報文,我可以利用 端口號是443 這個特性來抓取報文:
![2022-07-27-23-55-50](https://img-blog.csdnimg.cn/img_convert/839d95e39da07e84af8d058e38e45b78.gif)
同時,你的終端設備要訪問其他服務器,也是可以用相同的操作原理把它抓出來。
9)實戰網絡報文分析
值得注意的是,我們這里抓取的報文可能是純TCP的,也可能是TLS的,使用wireshark的報文分析工具就可以分析出來了。
具體可以參考一些網絡報文分析教程,這里不再贅述。
6 經驗總結
- 抓包方法很多,適合自己的才是最好的;
- 無論哪種抓包方法,能拿到有效的網絡報文就是王道,至少操作的便捷性,能用能知道;
- wireshark分析網絡報文的能力很重要,幾個重要的基礎操作一定要非常熟練;
- 分析網絡報文需要具備扎實的網絡基本功,必要的時候,好好補一補網絡報文的核心知識。
7 參考鏈接
- Wireshark安裝教程
- Win10系統創建WiFi熱點的兩種方法
- WireShark使用教程
- Wireshark常用過濾使用方法
- 360隨身WiFi - 360WiFi官網
8 更多分享
歡迎關注我的github倉庫01workstation,日常分享一些開發筆記和項目實戰,歡迎指正問題。
同時也非常歡迎關注我的CSDN主頁和專欄:
【CSDN主頁:架構師李肯】
【RT-Thread主頁:架構師李肯】
【C/C++語言編程專欄】
【GCC專欄】
【信息安全專欄】
【RT-Thread開發筆記】
【freeRTOS開發筆記】
有問題的話,可以跟我討論,知無不答,謝謝大家。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5094文章
19178瀏覽量
307732 -
網絡
+關注
關注
14文章
7600瀏覽量
89257 -
RT-Thread
+關注
關注
31文章
1305瀏覽量
40391
發布評論請先 登錄
相關推薦
RT-Thread 應用筆記 - RTC Alarm 組件的使用
![<b class='flag-5'>RT-Thread</b> 應用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread 內核學習筆記 - 理解defunct僵尸線程
![<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread 內核學習筆記 - 設備模型rt_device的理解
![<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 設備模型<b class='flag-5'>rt</b>_device的理解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解
![<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象鏈表結構深入理解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread 內核學習筆記 - 內核對象初始化鏈表組織方式
![<b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象初始化鏈表組織方式](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread學習筆記 --(6)RT-Thread線程間通信學習過程總結
![<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b> --(6)<b class='flag-5'>RT-Thread</b>線程間通信<b class='flag-5'>學習</b>過程總結](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
RT-Thread學習筆記分享
RT-Thread學習筆記 RT-Thread的架構概述
![<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構概述](https://file.elecfans.com/web2/M00/52/31/pYYBAGLKk5WAA__jAADjdAdXhIs410.jpg)
評論