我正在尝试连接到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