需要帮助找出用于这个小数据包的校验和。数据包有 48 位长,我已经弄清楚了大部分位。即使数据包的其余部分发生单个位更改,也至少会更改 8 位。所以我猜这一定是某种校验和。尝试了我所知道的所有校验和算法,但没有合适的。
数据包的问题是运动传感器发送的 RF 传输(历史记录如下)。这些位是,
4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
-----------------------------------------------------------------------------------------------
p p p p p s s s 0 0 m t 1 i i i i i i i i 1 i i i i i i i i 1 i i i i i i i i 1 c c c c c c c c
p = Preamble (11111), helps is demodulating the signal by providing enough transitions.
s = Some sort of status (only changed when sensor was initializing after power up)
m = '1' When motion is detected.
t = '1' when tamper switch is pressed.
i = Unique sensor ID which is also printed on the back of the sensor.
c = These bits change whenever any of the other bit change. I'm guessing this is checksum.
笔记:
- 固定的 0 和 1 很可能是其他一些状态报告,在运动传感器的情况下不会改变。
- ID (i) 以非字节偏移量嵌入到数据包中。似乎 ID 嵌入为“1”后跟 8 位,也许该协议最初是为八进制设计的。
- 这个传输似乎没有使用任何滚动码。它总是一样的。
- 这是一个已有 10 多年历史的系统,我不希望它使用任何复杂的东西。
我为三个不同的传感器捕获的示例数据包是,
FA 19 D4 3E 3B A7 (11111010 00011001 11010100 00111110 00111011 10100111)
F9 29 D4 3E 3B EE (11111001 00101001 11010100 00111110 00111011 11101110)
F9 39 D4 3E 3B 44 (11111001 00111001 11010100 00111110 00111011 01000100)
FC 29 D4 C7 11 D4 (11111100 00101001 11010100 11000111 00010001 11010100)
F9 39 D4 C7 11 19 (11111001 00111001 11010100 11000111 00010001 00011001)
F9 29 D4 C7 11 B3 (11111001 00101001 11010100 11000111 00010001 10110011)
FA 19 D4 C7 11 FA (11111010 00011001 11010100 11000111 00010001 11111010)
F9 29 AE 8E DF 57 (11111001 00101001 10101110 10001110 11011111 01010111)
F9 39 AE 8E DF FD (11111001 00111001 10101110 10001110 11011111 11111101)
这不是黑客攻击或类似的东西。这一切都始于使用 SDR 和 GnuRadio 来解调某些 RF 传输的简单练习。一旦正确解调,找出数据包格式就很有挑战性,但这个校验和问题现在让我抓狂。
任何帮助都非常感谢。