4.4.3.1. USB枚举示例数据

抓包工具抓到了共0x42=66字节的数据,其中每个字节对应的十六进制表示是两个数字,所以一共是66x2=132个数字:

0902420002010480E10904000002FF000000092110010001223F0007050103400001070581034000010904010001030000000921100100012221000705820340000A

可被拆分为对应的8组:

  • 0902420002010480E1
  • 0904000002FF000000
  • 092110010001223F00
  • 07050103400001
  • 07058103400001
  • 090401000103000000
  • 092110010001222100
  • 0705820340000A

而关于为何可以被分成这8组,此处先解释一下:

[提示]如何(解析)看懂USB枚举的数据

对于Configuration,Interface,Endpoint,Class等部分,其数据格式的定义中,首字节,都是表示长度,即,接下来多少个字节,属于当前这部分。

所以,对于上述数据来说,从开始的“09”,我们就知道了,接下来的8个字节的数据“02420002010480E1”,都是属于当前Configuration部分的。

以此接着往下判断,则分别可以判断出对应的每一部分的数据,都是哪些。

而对于这些数据分组的依次顺序,则是USB协议中定义的。详细定义,请参考USB协议。