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