我使用Wireshark捕获USB流量,以便分析HID设备的描述符。
每次这个HID设备被插入,操作系统将分配一个新的USB端口。所以我不能使用预定义的过滤器。要找到当前的USB端口,我必须排除所有的噪音端口。这非常麻烦;特别是当系统重新启动时,枚举可能会有所不同。
如果我知道设备在某个范围内,是否有更简单的方法来过滤感兴趣的设备?例如"1.50.*“. "1.99.*”。
电流过滤器:
(usb.src != "1.1.0") && (usb.dst != "1.1.0") && (usb.src != "1.2.0") && (usb.dst != "1.2.0") && (usb.src != "1.3.0") && (usb.dst != "1.3.0") && (usb.src != "1.3.2") && (usb.dst != "1.3.2") && (usb.src != "1.4.0") && (usb.dst != "1.4.0") && (usb.src != "1.5.0") && (usb.dst != "1.5.0") && (usb.src != "1.5.1") && (usb.dst != "1.5.1") && (usb.src != "1.6.0") && (usb.dst != "1.6.0") && (usb.src != "1.7.0") && (usb.dst != "1.7.0") && (usb.src != "1.8.0") && (usb.dst != "1.8.0") && (usb.src != "1.8.1") && (usb.dst != "1.8.1") && (usb.src != "1.9.0") && (usb.dst != "1.9.0") && (usb.src != "1.9.1") && (usb.dst != "1.9.1") && (usb.src != "1.9.2") && (usb.dst != "1.9.2") && (usb.src != "1.13.0") && (usb.dst != "1.13.0") && (usb.src != "1.14.0") && (usb.dst != "1.14.0") && (usb.src != "1.23.0") && (usb.dst != "1.23.0")
应用过滤器:

发布于 2022-09-14 13:38:32
起初,我没有意识到usb.src和usb.dst似乎代表常规字符串。可以使用数组索引访问单独的字符。
若要筛选USB端口范围"1.50.*“至”1.59.*“,请执行以下操作:
((usb.src[0] == "1") && (usb.src[1] == ".") && (usb.src[2] == "5") && (usb.src[3] != ".")) || ((usb.dst[0] == "1") && (usb.dst[1] == ".") && (usb.dst[2] == "5") && (usb.dst[3] != "."))
如果将相同的筛选器应用于usb.src和usb.dst,则可以仅使用usb.addr简化表达式。
(usb.addr[0] == "1") && (usb.addr[1] == ".") && (usb.addr[2] == "5") && (usb.addr[3] != ".")
要将USB端口范围"1.50.*“筛选为"1.99.*",可以使用>=和<=指定范围:
((usb.src[0] == "1") && (usb.src[1] == ".") && (usb.src[2] >= "5") && (usb.src[2] <= "9") && (usb.src[3] != ".")) || ((usb.dst[0] == "1") && (usb.dst[1] == ".") && (usb.dst[2] >= "5") && (usb.dst[2] <= "9") && (usb.dst[3] != "."))
有趣的是,当使用>=和<=时,使用usb.addr的简化形式似乎不起作用。
(usb.addr[0] == "1") && (usb.addr[1] >= ".") && (usb.addr[2] >= "5") && (usb.addr[2] <= "9") && (usb.addr[3] != ".")

您必须用特定的usb.addr或usb.dst替换包含>=和<=的术语的usb.src。为什么我没发现这件事。
(usb.addr[0] == "1") && (usb.addr[1] == ".") && (((usb.src[2] >= "5") && (usb.src[2] <= "9")) || ((usb.dst[2] >= "5") && (usb.dst[2] <= "9"))) && (usb.addr[3] != ".")

https://stackoverflow.com/questions/73715190
复制相似问题