如何用Wireshark捕獲USB數(shù)據(jù)?
事實上通過wireshark,我們可以捕獲到usb設(shè)備發(fā)送給我們主機的數(shù)據(jù),這樣就可以進一步研究了。
本文中,我們將向大家介紹怎樣通過wireshark捕獲usb數(shù)據(jù),使用的環(huán)境如下:
l Wireshark 2.0.1(SVN)l Linux kernel 4.1.6
你也可以用其他版本的wireshark,只要是1.2.0以上的都行。這里并沒有測試window上能不能行。
簡介
在開始前,我們先介紹一些USB的基礎(chǔ)知識。USB有不同的規(guī)格,以下是使用USB的三種方式:
l USB UART l USB HID l USB Memory
UART或者UniversalAsynchronousReceiver/Transmitter。這種方式下,設(shè)備只是簡單的將USB用于接受和發(fā)射數(shù)據(jù),除此之外就再沒有其他通訊功能了。
HID是人性化的接口。這一類通訊適用于交互式,有這種功能的設(shè)備有:鍵盤,鼠標,游戲手柄和數(shù)字顯示設(shè)備。
最后是USBMemory,或者說是數(shù)據(jù)存儲。ExternalHDD,thumbdrive/flashdrive,等都是這一類的。
其中使用的最廣的不是USBHID就是USBMemory了。
每一個USB設(shè)備(尤其是HID或者Memory)都有一個供應(yīng)商ID(VendorId)和產(chǎn)品識別碼(ProductId)。VendorId是用來標記哪個廠商生產(chǎn)了這個USB設(shè)備。ProductId用來標記不同的產(chǎn)品,他并不是一個特殊的數(shù)字,當然最好不同。如下圖:
上圖是連接在我電腦上的USB設(shè)備列表,通過lsusb查看命令。
例如說,我有一個無線鼠標Logitech。它是屬于HID設(shè)備。這個設(shè)備正常的運行,并且通過lsusb這個命令查看所有usb設(shè)備,現(xiàn)在大家能找出哪一條是這個鼠標嗎??沒有錯,就是第四個,就是下面這條:
Bus003Device010:ID046d:c52fLogitech,Inc.UnifyingReceiver
其中,ID046d:c52f就是Vendor-ProductId對,VendorId的值是046d,并且ProductId的值是c52f。Bus003Device010代表usb設(shè)備正常連接,這點需要記下來。
準備
我們用root權(quán)限運行Wireshark捕獲USB數(shù)據(jù)流。但是通常來說我們不建議這么做。我們需要給用戶足夠的權(quán)限來獲取linux中的usb數(shù)據(jù)流。我們可以用udev來達到我們的目的。我們需要創(chuàng)建一個用戶組usbmon,然后把我們的賬戶添加到這個組中。
addgroup usbmon gpasswd -a $USER usbmonecho SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640" > /etc/udev/rules.d/99-usbmon.rules
接下來,我們需要usbmon內(nèi)核模塊。如果該模塊沒有被加載,我們可以通過以下命令家在該模塊:
modprobe usbmon
捕獲
打開wireshark,你會看到usbmonX其中X代表數(shù)字。下圖是我們本次的結(jié)果(我使用的是root):
如果接口處于活躍狀態(tài)或者有數(shù)據(jù)流經(jīng)過的時候,wireshark的界面就會把它以波形圖的方式顯示出來。那么,我們該選那個呢?沒有錯,就是我剛剛讓大家記下來的,這個X的數(shù)字就是對應(yīng)這USBBus。在本文中是usbmon3。打開他就可以觀察數(shù)據(jù)包了。
評論