过滤制定设备数据
将usb设备插入主机,可以看到在当前bus上有很多设备的数据,我们需要将指定usb设备过滤出来。
每一个usb设备插入时,host端都会先发一个获取设备描述的指令。
usb设备收到该指令后会返回一个自身信息的包给到host。
我们可以根据收到返回数据信息中找到指定设备,然后根据编号设置过滤条件。
usb.src == “1.16.0” || usb.dst==“1.16.0”
5. 这时候我们通过libusb来和usb设备进行交互。可以看到当open设备的时候,有大量交互产生。
6. 这时候我们开启bulk传输来获取设备sn号
7. 获取案件事件和音频
可以看到数据是通过interrupt传输过来,每次都是由host端主动发起一个请求,设备端再返回一笔数据。
每次数据长度是64字节,间隔1ms,设备端返回的是128字节,但是只有后面64字节是有效数据,其他的应该是头信息。
有一点需要注意的是,这时候usb.dst 端口不再三单纯的1了,还会出现4和3等。
安装
sudo add-apt-repository ppa:wireshark-dev/stable
Step 2: Update the repository:
sudo apt-get update
Step 3: Install wireshark 2.0:
sudo apt-get install wireshark
Step 4: Run wireshark:
sudo wireshark
If you get a error couldn’t run /usr/bin/dumpcap in child process: Permission Denied. go to the terminal again and run:
sudo dpkg-reconfigure wireshark-common
Say YES to the message box. This adds a wireshark group. Then add user to the group by typing
sudo adduser $USER wireshark
抓包usb
addgroup usbmon
gpasswd -a $USER usbmon
sudo vi /etc/udev/rules.d/99-usbmon.rules
#加入下面一行,保存退出
SUBSYSTEM==“usbmon”, GROUP=“usbmon”, MODE="640“
lsusb查看usb设备在哪条总线上
1.打开wireshark
sudo wireshark
2.选中usbmon1代表抓取Bus 001的报文
在抓取的报文中有Devices: 26即为我们要抓的USB设备报文
参考