【问题标题】:Reverse CRC calculation反向 CRC 计算
【发布时间】:2017-03-01 00:42:38
【问题描述】:

我正在尝试(未成功)使用 VB.Net 对计算机和设备之间的串行通信进行反向 CRC 计算。我只有几个例子。

命令(用于从设备读取记录):
ff ff ff ff 02 01 02 1a 03 aa aa

数据回复:

02 01 0a 1a 3a 00 3b f6 ec 80 79 24 03 7f 7f
02 01 0a 1a 36 00 3c 13 a6 广告 69 24 03 02 02
02 01 0a 1a 12 00 13 6f ba af 69 24 03 df df
02 01 0a 1a 10 00 a7 05 43 2c e9 25 03 57 57

01 是设备 ID。
0一个字节是长度。
1a 是命令(可能)。
数据从字节 00 存储到字节 03。

没有数据时的响应:
02 01 02 2a 03 87 87

我认为最后两个字节是 crc。对如何计算它们有帮助吗?
提前致谢。

【问题讨论】:

  • 对校验和进行逆向工程的最佳选择是查看校验和在数据中的一位变化时发生了多大的变化。如果校验和只有很小的变化,您可以从那里向后工作。
  • 因为你认为是crc的两个字节总是相同的,它只是一个8位的值,重复。你可以试试这个计算器ghsi.de/CRC/… 和 crc-8 的所有排列,倒置,反转等。见en.wikipedia.org/wiki/Cyclic_redundancy_check 或者它可能不是一个 crc,可能是一个校验和,可能是通过添加或异或字节在一起形成的校验和,或者......无论协议设计者认为是验证消息的好方法......祝你好运!
  • 系统发育 - 我无法获得序列数据,所以......不过,谢谢。
  • barny - 我会试试的,谢谢。
  • 设备的名称/型号是什么?

标签: vb.net serial-port crc


【解决方案1】:

那就是 MAXIM CRC-8,它有这些参数:

width=8 poly=0x31 init=0x00 refin=true refout=true xorout=0x00 check=0xa1 name="CRC-8/MAXIM"

来自RevEng catalog。如 cmets 中所述,8 位 CRC 在消息中重复。 (第一个示例中的五个 0xff 字节不包括在 CRC 计算中。)

您可以使用crcany 为该CRC 生成代码。

【讨论】:

  • 哇!非常感谢马克!我正在潜水。
  • 再次感谢您!在您的帮助下,我能够计算出 crc。
猜你喜欢
  • 2012-05-08
  • 1970-01-01
  • 2011-11-08
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2017-02-11
  • 2014-03-06
相关资源
最近更新 更多