UsbKeyboardDataHacker
对于这种流量一般都在usbhid.data或usb.capdata中
项目地址:https://github.com/WangYihang/UsbKeyboardDataHacker
流量分析中专门用来提取USB键盘数据的工具

使用方法
python UsbKeyboardDataHacker.py --input tests/example.pcap
最后会在命令行输出键盘的结果
UsbKbCracker
对于这种流量一般都在usbhid.data或usb.capdata中
项目地址:https://github.com/P001water/UsbKbCracker
流量分析中专门用来提取USB鼠标数据的工具
使用方法
python .\UsbKeyboardDataexp.py -f .\example\ez_usb.pcapng -e usbhid.data -Y "usb.src==2.8.1"
| 部分 | 含义 |
|---|---|
python .\UsbKeyboardDataexp.py | 执行当前目录下的脚本 UsbKeyboardDataexp.py,使用 Python 解释器运行。这个脚本功能是从 USB 抓包中提取键盘数据。 |
-f .\example\ez_usb.pcapng | 指定输入文件,是一份 抓包文件,通常由 Wireshark 或 Tshark 捕获,格式为 .pcapng。 |
-e usbhid.data | 指定要提取的数据字段,这里是 usbhid.data,表示从 USB HID 协议中提取键盘数据内容(HID 是 Human Interface Device,比如键盘、鼠标)。 |
-Y "usb.src==2.8.1" | 这是一个 显示过滤器表达式,表示只分析 USB 源地址为 2.8.1 的数据包。这个地址代表的是某个 USB 设备的路径(比如第2个hub下第8个端口的设备的endpoint 1)。 |
其它USB鼠标脚本
import os
os.system("tshark -r test2.pcapng -T fields -e usbhid.data > usbdata.txt")
nums = []
keys = open('usbdata.txt', 'r')
result = open('result.txt', 'w')
posx = 0
posy = 0
for line in keys:
if len(line) != 13:
continue
x = int(line[4:6], 16)
y = int(line[6:8], 16)
if x > 127:
x -= 256
if y > 120:
y -= 264
posx += x
posy += y
btn_flag = int(line[2:4], 16) # 1 for left , 2 for right , 0 for nothing
if btn_flag == 1:
result.write(str(posx) + ' ' + str(-posy) + '\n')
print(result)
keys.close()
result.close()
os.system("gnuplot -e \"plot \'result.txt\'\" -p")