【发布时间】:2014-10-24 09:19:55
【问题描述】:
我正在尝试反转嵌入式设备的二进制协议。我能够捕获 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
基于其他包,我可以断言以下内容:
- 前 6 个字节 (5E:A1:00:10:10:00) - 消息头,它在所有其他消息中都是静态的。
- 接下来的 2 个字节(00:02 或 00:06 或 00:03 或 00:04)- 消息数字 id,int16。消息与消息不同。
- 接下来的 4 个字节(05:F0:F6:4B 或 93:79:DA:F9 或 C9:B1:F0:81 或 A3:BE:2A:3A)是消息的校验和。这取决于数据和消息编号。我通过手动构建包进行了尝试:当我更新消息的数据区域或消息编号中的字节时,而不是校验和 - 消息被远程服务器拒绝。
- 其他一切都只是可变长度的数据。
我的问题是:我如何理解用于生成校验和的算法?有没有可以用于这种目的的软件?例如,我在数据中输入掩码,它会尝试猜测算法。
【问题讨论】:
标签: protocols reverse-engineering decode checksum crc