根据数据反转校验和

时间:2014-08-30 15:23:32

标签: protocols reverse-engineering decode checksum crc

我试图颠倒嵌入式设备的二进制协议。我能够捕获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. 其他一切只是一个可变长度的数据。
  5. 我的问题是:我如何理解用于校验和生成的算法?有没有可用于此类目的的软件?例如,我在数据中输入了掩码,它试图猜测算法。

1 个答案:

答案 0 :(得分:1)

如果它是CRC,那么reveng可以推导出CRC的参数,给出足够的例子。