2017-09-08 66 views
0

我试图对协议的校验和进行反向工程。它似乎是一个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,那将不胜感激。

  • 汤姆
+0

你可以用任何你想要的东西进去看看校验和是如何出来的吗?如果是这样,我建议喂养2,4,8和16行文件,每行文件全部为0,然后全部为1(总共8个文件),然后比较结果。这应该比看柜台更具启发性。我快速地看了一下,看起来似乎有某种楼梯踏步模式正在进行,但看起来并不简单。 – Patrick87

回答

0

我想通了,从一个匿名人士对IRC的帮助。原来它不是完整的数据包,它之前有更多位。之后,它是一个简单的所有值的XOR加上一个MOD 16.