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