在實際工作中經常會遇到需要分析usb報文的情形。比如對比不同廠家4g/5g模組。解決實際ip over usb傳輸效率低下問題。 這時候如果能抓取到 usbmom 匯流排的報文將會大有裨益。畢竟所有host(linux/windows)與外設(usb)互動的資訊都是經由 usb 匯流排才傳送到裝置上。
如上,我們計畫抓取 usb 匯流排上的報文資訊。但是怎麼做呢?
wireshark 是最簡單最熟悉的方案。在windows 上靠usbpcap 元件抓usb,這需要在wireshark 安裝時候選擇安裝上。
在linux 上依賴於作業系統 usbmon 驅動。linux 發行版可以直接modprobe -a usbmon
來載入 usbmon 驅動(預設不載入),然後開啟 wireshark 就能看到 usbmon1,usbmon2...
如下圖,選中裝置對應的匯流排就可以抓了
tcpdump 抓取 usb 報文和抓取網絡卡語法是一樣的, 如下圖
在嵌入式裝置/android上這裡會有個坑。就是用tcpdump -d
能看到 usbmon 節點。但是,執行tcpdump -i usbmon1
類似的命令時候會提示 usbmon1 不存在???
這是因為作業系統被裁剪掉了 udev,導致沒有生成裝置節點。我們可以用mknod
命令來手動建立這些節點!
太簡單了!!! 既然要抓log,肯定有目標,知道要抓哪個裝置的。比如你知道外設的 vid&pid,那麼通過lsusb
就可以看到! 匯流排1 就是usbmon1,匯流排 2 就是usbmon2...
那麼如果我是嵌入式系統,沒有lsusb
、urb-devices
這樣的命令怎麼辦???
好吧! 其實你可以這麼看:
如果這個命令也失敗了。。。。 那麼你需要檢查你的系統 usbmon 驅動相關的是否都開啟了。
參見小夥伴寫的另乙個部落格:詳解 usbmon 抓取的 log 各字段的含義
使用 usbmon 抓取 usb 匯流排上的資料
usbmon即 usb monitor,是 linux 內建的 usb 抓包工具。usbmon 本質是乙個核心模組,在我的 ubuntu14.0 4中,模組的位置 lib modules 4.4.0 31 generic kernel drivers usb mon usbmon.ko。linux ...
USB匯流排介紹
1.usb發展史 usb universal serial bus 通用序列總 線,是一種外部匯流排標準,用於規範電腦與 外部裝置的連線和通訊。usb是在1994年底 由英特爾 康柏 ibm microsoft等多家公 司聯合提出的,自1996年推出後,已成功替 代串列埠和並口,成為當今個人電腦和大...
Log抓取方法
log抓取方法 一 adb log adb logcat b main d adb main.log ddms預設顯示的log adb logcat b radio d adb radio.log 協議相關log adb logcat b events d adb events.log 事件處理 a...