2010-05-24 121 views
1

我有一个传感设备,可以传输一个6字节的消息以及一个1字节的计数器,并且假设是一个校验和。找到生成校验和的算法

的数据看起来是这样的:

------DATA----------- -Counter- --Checksum?-- 

55 FF 00 00 EC FF ---- 60---------- 1F 

过去四年在计数器位始终为0,即很可能不使用这些位。假设最后一个字节是校验和,因为它具有相当特殊的性质。随着数据变化,它会随机更改。

现在我需要的是找到基于--DATA--计算这个校验和的算法。 我试过的是所有可能的CRC-8多项式,对于我试图反映数据的每个多项式,切换它,用非零等来初始化它。我得出结论,我没有处理正常的crc -算法。我也尝试过一些flether和adler方法,但没有成功,xor的东西来回,但我仍然不知道如何生成校验和。

我最关心的是,如何使用计数器?相同的数据但具有不同的countervalue会生成不同的校验和。 我试图在我的计算中包含计数器,但没有任何运气。

这里有一些其他datasamples:

55 FF 00 00 F0 FF A0 38 
66 0B EA FF BF FF C0 CA 
5E 18 EA FF B7 FF 60 BD 
F6 30 16 00 FC FE 10 81 

,可能是值得一提的一件事是,在数据的最后一个字节只对值FF或FE

请,如果您有任何提示或技巧,我可能会尝试发布在这里,我真的很绝望。

感谢

+0

我认为你最好的选择是研究硬件文档......也许它有一些序列号来帮助你识别它。 – fortran 2010-05-24 12:13:04

+0

嗨, 我没有任何看看的文档。我有比上面提供的更多的数据,但多数民众赞成在它。 – knivmannen 2010-05-24 13:05:31

+0

“一个6字节的消息以及一个1字节的计数器,据说是一个校验和” - 这是事实吗?只是问,因为你似乎对设备知之甚少。 – 2010-05-24 13:58:22

回答

0

一些随机的想法:

  1. 位排序:您目前代表数据字段,但是这不是CRC algorthm如何看待它。 CRC表示为位数组,而不是八位位组数组的多项式。因此,设备可能会使用与您所使用的不同的位排序方案执行CRC。
  2. 根据设备的不同,我认为很可能计数器包含在CRC计算中。
  3. 如果这是一个嵌入式设备,它可能会使用其他一些代码,如BCH。

是否有任何其他信息可以提供有关该设备?

这可能会给出一些指示,说明已经使用了多么强的编码。举例来说,某些CRC-12(0x8F8)提供的汉明距离为5,直到53位的数据字长度(在您的数据中,数据字可能是52位,假设CRC大小为12位)。

编辑: 请参阅How could I guess a checksum algorithm?中的答案以获得一些其他建议。

+0

嗨, 1.是的,我想到了这个,(我认为)。我读过从右开始的字节,而我也反映了每个字节。我没有交换字节的位置,但我几乎没有信心这会是这种情况。 2.计数器是否因为消息中的变量较少而混淆? 3.我不确定这一点。我会检查BCH。 不幸的是我没有更多的信息给你。它是汽车行业用来测量物体加速度的传感器。 – knivmannen 2010-05-24 13:33:33

+0

3.经过一些考虑后,我认为BCH是不太可能的,因为数据比特数量较高,而检查比特数量较少。你知道如何解释数据了吗?这可能会给出关于数据框架整体结构的一些想法。 – Schedler 2010-05-24 13:53:04

+0

我有迹象表明不同的字节意味着什么,但没有什么是肯定的。我没有给予太多的关注,因为我认为它们实际上代表什么并不重要。 – knivmannen 2010-05-24 14:07:32