如何用Wireshark捕獲USB數(shù)據(jù)?

現(xiàn)在的電子設(shè)備越來(lái)越多的會(huì)采用USB接口,通訊的標(biāo)準(zhǔn)也在逐步的提高,那么這些USB設(shè)備是怎么工作的呢?我們可以通過(guò)wireshark捕獲usb設(shè)備發(fā)送給我們主機(jī)的數(shù)據(jù),這樣就可以進(jìn)一步研究了。下面我們就介紹怎樣通過(guò)wireshark捕獲usb數(shù)據(jù)。

使用的環(huán)境是:Wireshark 2.o??Linux kernel 4.1.6

當(dāng)然也可以用其他版本的Wireshark只要是1.2以上的都可以的。

USB有不同的規(guī)格,也有不同的使用方式。USB UART、USB HID、USB Memory是最常用的三種方式

UART的這種方式下,設(shè)備只是簡(jiǎn)單的將USB用于接受和發(fā)射數(shù)據(jù),除此之外就再?zèng)]有其他通訊功能了。

HID是人性化的接口。這一類(lèi)通訊適用于交互式,有這種功能的設(shè)備有:鍵盤(pán),鼠標(biāo),游戲手柄和數(shù)字顯示設(shè)備。

最后是USB Memory,或者說(shuō)是數(shù)據(jù)存儲(chǔ)。External HDD, thumb drive / flash drive,等都是這一類(lèi)的。

每一個(gè)USB設(shè)備(尤其是HID或者M(jìn)emory)都有一個(gè)供應(yīng)商ID(Vendor Id)和產(chǎn)品識(shí)別碼(Product Id)。Vendor Id是用來(lái)標(biāo)記哪個(gè)廠商生產(chǎn)了這個(gè)USB設(shè)備。Product Id用來(lái)標(biāo)記不同的產(chǎn)品,他并不是一個(gè)特殊的數(shù)字,當(dāng)然最好不同。如下圖:

如何用Wireshark捕獲USB數(shù)據(jù)?

上圖是連接在我電腦上的USB設(shè)備列表,通過(guò)lsusb查看命令。

例如說(shuō),我有一個(gè)無(wú)線鼠標(biāo)Logitech。它是屬于HID設(shè)備。這個(gè)設(shè)備正常的運(yùn)行,并且通過(guò)lsusb這個(gè)命令查看所有usb設(shè)備,現(xiàn)在大家能找出哪一條是這個(gè)鼠標(biāo)嗎??沒(méi)有錯(cuò),就是第四個(gè),就是下面這條:

Bus 003 Device 010: ID 046d:c52f Logitech, Inc. Unifying Receiver

其中,ID 046d:c52f就是Vendor-Product Id對(duì),Vendor Id的值是046d,并且Product Id的值是c52f。Bus 003 Device 010代表usb設(shè)備正常連接,這點(diǎn)需要記下來(lái)。

準(zhǔn)備

我們用root權(quán)限運(yùn)行Wireshark捕獲USB數(shù)據(jù)流。但是通常來(lái)說(shuō)我們不建議這么做。我們需要給用戶足夠的權(quán)限來(lái)獲取linux中的usb數(shù)據(jù)流。我們可以用udev來(lái)達(dá)到我們的目的。我們需要?jiǎng)?chuàng)建一個(gè)用戶組usbmon,然后把我們的賬戶添加到這個(gè)組中。

addgroup usbmon

gpasswd -a $USER usbmon

echo 'SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640"' >

/etc/udev/rules.d/99-usbmon.rules

接下來(lái),我們需要usbmon內(nèi)核模塊。如果該模塊沒(méi)有被加載,我們可以通過(guò)以下命令家在該模塊:

modprobe usbmon

捕獲

打開(kāi)wireshark,你會(huì)看到usbmonX其中X代表數(shù)字。

如果接口處于活躍狀態(tài)或者有數(shù)據(jù)流經(jīng)過(guò)的時(shí)候,wireshark的界面就會(huì)把它以波形圖的方式顯示出來(lái)。那么,我們?cè)撨x那個(gè)呢?沒(méi)有錯(cuò),就是我剛剛讓大家記下來(lái)的,這個(gè)X的數(shù)字就是對(duì)應(yīng)這USB Bus。打開(kāi)他就可以觀察數(shù)據(jù)包了。

如何用Wireshark捕獲USB數(shù)據(jù)?

那么我們獲取到了這些有什么用呢?通過(guò)這些,我們可以了解到usb設(shè)備與主機(jī)之間的通信過(guò)程和工作原理,插播一條硬廣,現(xiàn)在的企業(yè)中有要求是禁止使用USB或只使用USB存儲(chǔ)設(shè)備,這個(gè)時(shí)候可以試一下我們的磁盤(pán)加鎖專家。