0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RT-Thread學(xué)習(xí)筆記】如何抓取終端的網(wǎng)絡(luò)報(bào)文

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-07-30 13:57 ? 次閱讀

文章目錄

  • 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可以參考 教程,最重要的是,記得把 WinPcapUSBPcap 安裝上:

imgimg

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),真的非常地方便。

image-20220726003951917

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ù)在流動:

image-20220726004336727

但是,你可能會發(fā)現(xiàn)這里并沒有那個發(fā)射無線熱點(diǎn)的 網(wǎng)卡設(shè)備 (圖中的WLAN是我筆記本的內(nèi)置無線網(wǎng)卡)。

我們可以查看下系統(tǒng) 網(wǎng)卡適配器:

image-20220726004554579

5)配置下無線網(wǎng)卡適配器【關(guān)鍵步驟】

這個時(shí)候我們需要去配置一下無線網(wǎng)卡適配器,找到對應(yīng)的無線網(wǎng)卡:

右鍵 -》屬性,找到下面的這個選項(xiàng),勾選上,最后確認(rèn):

image-20220726004806654

6)刷新wireshark的網(wǎng)卡設(shè)備列表

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

image-20220726005013480

7)啟動wireshark抓包

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

2022-07-27-23-40-35

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)圖如下:

2022-07-27-23-53-15

比如我要抓取TLS相關(guān)報(bào)文,我可以利用 端口號是443 這個特性來抓取報(bào)文:

2022-07-27-23-55-50

同時(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ā)筆記】

有問題的話,可以跟我討論,知無不答,謝謝大家。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(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
收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread學(xué)習(xí)筆記】使用scons命令生成靜態(tài)庫

    RT-Thread學(xué)習(xí)筆記】如何使用scons 命令中buildlib的生成靜態(tài)庫?
    的頭像 發(fā)表于 07-27 09:13 ?5608次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態(tài)庫

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)三大塊知識

    RT-Thread學(xué)習(xí)筆記】RISC-V匯編基礎(chǔ)的三大塊知識
    的頭像 發(fā)表于 07-30 11:01 ?2624次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】RISC-V匯編基礎(chǔ)三大塊知識

    RT-Thread Nano入門學(xué)習(xí)筆記

    RT-Thread Nano入門學(xué)習(xí)筆記
    發(fā)表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano入門<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    RT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用

    RT-Thread 應(yīng)用筆記 - 不正確使用LOG也會引發(fā)hard faultRT-Thread 應(yīng)用筆記 - RTC Alarm 組件的使用RT-
    發(fā)表于 01-25 18:18 ?10次下載
    <b class='flag-5'>RT-Thread</b> 應(yīng)用<b class='flag-5'>筆記</b> - RTC Alarm 組件的使用

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 設(shè)備模型rt_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 設(shè)備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象鏈表結(jié)構(gòu)深入理解

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象初始化鏈表組織方式

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象操作API

    RT-Thread 內(nèi)核學(xué)習(xí)筆記 - 內(nèi)核對象rt_objectRT-Thread 內(nèi)核學(xué)習(xí)筆記
    發(fā)表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內(nèi)核<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 內(nèi)核對象操作API

    RT-Thread學(xué)習(xí)筆記 --(6)RT-Thread線程間通信學(xué)習(xí)過程總結(jié)

    前兩篇文章總結(jié)了RT-Thread多線程以及多線程同步的學(xué)習(xí)過程,關(guān)于前兩篇學(xué)習(xí)總結(jié),可以查看之前的文章。
    發(fā)表于 01-25 18:50 ?7次下載
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> --(6)<b class='flag-5'>RT-Thread</b>線程間通信<b class='flag-5'>學(xué)習(xí)</b>過程總結(jié)

    RT-Thread學(xué)習(xí)筆記分享

    我是從2020年11月初開始學(xué)習(xí)RT-Thread實(shí)時(shí)操作系統(tǒng)的,在學(xué)習(xí)RT-Thread之前,我接觸過uCOS和FreeRTOS,但這兩個在單片機(jī)上應(yīng)用的實(shí)時(shí)操作系統(tǒng),我都沒有仔細(xì)并
    的頭像 發(fā)表于 01-27 18:52 ?2000次閱讀

    RT-Thread學(xué)習(xí)筆記 RT-Thread的架構(gòu)概述

    RT-Thread 簡介 作為一名 RTOS 的初學(xué)者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發(fā)現(xiàn) RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發(fā)表于 07-09 11:27 ?4332次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構(gòu)概述

    RT-Thread學(xué)習(xí)筆記】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】十分鐘學(xué)會Makefile的FORCE
    的頭像 發(fā)表于 07-30 13:55 ?2180次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】Makefile的FORCE

    RT-Thread學(xué)習(xí)筆記】用memwatch排除內(nèi)存泄露

    RT-Thread學(xué)習(xí)筆記】使用memwatch排除內(nèi)存泄露
    的頭像 發(fā)表于 07-30 14:01 ?2071次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>】用memwatch排除內(nèi)存泄露

    基于RT-Thread Studio學(xué)習(xí)

    前期準(zhǔn)備:從官網(wǎng)下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學(xué)習(xí)之旅。
    的頭像 發(fā)表于 05-15 11:00 ?3530次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學(xué)習(xí)</b>