ubuntu下抓取usb串口数据

usb串口数据抓取方式

usbmon + tcpdump + wireshak

查看串口设备文件

root@gb-Default-string:/home/gb/work/test/test4/bin#ls -ltr /dev/
.......
crw-rw----  1 root dialout 166,   0 Jul 10 21:04 ttyACM0
.......

检查usbmon模块

如果没有则加载usbmon模块,则进行加载

root@gb-Default-string:/home/gb/work/test/test4/bin#lsmod | grep usbmon
或者
root@gb-Default-string:/home/gb/work/test/test4/bin#ls /sys/module/usbmon/
或者
root@gb-Default-string:/home/gb/work/test/test4/bin#ls -tlr /sys/kernel/debug/usb/
root@gb-Default-string:/home/gb/work/test/test4/bin# modprobe usbmon
root@gb-Default-string:/home/gb/work/test/test4/bin#lsmod | grep usbmon
usbmon
root@gb-Default-string:/home/gb/work/test/test4/bin# ls /sys/module/usbmon/
coresize  holders  initsize  initstate  notes  refcnt  sections  srcversion  taint  uevent
root@gb-Default-string:/home/gb/work/test/test4/bin# ls -tlr /sys/kernel/debug/usb/
total 0
-r--r--r-- 1 root root 0 Jul 10 21:04 devices
drwxr-xr-x 3 root root 0 Jul 10 21:04 xhci
drwxr-xr-x 2 root root 0 Jul 10 21:04 uhci
drwxr-xr-x 2 root root 0 Jul 10 21:04 ohci
drwxr-xr-x 2 root root 0 Jul 10 21:04 ehci
drwxr-xr-x 2 root root 0 Jul 11 02:31 usbmon

查看usb设备总线

root@gb-Default-string:/home/gb/work/test/test4/bin# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 10000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/7p, 480M
    |__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/7p, 480M
    |__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 6, If 0, Class=Communications, Driver=cdc_acm, 12M
        |__ Port 3: Dev 6, If 1, Class=CDC Data, Driver=cdc_acm, 12M
    |__ Port 7: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 2: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 7, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 8, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
root@gb-Default-string:/home/gb/work/test/test4/bin# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 008: ID 413c:301a Dell Computer Corp. 
Bus 001 Device 007: ID 413c:2113 Dell Computer Corp. 
Bus 001 Device 005: ID 214b:7250  
Bus 001 Device 006: ID 0483:5740 STMicroelectronics STM32F407
Bus 001 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 003: ID 1a40:0201 Terminus Technology Inc. FE 2.1 7-port Hub
Bus 001 Device 002: ID 1a40:0201 Terminus Technology Inc. FE 2.1 7-port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@gb-Default-string:/home/gb/work/test/test4/bin# ls -tlr /sys/kernel/debug/usb/devices 
-r--r--r-- 1 root root 0 Jul 10 21:04 /sys/kernel/debug/usb/devices
root@gb-Default-string:/home/gb/work/test/test4/bin# cat  /sys/kernel/debug/usb/devices 

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh=12
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.15
S:  Manufacturer=Linux 4.15.0-142-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 7
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=1a40 ProdID=0201 Rev= 1.00
S:  Product=USB 2.0 Hub [MTT]
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=01 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=02 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=480  MxCh= 7
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=1a40 ProdID=0201 Rev= 1.00
S:  Product=USB 2.0 Hub [MTT]
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=01 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=02 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=02 Cnt=03 Dev#=  4 Spd=480  MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1a40 ProdID=0101 Rev= 1.11
S:  Product=USB 2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=04 Port=02 Cnt=01 Dev#=  6 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=02(comm.) Sub=02 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0483 ProdID=5740 Rev= 2.00
S:  Manufacturer=STMicroelectronics
S:  Product=ALIENTEK STM32F4 Virtual COM
S:  SerialNumber=367835693031
C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=16ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm
E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

T:  Bus=01 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=  5 Spd=480  MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=214b ProdID=7250 Rev= 1.00
S:  Product=USB2.0 HUB
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=05 Port=01 Cnt=01 Dev#=  7 Spd=1.5  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=2113 Rev=33.09
S:  Product=Dell KB216 Wired Keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid
E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=10ms

T:  Bus=01 Lev=02 Prnt=05 Port=02 Cnt=02 Dev#=  8 Spd=1.5  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=413c ProdID=301a Rev= 1.00
S:  Manufacturer=PixArt
S:  Product=Dell MS116 USB Optical Mouse
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=10ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=10000 MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 4.15
S:  Manufacturer=Linux 4.15.0-142-generic xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:00:14.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms
root@gb-Default-string:/home/gb/work/test/test4/bin# 

注:Bus 001 Device 006: ID 0483:5740 STMicroelectronics STM32F407 就是我们要找一个usb串口

tcpdup抓取usb包

从上面设备总线上看出usb串口位于总线1上,所以用usbmon1

root@gb-Default-string:/home/gb/work/test/test4/bin# tcpdump -i usbmon1 -s0 -w usbmon1.pcap
tcpdump: listening on usbmon1, link-type USB_LINUX_MMAPPED (USB with padded Linux header), capture size 262144 bytes
^C545 packets captured
545 packets received by filter
0 packets dropped by kernel

如果tcpdump抓包出现下面错误,需要安装libpcap库

root@gb-Default-string:/home/gb/work/test/test4/bin# tcpdump -i usbmon1 -s0  -w usbmon1.pcap
tcpdump: usbmon1.pcap: No such file or directory

用wireshark分析usb包数据

从上面信息得到bus总线为1,deviceid为6,所以可以用usb.device_address == 6 && usb.bus_id==1的过滤条件去过滤包

参考文献

https://blog.csdn.net/qq_41782149/article/details/129021400
https://www.ngui.cc/zz/1997653.html?action=onClick
https://zhuanlan.zhihu.com/p/267820933
https://www.cnblogs.com/yhuse/p/LibPCap.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值