2014-08-30 66 views
1

我試圖扭轉嵌入式設備的二進制協議。我是能夠捕捉4個樣品的數據的包,這裏它們被以十六進制編碼形式:根據數據扭轉校驗和

5E:A1:00:10:10:00:00:02:01:05:F0:F6:4B:00:01:03 
5E:A1:00:10:10:00:00:06:01:93:79:DA:F9:00:01:07 
5E:A1:00:10:10:00:00:03:01:C9:B1:F0:81:00:01:04 
5E:A1:00:10:10:00:00:04:01:A3:BE:2A:3A:00:01:05 

基於其他包,我可以斷言以下:

  1. 前6個字節(5E:A1: 00:10:10:00) - 郵件標題,它在所有其他郵件中都是靜態的。
  2. 接下來的2個字節(00:02或00:06或00:03或00:04) - 消息數字ID,int16。它與消息到消息不同。
  3. 接下來的4個字節(05:F0:F6:4B或93:79:DA:F9或C9:B1:F0:81或A3:BE:2A:3A)是消息的校驗和。它取決於數據和消息號碼。我嘗試通過手動形成包:當我更新消息的數據區域或消息號碼中的字節時,而不是校驗和 - 消息被遠程服務器拒絕。
  4. 其他一切只是一個可變長度的數據。

我的問題是:如何理解用於校驗和生成的算法?有沒有可以用於這種目的的軟件?例如,我在數據中輸入掩碼並嘗試猜測算法。

回答

1

如果是CRC,那麼reveng可能能夠推出CRC的參數,給出足夠的例子。

+0

嗨馬克,非常感謝您的建議。不幸的是,我檢查了30多個樣品,結果沒有。我甚至試圖把校驗和放在十六進制編碼的字符串的末尾,但仍然沒有檢測到模型。所以我認爲這不是默認的CRC,而是一些未知的自定義實現。 – 2014-09-02 05:51:11

+1

你嘗試過'-s'選項嗎?您可能還需要嘗試不同的組合,它們構成了計算CRC的消息。 – 2014-09-02 06:01:10