【问题标题】:How do i reverse engineer a known Cyclic Redundancy Check value?如何对已知的循环冗余校验值进行逆向工程?
【发布时间】:2016-10-03 14:15:26
【问题描述】:

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

【问题讨论】:

    标签: error-handling binary hex crc cyclic


    【解决方案1】:

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

    然后就可以使用crcany生成代码了。

    【讨论】:

    • 太棒了。感谢您的宝贵帮助。我希望这有助于我解决我的问题。我会在结果出来时发布我的结果。
    【解决方案2】:

    我觉得自己像个白痴。 当我计算我的 CRC 时,我正确地完成了每一步,除了最后一步,你必须执行 LSB 优先规则,而不是反转余数。 我只执行了 LSB 第一规则(认为这就是反转的意思)。 所以剩下的 00011101 我得到了错误的 CRC 值(10111000)。当我应该得到 01000111 时。

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 2016-10-20
      • 2021-09-27
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多