2016-10-03 50 views
0

所以我有问题找到一系列命令的CRC值,我已经有一些命令的CRC值,但我需要弄清楚它们是如何计算的。仔细检查数据流并尝试计算CRC后,我们无法获得已知的CRC值和计算出的CRC值以匹配。我以前从来没有计算过CRC,但我已经阅读过多篇论文,似乎很容易,除非它没有工作。手册我说多项式生成器是(x^8 + x^7 + X^2 + X^0),它给了我一个独特的非零值B1(十六进制)。完整的命令是A9E40401(十六进制),CRC为1E(十六进制)。我目前使用的过程包括将数据流从十六进制转换为二进制,使用LSB优先规则,在命令中插入FF(十六进制)以检测多余的零,将00(十六进制)添加到末尾作为占位符,并且执行mod2划分,并且将其反转并将其应用于数据流。要么我做错了什么,要么我错过了一步。我假设我提供的多项式是正确的。任何帮助将不胜感激。我如何反向工程一个已知的循环冗余校验值?

回答

0

我觉得自己像个白痴。 当我计算我的CRC时,除了最后一步必须执行LSB优先规则并且反转余数之外,我还是正确地执行了每一步。 我只执行LSB第一条规则(认为这是反转意味着什么)。 因此,对于00011101的剩余部分,我得到了错误的CRC值(10111000)。当我应该得到01000111.

0

您可以尝试RevEng,这正是为了从一组示例中确定CRC参数。

然后你可以使用crcany来生成代码。

+0

真棒。感谢您的宝贵帮助。我希望这有助于我解决我的问题。我会在他们出现时发布我的结果。 – Jon