流量分析 - 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}
数据包和工具放资源包里了,需要的可以去拿。
工具免费提供禁止倒卖盈利!!!!!!!
 
           
        
      