2016-10-03 76 views
0

所以我有問題找到一系列命令的CRC值,我已經有一些命令的CRC值,但我需要弄清楚它們是如何計算的。仔細檢查數據流並嘗試計算CRC後,我們無法獲得已知的CRC值和計算出的CRC值以匹配。我以前從來沒有計算過CRC,但我已經閱讀過多篇論文,似乎很容易,除非它沒有工作。手冊我說多項式生成器是(x^8 + x^7 + X^2 + X^0),它給了我一個獨特的非零值B1(十六進制)。完整的命令是A9E40401(十六進制),CRC爲1E(十六進制)。我目前使用的過程包括將數據流從十六進制轉換爲二進制,使用LSB優先規則,在命令中插入FF(十六進制)以檢測多餘的零,將00(十六進制)添加到末尾作爲佔位符,並且執行mod2劃分,並且將其反轉並將其應用於數據流。要麼我做錯了什麼,要麼我錯過了一步。我假設我提供的多項式是正確的。任何幫助將不勝感激。我如何反向工程一個已知的循環冗餘校驗值?

回答

0

我覺得自己像個白癡。 當我計算我的CRC時,除了最後一步必須執行LSB優先規則並且反轉餘數之外,我還是正確地執行了每一步。 我只執行LSB第一條規則(認爲這是反轉意味着什麼)。 因此,對於00011101的剩餘部分,我得到了錯誤的CRC值(10111000)。當我應該得到01000111.

0

您可以嘗試RevEng,這正是爲了從一組示例中確定CRC參數。

然後你可以使用crcany來生成代碼。

+0

真棒。感謝您的寶貴幫助。我希望這有助於我解決我的問題。我會在他們出現時發佈我的結果。 – Jon