0

我正在尝试对CRC进行逆向工程。当我计算数据的 CRC-16 时,它与发送数据的 crc 非常相似,但并不完全相等。

找出计算此 CRC 的确切方法的最佳方法是什么?是否可以在这里使用另一个多项式或另一个初始值?

以下是一些与 CRC-16 相比具有自己 CRC 的数据包:

Packet           CRC    CRC-16  Difference
118080009A28C0 - 603D   6021    28
918080009A28C0 - A8BD   A8A0    29
518080009A28C0 - A47D   A460    29
D18080009A28C0 - 6CFD   6CE1    28
318080009A28C0 - A27D   A200    125
B18080009A28C0 - 6AFD   6A81    124
718080009A28C0 - 6665   6641    36
F18080009A28C0 - AEE5   AEC0    37
098080009A28C0 - 61BD   61B9    4
898080009A28C0 - A93D   A938    5
C98080009A28C0 - 6D7D   6D79    4
298080009A28C0 - A39D   A398    5
A98080009A28C0 - 6B1D   6B19    4
698080009A28C0 - 67DD   67D9    4
B1808800372880 - BAFD   BAF0    13
E18080009A28F8 - BDDD   BDD0    13  
118080009A28FE - B0BD   B0A0    13
8080D728D72880 - 224C   224C    0   
80803728372880 - 02CC   02CC    0   
80803928392880 - 00C4   00C4    0   
8080B928B92880 - 36C4   36C4    0   
8080D728D72846 - 70CC   70CC    0   
80803728372846 - 504C   504C    0   
718080009A28C0 - 6665   6641    36
718080009A28FC - 7765   7741    36
F18080009A28C0 - AEE5   AEC0    37
F18080009A28FC - BFE5   BFC0    37
098080009A28C0 - 61BD   61B9    4
098080009A28FC - 70BD   70B9    4
898080009A28C0 - A93D   A938    5
898080009A28FC - B83D   B838    5
498080009A28FC - B4FD   B4F8    5
C98080009A28C0 - 6D7D   6D79    4
C98080009A28FC - 7C7D   7D79    4
298080009A28C0 - A39D   A398    5
298080009A28FC - B29D   B298    5
A98080009A28C0 - 7B1D   6B19    4
A98080009A28FC - 7A1D   7A19    4
698080009A28C0 - 67DD   67D9    4   
698080009A28FC - 76DD   76D9    4

似乎 CRC-16 是正确的算法,但除此之外,de 值有一个小的变化。它似乎基于数据的第一个到十六进制数字,甚至可能是 CRC 的第一部分。

4

2 回答 2

0

您可能错误地识别了 CRC 字节之一的位置。CRC 的一个字节始终与您的 CRC-16 一致这一事实强烈表明您拥有正确的 CRC 算法。

于 2014-10-30T04:48:06.070 回答
0

你有CRC16的正确实施吗?存在几个不同版本的 CRC16。例如,维基百科列出了 CRC16-IBM、CITT、DNP、VÖV 和其他一些。也可能是一个很大的小问题,或者 CRC 正在采样。

于 2015-02-26T17:33:21.653 回答