找到CRC算法,有一些输入和输出数据对

逆向工程 解密 去混淆 CRC
2021-07-04 06:42:47

我正在尝试发现丢失软件的算法,有一个设备需要一些数据,并使用“KEY”验证数据,如果您更改数据的任何参数,则需要一个有效的 KEY。

数据由 4 个 int 值组成,KEY 是 6 位的 HEX。

param1  param2      param3  param4  KEY
5669    30/06/2014  187769  960     0xA34108
5812    31/01/2015  233789  960     0xFAE094
5812    31/01/2015  233859  960     0x176471
6437    30/06/2015  368923  10000   0x35E6C2
6468    31/07/2015  398013  10000   0x404818
6161    30/09/2015  312581  960     0x9A59BC
6161    30/09/2015  311298  960     0xEC454C
6655    31/12/2016  448758  960     0x??????

我怀疑该算法是一种 CRC,因为在该软件中,您可以在名为 CRC 的字段中输入类似 4 位十六进制种子的内容:

根据 KEY 的长度,我认为它应该是 CRC-24,但软件使用的是 4 长度,因此不是 CRC-24 的异或输入或异或输出。

我已经通过蛮力在 Python[crcmod] 上进行了测试,所有参数组合用作输入数据以及所有组合 [ 0x000000- 0xFFFFFF] 可能的种子和 CRC-24 的异或输出。我也试图通过曲线拟合找到方程,但没有运气,关系接缝不可预测。

我知道有很多 CRC 版本:多项式、哈希表等。有人知道可以在这里使用的 CRC 版本或算法吗?

0个回答
没有发现任何回复~