2017-09-08 90 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.