使用 usbmon 抓取 usb 匯流排上的資料

2021-09-26 14:56:38 字數 1659 閱讀 1574

usbmon即 usb monitor,是 linux 內建的 usb 抓包工具。usbmon 本質是乙個核心模組,在我的 ubuntu14.0 4中,模組的位置:/lib/modules/4.4.0-31-generic/kernel/drivers/usb/mon/usbmon.ko。

linux 系統支援很多態別的檔案系統,像 ext3、sysfs、ramfs、tmpfs等檔案系統,首先檢測核心是否支援 debugfs 檔案系統。

執行sudo

命令,如果提示已經掛載,則下次抓包就無需執行該命令了,表示系統缺省會掛載該檔案系統。

如上圖所示,我的 ubuntu 系統預設已經掛載了 debugfs 檔案系統,無需再去手動掛載。

如上圖所示,目前核心不支援 usbmon 模組,需要手動安裝 usbmon 模組。

執行modprobe usbmon命令,可以看到系統成功安裝了 usbmon 這個模組。

這裡的原理是,usbmon是乙個模組,使用 modprobe 安裝該模組後,該模組內部呼叫 debugfs 相關的api,這樣在 

/sys/kernel/debug/usb目錄下便形成了 usbmon 這個目錄。

檢視  /sys/kernel/debug/usb/usbmon目錄,發現該目錄下有以下內容:0s、0u、1s、1t、1u、2s、2t、2u,其中1代表 bus1,2代表 bus2,0代表所有 usb 匯流排。

首先需要獲取想要監測的裝置所在的匯流排以及裝置號。

linux 中檢視usb裝置列表以及usb裝置詳細資訊的兩種方法

方法1:執行lsusb命令

lsusb命令引數

-v:顯示usb裝置的詳細資訊

-t:以樹狀結構顯示usb裝置的層次

-s《匯流排:裝置號》:僅顯示指定的匯流排或裝置號的裝置

-d《廠商:產品》:僅顯示指定廠商和產品編號的裝置

方法2cat /sys/kernel/debug/usb/devices

然後就可以根據上面的結果,檢視 usb 匯流排上的資料。

cat /sys/kernel/debug/usb/usbmon/1u | grep "1:005"// 其中的1:005是根據第4步中確認的,分配給模組的裝置號

執行該命令,就可以檢視模組所掛載的usb匯流排上的資料傳輸。

詳解 usbmon 抓取的 log 各字段的含義

抓取 USB 匯流排LOG

在實際工作中經常會遇到需要分析usb報文的情形。比如對比不同廠家4g 5g模組。解決實際ip over usb傳輸效率低下問題。這時候如果能抓取到 usbmom 匯流排的報文將會大有裨益。畢竟所有host linux windows 與外設 usb 互動的資訊都是經由 usb 匯流排才傳送到裝置上。...

使用wireshark抓取USB包

前段時間做專案時裡面用到了usb,當時usb驅動不是我寫的,專案開發過程中usb驅動出現了一些bug,但寫驅動的那個同事又在忙別的,所以自己硬著頭皮看了一些。網上搜了大量有關於usb的資料,同時看看usb驅動的 然而還是沒看懂,bug也沒解決 網上說usb驅動挺難得,現在看來確實是 後來bug還是寫...

USB匯流排介紹

1.usb發展史 usb universal serial bus 通用序列總 線,是一種外部匯流排標準,用於規範電腦與 外部裝置的連線和通訊。usb是在1994年底 由英特爾 康柏 ibm microsoft等多家公 司聯合提出的,自1996年推出後,已成功替 代串列埠和並口,成為當今個人電腦和大...