使用Wireshark抓取键盘HID数据
1. 准备工作
必需工具
-
Wireshark 4.2+(最新版)
-
USBPcap 1.5.4.0+(USB 抓包驱动)
-
管理员权限的 PowerShell
-
物理 USB 键盘(非蓝牙/PS2)
关键限制
-
Windows 无原生 USB 监控支持:必须依赖 USBPcap 驱动。
-
仅能捕获原始数据:需手动解析 HID 协议。
2. 安装与配置 USBPcap
步骤 1:安装 USBPcap
-
下载 USBPcap 安装包。
-
安装时勾选 "Install USBPcap Filter Driver" 和 "Add USBPcap interfaces to Wireshark"。

-
安装Wireshark

-
完成安装后重启电脑。
步骤 2:验证驱动
-
打开设备管理器(
devmgmt.msc)。 -
展开 "Universal Serial Bus devices"。
-
确认键盘设备旁有 USBPcap 标记(如
USBPcap Capturing Device)。
3. 捕获键盘 USB 数据
步骤 3:启动 Wireshark
-
以 管理员身份 运行 Wireshark。
-
在接口列表中选择 USBPcap1(对应 USB 根集线器)。
-
如果有多条 USBPcap 接口,通过拔插键盘确认正确接口。

-
步骤 4:设置捕获过滤器
-
在捕获过滤栏输入(替换
X为键盘的bus_id和device_address):usb.device_address == X && usb.bus_id == X -
如何获取
bus_id和device_address:在 PowerShell 运行Get-PnpDevice -Class USB | Select-Object Name, InstanceId
-
从输出中找到键盘的
InstanceId,格式如USB\VID_046D&PID_C31C\XXXX,其中bus_id和device_address对应最后一段。
步骤 5:开始捕获
-
点击 Start 按钮开始抓包。
-
在记事本或终端中按下按键(如
A、B、Enter)。 -
停止捕获(Ctrl+E)。
4. 解析 HID 键盘数据
步骤 6:过滤 HID 数据包
-
在 Wireshark 显示过滤器中输入:
usb.transfer_type == 0x01 && usb.endpoint_number.direction == IN-
0x01:中断传输类型。 -
IN:键盘到主机的数据传输方向。
-
-
找到 URB_INTERRUPT in 数据包,展开
USBHID层查看HID Data。
步骤 7:解码按键
-
HID 数据格式(8 字节):
Byte 0: 修饰键(Shift/Ctrl/Alt) Byte 1: 保留 Byte 2-7: 按键键码(最多 6 个按键) -
示例:按下
A键:00 00 04 00 00 00 00 00-
04是A的 HID 键码(参考 HID 键码表)。
-
步骤 8:处理修饰键
-
若
Byte 0非零:-
0x02:Left Shift → 大写A。 -
0x20:Right Alt → Alt+A。
-
5. 自动化解析(可选)
使用 Python 提取按键
def decode_hid(data):
keymap = {
0x04: 'A', 0x05: 'B', 0x06: 'C',
0x07: 'D', 0x08: 'E', 0x09: 'F'
# 完整键位映射参考HID使用表
}
return keymap.get(data[2], '[UNKNOWN]')
with open('keydata.txt') as f:
for line in f:
if line.strip():
bytes = [int(x,16) for x in line.strip().split(':')]
print(decode_hid(bytes))
6. 常见问题解决
Q: Wireshark列表页中找不到USBPcap
-
将 C:\Program Files\USBPcap\USBPcapCMD.exe 复制到 C:\Program Files\Wireshark\extcap\ 和 C:\Program Files\Wireshark\extcap\wireshark子目录中(wireshark文件夹若不存在则新建) 。
Q: 捕获不到数据?
-
确认键盘连接到 USB 2.0 端口(USBPcap 对 USB 3.0 支持有限)。
-
检查 Wireshark 是否以管理员运行。
Q: 数据包不完整?
-
调整 Wireshark 捕获缓冲区大小:
-
Capture→Options→Output→ 增加File size。
-
Q: 如何区分多个键盘?
-
在设备管理器中禁用其他 USB HID 设备。
总结
-
安装 USBPcap → 解锁 Windows USB 抓包能力。
-
过滤键盘设备 → 精确捕获目标数据。
-
解析 HID 协议 → 提取键码并映射字符。
-
注意权限 → 全程需管理员权限。
此方法适用于安全研究、键盘固件调试等场景,但请注意隐私和合规性。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)