流量分析 - USB流量分析基础篇 (带一把梭工具)
流量分析 - USB流量分析基础篇 (带一把梭工具)
原创 xiaoliao1
2025年03月12日 20:36 湖南
鼠标流量基础知识
USB协议鼠标数据部分在Leftover Capture Data域中,数据长度为四个字节
第一个字节,代表按键
当取00时,代表没有按键
当取01时,代表按左键
当取02时,代表当前按键为右键
第二个字节,可看作为signed byte类型,其最高位为符号位,
当值为正时,代表鼠标右移像素位;
值为负时,代表鼠标左移像素位。
```
计算步骤
**(1) 将十六进制转换为二进制**
示例:
0x02 → 00000010,
0xFE → 11111110。
**(2) 判断符号位**
最高位(第7位)为符号位:
0 → 正数(直接转换)。
1 → 负数(需计算补码)。
**(3) 正数直接转换**
示例:
0x02(二进制 00000010)→ **+2**。
**(4) 负数补码转换**
取反:所有二进制位翻转(0→1,1→0)。
加1:结果加1。
添加负号:最终值为负数。
示例:
0xFE(二进制 11111110)符号位为 1 → 负数。
取反 →
00000001。加1 → 00000010(即十进制为2)。最终值 → **-2**。
3. 物理移动方向
正值:向右移动(例如 +2 → 右移2个单位)。
负值:向左移动(例如 -2 → 左移2个单位)。
常见值示例
| 十六进制值 | 二进制值 | 十进制值 | 实际方向 |
| :——–: | :——–: | :——: | :————–: |
| 0x00
| 00000000
| 0 | 无移动 |
| 0x7F
| 01111111
| +127 | 最大右移 |
| 0x80
| 10000000
| -128* | 无效(协议保留) |
| 0xFE
| 11111110
| -2 | 左移2个单位 |
| 0xFF
| 11111111
| -1 | 左移1个单位 |
第三个字节,代表垂直上下移动的偏移。
当值为正时,代表鼠标上移像素位;
值为负时,代表鼠标下移像素位。
和第二个计算的方式一样的,只不过左右变成了上下
键盘流量
基本知识
USB协议数据部分在Leftover Capture Data域中,数据长度为八个字节。
标准8字节键盘数据格式
| 字节位置 | 名称 | 描述 |
| :———: | :—————–: | :———————————————————-: |
| 字节1 | 修饰键(Modifiers) | 表示功能键(Ctrl、Shift、Alt等)的按下状态,每个二进制位对应一个按键。 |
| 字节2 | 保留字段 | 通常为 0x00
,部分设备可能用于扩展功能(如多媒体键)。 |
| 字节3-8 | 普通按键码 | 最多6个同时按下的普通按键的键码(每个按键占1字节)。 |
字节1:Modifier Keys(功能键位掩码)
| 位(Bit) | 对应按键 | HID Usage ID | 描述 |
| :——-: | :————: | :———-: | :————–: |
| Bit 0 | 左Ctrl | 0xE0 | 按下时值为 1
。 |
| Bit 1 | 左Shift | 0xE1 | |
| Bit 2 | 左Alt | 0xE2 | |
| Bit 3 | 左GUI(Win键) | 0xE3 | |
| Bit 4 | 右Ctrl | 0xE4 | |
| Bit 5 | 右Shift | 0xE5 | |
| Bit 6 | 右Alt | 0xE6 | |
| Bit 7 | 右GUI(Win键) | 0xE7 | |
字节3-8:普通按键码(HID Usage ID)
| HID键码(Hex) | 对应按键 | 字符/功能 |
| :————: | :——-: | :——–: |
| 0x00 | 无按键 | - |
| 0x04 | A | A/a |
| 0x05 | B | B/b |
| 0x06 | C | C/c |
| 0x07 | D | D/d |
| 0x08 | E | E/e |
| 0x09 | F | F/f |
| 0x0A | G | G/g |
| 0x0B | H | H/h |
| 0x0C | I | I/i |
| 0x0D | J | J/j |
| 0x0E | K | K/k |
| 0x0F | L | L/l |
| 0x10 | M | M/m |
| 0x11 | N | N/n |
| 0x12 | O | O/o |
| 0x13 | P | P/p |
| 0x14 | Q | Q/q |
| 0x15 | R | R/r |
| 0x16 | S | S/s |
| 0x17 | T | T/t |
| 0x18 | U | U/u |
| 0x19 | V | V/v |
| 0x1A | W | W/w |
| 0x1B | X | X/x |
| 0x1C | Y | Y/y |
| 0x1D | Z | Z/z |
| 0x1E | 1 | 1/! |
| 0x1F | 2 | 2/@ |
| 0x20 | 3 | 3/# |
| 0x21 | 4 | 4/$ |
| 0x22 | 5 | 5/% |
| 0x23 | 6 | 6/^ |
| 0x24 | 7 | 7/& |
| 0x25 | 8 | 8/ |
| 0x26 | 9 | 9/( |
| 0x27 | 0 | 0/) |
| 0x28 | Enter | 回车键 |
| 0x29 | Esc | Esc键 |
| 0x2A | Backspace | 退格键 |
| 0x2B | Tab | Tab键 |
| 0x2C | Space | 空格键 |
| 0x2D | - | -/_ |
| 0x2E | = | =/+ |
| 0x2F | [ | [/{ |
| 0x30 | ] | ]/} |
| 0x31 | \ | /\| |
| 0x33 | ; | ;/: |
| 0x34 | ' | '/” |
| 0x35 | |
/~ |
| 0x36 | , | ,/< |
| 0x37 | . | ./> |
| 0x38 | / | /? |
| 0x39 | Caps Lock | 大写锁定键 |
| 0x3A | F1 | F1功能键 |
| 0x3B | F2 | F2功能键 |
| … | … | … |
| 0x52 | ↑ | 方向键上 |
| 0x51 | ↓ | 方向键下 |
| 0x50 | ← | 方向键左 |
| 0x4F* | → | 方向键右 |
分析
这里看到第三位是09,和上面的表对应一下就是F
USB的流量分析基础就是这些,下面是自动化 (大人时代变了(举枪))
一把梭工具
一把梭工具使用前请保证环境配置
首先要将wireshark里面的tshark.exe所在的文件夹添加到环境变量path下
添加到环境变量(path)里面
查看是否添加成功
能成功执行看到版本号就说明添加成功了
实战
请还原鼠标流量找到flag
打开usb2的流量包先看capture Data是几位的,分析出来是什么流量
这里看到4位的USB流量,直接打开一把梭工具,打开命令行
打开工具
python run_GUI.py
浏览文件选择需要分析的流量包
看所有的按键流量
太乱了看不出来,一个一个看(左键)
右键
XNUCA{USBPCAPCETEVERYHING}
请还原键盘流量找到flag
直接导入执行
秒了 flag{pr355_0nwards_a2fee6e0}
数据包和工具放资源包里了,需要的可以去拿。
工具免费提供禁止倒卖盈利!!!!!!!