从 USB 捕获中计算数据包结构

逆向工程 十六进制 USB 结构体 漂浮
2021-06-27 08:40:51

我希望了解自动诊断工具通过 USB 报告数据的方式。我已经做了一个 USB 捕获,以根据它测量的输入的已知更改来查找更改。测量的是节气门位置,报告范围为 0.000000% 到 100.000000%(显示 6 位小数)

Here as a full packet, throttle 100%
    41 05 2B C0 FF 15 01 00 AA 00 00 00 00 00 FF 15
    16 00 01 AA 00 00 00 00 01 08 11 00 05 61 C6 00
    6D C3 67 52 4C 49 2D FF 00 00 00 00 55 00 F2

这是一个数据包序列,仅显示最后一行发生变化,以及收到同一数据包的连续时间

Throttle ~50%
6D C3 67 52 4C 49 2D 7F 00 00 00 00 55 00 72 x3
6C C3 67 52 4C 49 2D 7F 00 00 00 00 55 00 73 x3
6D C3 67 52 4C 49 2D 7F 00 00 00 00 55 00 72 x5
6C C3 67 52 4C 49 2D 7F 00 00 00 00 55 00 73 x1

Throttle 100%
6C C3 67 52 4C 49 2D FF 00 00 00 00 55 00 F3 x2
6D C3 67 52 4C 49 2D FF 00 00 00 00 55 00 F2 x4
6C C3 67 52 4C 49 2D FF 00 00 00 00 55 00 F3 x3
6D C3 67 52 4C 49 2D FF 00 00 00 00 55 00 F2 x3

Throttle 0%
6D C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F1 x2
6C C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F2 x1
6D C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F1 x1
6C C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F2 x1
6D C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F1 x3
6C C3 67 52 4C 49 2D 00 00 00 00 00 55 00 F2 x1

所以最初我注意到第 8 个字节,并认为它可能与 0 - 255 的 ADC 读数相关,然后显示为 0 - 100%。但是后来我在日志中发现它使用 _TYPE="FLOAT" 将百分比读数保存到小数点后 6 位。

我还注意到,在与同一节气门位置相关的一组类似数据包中,第一个和最后一个字节(对于该行)有交替变化的模式

我还注意到数据包几乎都是一样的,除了看起来很小的差异,但这些差异必须比看起来更大的存储数据差异。

那么任何人都可以看到它是如何存储的吗?

0个回答
没有发现任何回复~