文章目錄
- 1 寫在前面
- 2 需求分析
- 3 幾個方法
- 4 原理分析
-
5 方法實踐
- 5.1 工具準備
- 5.2 詳細步驟
- 6 經(jīng)驗總結
- 7 參考鏈接
- 8 更多分享
作者:架構師李肯
一個專注于嵌入式IoT領域的架構師。有著近10年的嵌入式一線開發(fā)經(jīng)驗,深耕IoT領域多年,熟知IoT領域的業(yè)務發(fā)展,深度掌握IoT領域的相關技術棧,包括但不限于主流RTOS內核的實現(xiàn)及其移植、硬件驅動移植開發(fā)、網(wǎng)絡通訊協(xié)議開發(fā)、編譯構建原理及其實現(xiàn)、底層匯編及編譯原理、編譯優(yōu)化及代碼重構、主流IoT云平臺的對接、嵌入式IoT系統(tǒng)的架構設計等等。擁有多項IoT領域的發(fā)明專利,熱衷于技術分享,有多年撰寫技術博客的經(jīng)驗積累,連續(xù)多月獲得RT-Thread官方技術社區(qū)原創(chuàng)技術博文優(yōu)秀獎,榮獲CSDN博客專家、CSDN物聯(lián)網(wǎng)領域優(yōu)質創(chuàng)作者、2021年度CSDN&RT-Thread技術社區(qū)之星、RT-Thread官方嵌入式開源社區(qū)認證專家、RT-Thread 2021年度論壇之星TOP4、華為云云享專家(嵌入式物聯(lián)網(wǎng)架構設計師)等榮譽。堅信【知識改變命運,技術改變世界】!
1 寫在前面
在平時工作中的網(wǎng)絡編程開發(fā),少不了要通過抓取網(wǎng)絡報文來分析網(wǎng)絡問題的應用場景。有的時候,你可能通過代碼排查得焦頭爛額,毫無頭緒,但是只要一把網(wǎng)絡報文拎出來一看,一下子思路就打開了。
但是,一個嵌入式設備要怎么才能抓取其網(wǎng)絡設備呢?
假如我們的這個嵌入式設備,跑的就是普通的 RTOS 系統(tǒng),不像嵌入式Linux系統(tǒng)那樣,還可以使用諸如 tcpdump 這種命令行工具來抓取網(wǎng)絡報文,他們可能連基本的DEBUG輸入都不一樣有,僅有一個輸出LOG的串口。
那么,面對這種嵌入式設備,我們能夠怎么抓取其網(wǎng)絡報文呢?
本文將為你揭曉答案,且文中描述的方法也是筆者多年調試網(wǎng)絡問題,一直在使用的方法,希望對大家有所幫助。
2 需求分析
回到問題本身,其實需求還是比較明確的,就是需要抓取一個嵌入式設備的網(wǎng)絡報文,且這個設備不具備命令行抓取的能力,只能使用外部設備輔助完成。
同時,這個嵌入式設備可能使用的是 以太網(wǎng)通訊、4G/5G等蜂窩網(wǎng)絡通訊、Wi-Fi通訊,針對這樣多樣化的通訊方式,是否能找出一種比較通用的抓包方式,滿足這幾種通訊方式下的抓包需求,這是我們所追求的。
3 幾個方法
本文先簡單介紹下,面對這種嵌入式設備的網(wǎng)絡抓包場景,可能使用到的幾種方法,但本文將會重點介紹其中的一種,其他的幾種,后面有空再另行整理。
- 使用路由器、交互就鏡像抓包
- 使用PC無線熱點捕獲抓包
- 使用網(wǎng)絡代理(中轉服務器)抓包
- 使用特殊工具抓無線空口數(shù)據(jù)包
以上幾種方法,各個各的優(yōu)勢,適用于不同的應用場景,靈活選用即可。
像我這邊目前碰到的應用場景,都是一些基于 Wi-Fi 通訊的終端設備,所以對我而言,采用第二種 PC無線熱點捕獲 抓包,就是一個最佳選擇。
4 原理分析
使用 PC無線熱點捕獲抓包 的這種方式,網(wǎng)絡拓撲圖如下所示:

5 方法實踐
5.1 工具準備
如上面描述的抓包原理,你需要:
一臺具備網(wǎng)絡能力的PC主機:如果設備需要連公網(wǎng),這臺主機還需要具備公網(wǎng)連接的能力;
一個迷你的無線網(wǎng)卡:最簡單的就類似 360Wi-Fi 那種USB無線網(wǎng)卡;如果你準備的主機是一臺筆記本的話,則可以不需要額外準備外置的無線網(wǎng)卡;
Windows下的Wireshark抓包工具:強大的網(wǎng)絡報文抓取和分析工具;
若干終端設備:配置好終端設備,使其連接由PC發(fā)射處理的無線熱點。
5.2 詳細步驟
1)第一步自然把相關的工具準備好,相關的軟件安裝好
安裝wireshark可以參考 教程,最重要的是,記得把 WinPcap 和 USBPcap 安裝上:


2)配置PC環(huán)境,把無線熱點給發(fā)射出來
這里如果是 筆記本自帶了無線網(wǎng)卡的,可以參考這個 教程 把無線熱點搞起來。
如果是臺式主機,需要外置無線網(wǎng)卡的,強力建議使用 360Wi-Fi,主要是廉價、便捷,應用這種抓包場景綽綽有余。
另外,它還有一個配套的上位機工具,長這樣,基本就可以一件傻瓜式地就可以把無線熱點給發(fā)射出來;同時,在上位機這還能看到當前有哪些設備正連著這個無線熱點,真的非常地方便。

3)配置終端設備連接對應的無線熱點
上面的步驟完成后,終端設備就可以連接上對應的無線熱點了,這個時候理論上,終端就已經(jīng)借助PC的網(wǎng)絡能力,它自己也具備了對外連接網(wǎng)絡的能力。
4)操作Wireshark抓包工具
打開wireshakr軟件,在首頁會看到很多網(wǎng)卡設備,有無線的,也有有線的,這些有波浪線的表示當前有網(wǎng)絡數(shù)據(jù)在流動:

但是,你可能會發(fā)現(xiàn)這里并沒有那個發(fā)射無線熱點的 網(wǎng)卡設備 (圖中的WLAN是我筆記本的內置無線網(wǎng)卡)。
我們可以查看下系統(tǒng) 網(wǎng)卡適配器:

5)配置下無線網(wǎng)卡適配器【關鍵步驟】
這個時候我們需要去配置一下無線網(wǎng)卡適配器,找到對應的無線網(wǎng)卡:
右鍵 -》屬性,找到下面的這個選項,勾選上,最后確認:

6)刷新wireshark的網(wǎng)卡設備列表
wireshark的主界面,再菜單欄找到【捕獲】-> 【刷新接口列表】,這個時候下面就會把無線網(wǎng)絡給顯示出來了:

7)啟動wireshark抓包
雙擊對應的無線網(wǎng)卡設備,開始啟動抓包,同時在終端發(fā)起一些網(wǎng)絡交互,這時就可以看到wireshark中有網(wǎng)絡報文刷出來了。動態(tài)圖如下所示:

8)wireshark的網(wǎng)絡報文過濾
這個操作需要知道終端側,在訪問哪個服務器,比如訪問百度網(wǎng)頁,我們需要先知道百度的IP是多少,然后利用wireshark的過濾規(guī)則,直接把這部分網(wǎng)絡報文給帥選出來。
比如我這里查到的百度域名解析出來的IP地址是:14.215.177.224,那么我就可以這么過濾抓包,動態(tài)圖如下:

比如我要抓取TLS相關報文,我可以利用 端口號是443 這個特性來抓取報文:

同時,你的終端設備要訪問其他服務器,也是可以用相同的操作原理把它抓出來。
9)實戰(zhàn)網(wǎng)絡報文分析
值得注意的是,我們這里抓取的報文可能是純TCP的,也可能是TLS的,使用wireshark的報文分析工具就可以分析出來了。
具體可以參考一些網(wǎng)絡報文分析教程,這里不再贅述。
6 經(jīng)驗總結
- 抓包方法很多,適合自己的才是最好的;
- 無論哪種抓包方法,能拿到有效的網(wǎng)絡報文就是王道,至少操作的便捷性,能用能知道;
- wireshark分析網(wǎng)絡報文的能力很重要,幾個重要的基礎操作一定要非常熟練;
- 分析網(wǎng)絡報文需要具備扎實的網(wǎng)絡基本功,必要的時候,好好補一補網(wǎng)絡報文的核心知識。
7 參考鏈接
- Wireshark安裝教程
- Win10系統(tǒng)創(chuàng)建WiFi熱點的兩種方法
- WireShark使用教程
- Wireshark常用過濾使用方法
- 360隨身WiFi - 360WiFi官網(wǎng)
8 更多分享
歡迎關注我的github倉庫01workstation,日常分享一些開發(fā)筆記和項目實戰(zhàn),歡迎指正問題。
同時也非常歡迎關注我的CSDN主頁和專欄:
【CSDN主頁:架構師李肯】
【RT-Thread主頁:架構師李肯】
【C/C++語言編程專欄】
【GCC專欄】
【信息安全專欄】
【RT-Thread開發(fā)筆記】
【freeRTOS開發(fā)筆記】
有問題的話,可以跟我討論,知無不答,謝謝大家。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5125文章
19438瀏覽量
313203 -
網(wǎng)絡
+關注
關注
14文章
7713瀏覽量
90162 -
RT-Thread
+關注
關注
31文章
1348瀏覽量
41376
發(fā)布評論請先 登錄
相關推薦
RT-Thread 應用筆記 - RTC Alarm 組件的使用

RT-Thread 內核學習筆記 - 理解defunct僵尸線程

RT-Thread 內核學習筆記 - 設備模型rt_device的理解

RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解

RT-Thread 內核學習筆記 - 內核對象初始化鏈表組織方式

RT-Thread 內核學習筆記 - 內核對象操作API

RT-Thread學習筆記 --(6)RT-Thread線程間通信學習過程總結

RT-Thread學習筆記分享
RT-Thread學習筆記 RT-Thread的架構概述

評論