如何轉儲 USB 流量?
我有一個 USB 遊戲搖桿,我想查看和檢查此外圍設備實際發送到我的 PC/核心的信號和命令:我該怎麼做?
我假設像
cat /dev/bus/usb/006/003
已經足夠了,但顯然這個命令會立即返回並列印一些不可讀的編碼字元。
有一種方法可以“調試”這樣的 USB 設備嗎?
您可以使用 Wireshark 擷取 USB 流量。
從它的維基:
要在 Linux 上轉儲 USB 流量,您需要該
usbmon
模組,該模組自 Linux 2.6.11以來就已存在。/usr/src/linux/Documentation/usb/usbmon.txt
Linux 原始碼樹中提供了有關該模組的資訊。根據您使用的發行版和發行版的版本,該模組可能內置在核心中,或者可能是可載入模組;如果它是可載入模組,取決於您使用的發行版以及該發行版的版本,它可能會或可能不會為您載入。如果它是一個可載入的模組,並且沒有載入,你必須使用命令載入它modprobe usbmon
必須以 root 身份執行。
1.0 之前的 libpcap 版本不包括 USB 支持,因此您至少需要libpcap 1.0.0。
對於2.6.21 之前的核心版本,唯一可用的 USB 流量擷取機制是基於文本的機制,它將為每個原始 USB 塊擷取的數據總量限制為大約 30 字節。如果不修補核心,就無法改變這一點。如果 debugfs 尚未安裝在 上
/sys/kernel/debug
,請以 root 身份發出以下命令,確保已將其安裝在那裡:mount -t debugfs / /sys/kernel/debug
對於核心版本2.6.21 和更高版本,有一個用於跟踪 USB 數據包的二進制協議,它沒有該大小限制。對於該核心版本,您將需要 libpcap 1.1.0 或更高版本,因為 libpcap 1.0.x USB 支持使用但不能正確處理 USB 流量的記憶體映射機制,如果可用,libpcap 將使用該機制 - 它不能使其不可用,因此 libpcap 將始終使用它。
在 libpcap 1.0.x 中,用於在 USB 上擷取的設備名稱為,其中n是匯流排編號。在 libpcap 1.1.0 及更高版本中,它們的名稱為.
usb*n*``usbmon*n*
您還需要 Wireshark 1.2.x 或更新版本。