协议校验和逆向工程

时间:2017-09-08 15:31:39

标签: math cryptography protocols checksum decoding

我试图对协议的校验和进行逆向工程。它似乎是一个基于4位的半字节协议。 以下是协议中数据包的二进制表示:

1000 0001 1000 0001 0000 0001 1111 0010 1010 : 1001
1000 0001 1000 0001 0000 0001 1111 0010 1011 : 1010
1000 0001 1000 0001 0000 0001 1111 0010 1100 : 1111
1000 0001 1000 0001 0000 0001 1111 0010 1101 : 0000
1000 0001 1000 0001 0000 0001 1111 0010 1110 : 1101
1000 0001 1000 0001 0000 0001 1111 0010 1111 : 1110
1000 0001 1000 0001 0000 0001 1111 0011 0000 : 0100
1000 0001 1000 0001 0000 0001 1111 0011 0001 : 0011
1000 0001 1000 0001 0000 0001 1111 0011 0010 : 0010
1000 0001 1000 0001 0000 0001 1111 0011 0011 : 0001
1000 0001 1000 0001 0000 0001 1111 0011 0100 : 1000
1000 0001 1000 0001 0000 0001 1111 0011 0101 : 0111
1000 0001 1000 0001 0000 0001 1111 0011 0110 : 0110
1000 0001 1000 0001 0000 0001 1111 0011 0111 : 0101
1000 0001 1000 0001 0000 0001 1111 0011 1000 : 1100
1000 0001 1000 0001 0000 0001 1111 0011 1001 : 1011
1000 0001 1000 0001 0000 0001 1111 0011 1010 : 1010
1000 0001 1000 0001 0000 0001 1111 0011 1011 : 1001
1000 0001 1000 0001 0000 0001 1111 0011 1100 : 0000
1000 0001 1000 0001 0000 0001 1111 0011 1110 : 1110
1000 0001 1000 0001 0000 0001 1111 0011 1111 : 1101
1000 0001 1000 0001 0000 0001 1111 0100 0000 : 0101
1000 0001 1000 0001 0000 0001 1111 0100 0001 : 0110
1000 0001 1000 0001 0000 0001 1111 0100 0010 : 0111
1000 0001 1000 0001 0000 0001 1111 0100 0011 : 1000
1000 0001 1000 0001 0000 0001 1111 0100 0100 : 0001
1000 0001 1000 0001 0000 0001 1111 0100 0101 : 0010
1000 0001 1000 0001 0000 0001 1111 0100 0110 : 0011
1000 0001 1000 0001 0000 0001 1111 0100 0111 : 0100

最后一个半字节(":"之后)是某种校验和。我无法弄清楚它是如何计算出来的。我甚至不确定是否需要考虑所有以前的字段。大多数(如果不是全部)其他36位是简单递增计数器的一部分。

如果有人可以帮助弄清楚用于计算csum的算法,那将非常感激。

  • 汤姆

1 个答案:

答案 0 :(得分:0)

我在IRC的一位匿名人士的帮助下弄明白了。事实证明它不是完整的数据包,它前面有更多的比特。之后,它是所有值的简单XOR加上一个mod 16。