很长一段时间以来,我一直在努力确定以下序列的校验和。
我有两个例子。
Ex1:具有相同的校验和,并且
在相同位置(字节 8)具有 0x0A 的有效载荷增量。
Ex2:这个有相同的校验和(9.byte)。
我确定这是校验和并且始终为 1 字节。
我注意到校验和的值不大于 0x7F。
我有很多示例,但我看到它永远不会增长到 0x80。
它也可以不是 0xFF,因为 0xFF 将序列标记为结束。
8.Byte 上有效载荷增量为 0x0A 的示例。
01:ED 0 1 0 1 0 0 00 29
02:ED 0 1 0 1 0 0 0A 19
03:ED 0 1 0 1 0 0 14 49
04:ED 0 1 0 1 0 0 1E 0 0 1E 0 0
ED 1 0 0 28 4A
06:ED 0 1 0 1 0 0 32 44
此示例具有相同的校验和 (0x53):
01: E4 09 01 02 26 50 00 53
02: E4 10 01 01 00 0F 00 53
03: E4 14 01 09 42 09 41 53 5 3 09 41 53
10 3 02
05:E4 01 02 21 02 50 00 53
05:E4 01 02 22 22 52 00 53
06:E4 01 02 22 31 05 00 53
07:E4 02 02 05 02 02
我测试了各种算法。Fletcher、Adler32、BSD 8Bit 就是其中之一。
Xor8 对移位位和各种模数进行了一些测试。
我已经对这些值进行了异化处理,但没有任何有价值的东西出来。
Reveng 给了我一些结果,但不是所有序列。
我也确定它不是 CRC,而只是一个简单的校验和。
如果有提示我可以如何反转校验和,我已经阅读了很多线程。
但我看不到任何处理 7 位的东西。我也看了一下,但我不知道如何开始。
我看到一些参与,但没有看到关系。
在第一个块中,我看到校验和以 0x09 结尾。(设置 1 - 4)
如果有效载荷增加 0x0A,校验和也会增加 0x30(设置 2-4)直到特定点(设置 5)。
我相信这很简单。在德语中,我会说“ich sehe den Wald vor lauter Bäumem nicht”。
不知道正确的英文翻译。;-)
如果有人能指出我正确的方向,我将不胜感激。
最好的问候
克里斯
编辑: - 用“校验和”替换文本中的“crc”一词,以便更好地理解。
Tnx 给 JimmyB 的提示。