1、前言
隨著MCU的發展和需求的增多,USB已成為主流MCU的標配外設,但很多還是全速或低速IP,因此往往用不上高速抓包設備。
2、安裝wireshark和拷貝抓包插件
將抓包插件拷貝到wireshark的extcap目錄里,可參考基于wireshark的USB 高速硬件抓包工具USB Sniffer的使用-CSDN博客
抓包插件下載鏈接??【免費】USBSnifferLite全速版Wireshark抓包插件中文版資源-CSDN下載
3、抓包工具選購鏈接
有需要的朋友可支持一下,小巧實惠,且滿足常見MCU的USB軟件開發工作,支持自動速度識別,支持硬件包過濾、端點過濾,支持硬件時間戳及包序號
? 淘寶鏈接
4、線路連接
USB Sniffer Lite 的Type A公頭接裝有wireshark的Monitor(監控)電腦,接入后紅燈閃爍,Type C接測試主機(Host),可以和Monitor是同一臺,也可以是不同的,Type A 母座接被測試設備(Device),如下示意圖
接入后紅燈閃爍
5、抓包設置
5.1 打開wireshark,點擊USB Sniffer Lite前的選項按鈕
5.2 Device頁內容如下:
5.2.1 設備選擇:當有多個Sniffer時選擇用哪個Sniffer進行捕獲
5.2.2 序號類型:
a) 包間隔時間,數據包出現時的時間戳,精度為微秒,在捕獲頁面顯示時可設置為
? ?捕獲后的效果如下:
b)? 捕獲時包序號,數據包被捕獲時的順序號,第一包為0,第二包為1,以此類推,這樣可以知道是否有丟包,只是顯示格式目前還沒研究清楚,如何讓它顯示整數
c)? 過濾后包序號,數據包經過濾后的順序號,過濾掉的就不計入,比如設置為不捕獲SOF,不勾選IN的NAK(也就是不捕獲未應答的IN數據包),這樣上傳上來的序號就是連續的
5.2 SOF頁,用于設置是否捕獲SOF包,當您不需要SOF包時,可以選擇不捕獲,從而減少包數
5.3 SETUP頁,用于設置是否捕獲SETUP包
? ? ? ?可以是不捕獲,可以是捕獲所有端點的,可以是捕獲指定端點的,也可以是捕獲與指定端點不相等的,指定的端點在端點列表里給出。比如只想捕獲端點1的控制傳輸,則選擇相等的,端點列表填1
? ? ? ?SETUP令牌包后只能使用DATA0數據包,且只能發送到設備的控制端點,而且設備必須接收,所以NAK其實是沒有必要,這里只是保留著。
? ? ? ?一般來說SETUP包都不是很多,所以可捕獲所有端點的。
5.4 IN 頁,用于設置如何捕獲輸入數據包
和SETUP類似,不同在于,當勾選NAK時,Device否認(NAK)包也會被捕獲,這是可能會產生大量的無效數據包;當不勾選時,只捕獲Device應答(ACK)的數據。
如下是勾選的情況,可以看出有大量的NAK的IN包
如下是不勾選的情況,可以看出只有被Device ACK的包被捕獲下來
5.5? OUT頁,用于設置如何捕獲輸出數據包
功能和IN 頁類似,如勾選NAK,有大量的未應答包別捕獲進來
如下是不勾選,只有被ACK的包被捕獲進來了
設置好后,進行保存
6、開始抓包
雙擊 USB Sniffer Lite,即可啟動抓包
這時Sniffer的綠燈亮起,然后插入USB 全速或低速Device,綠燈開始閃爍
如下是捕獲的數據
5、結語
USB協議比較復雜,不對的地方歡迎大家批評指正