我正在嘗試連接到Safecom TA-810(徽章/註冊系統),以自動計算員工每天工作多長時間的過程。目前,這是通過:需要幫助反向工程CRC16
- 數據拉入正式申請
- 打印的列表中的所有「註冊」
- 手動輸入從印刷列表中的值到我們的人力資源應用程序
這是一項可能需要幾個小時才能看到自動化的工作。到目前爲止,官方技術支持一直令人失望,拒絕分享任何細節。
使用wireshark我一直在捕獲UDP傳輸,並且幾乎成功地理解了協議是如何構建的。我只是與我認爲是CRC領域有問題。我不知道它是如何計算出來的(CRC類型和參數)以及使用哪些領域?
這是一個消息頭的樣子:
D0 07 71 BC BE 3B 00 00
D0 07 - Message type
71 BC - This i believe is the CRC
BE 3B - Some kind of session identifier. Stays the same for every message after the initial message (initial message has '00 00' as value)
00 00 - Message number. '01 00', '02 00', '03 00'
一些例子:
Header only examples
E8 03 17 FC 00 00 00 00 -> initial request (#0, no session nr)
D0 07 71 BC BE 3B 00 00 -> Initial response (#0, device sends a session nr)
4C 04 EF BF BE 3B 06 00 -> Message #6, still using the same session # as the initial response
Larger example, which has data
0B 00 07 E1 BE 3B 01 00 7E 45 78 74 65 6E 64 46 6D 74
我也試圖通過從原始應用程序中讀取反彙編代碼來解決這個問題。下面的截圖發生在socket.sendto之前,似乎是相關的。
任何幫助將非常感激。
編輯:使用ollydbg調試應用程序取得了一些成功。在下面的屏幕截圖中,CRC出現在選定行的寄存器(反轉)EDX中。
一直在調試流程方面取得了一些進展。似乎比CRC16容易得多。他們只是添加所有字節。 – MythJuha 2014-09-30 18:20:24