UsbKeyboardDataHacker

对于这种流量一般都在usbhid.datausb.capdata中 项目地址:https://github.com/WangYihang/UsbKeyboardDataHacker

流量分析中专门用来提取USB键盘数据的工具

使用方法

python UsbKeyboardDataHacker.py --input tests/example.pcap

最后会在命令行输出键盘的结果

UsbKbCracker

对于这种流量一般都在usbhid.datausb.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")