【发布时间】:2014-01-20 01:28:24
【问题描述】:
编辑:事实证明这是一种自定义校验和算法,而不是 CRC-32。对于好奇的 C 代码 here is a snippet 在下面的示例中计算 21 FF 1D E4 校验和。
我正在处理一些似乎受某种 CRC-32 保护的十六进制文件,但使用标准 CRC-32 和其他已知参数重新计算未能产生匹配。
我所知道的是,数据跨越 116 个字节和 4 个额外字节用于校验和。我可以生成大量消息-密钥对的示例,但我找不到它们之间的任何关系。
我不想用十六进制转储来填充这篇文章,所以我在这里粘贴了几个:http://mathb.in/12246。
11 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 43 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 FF 1D E4这可能是带有一些奇怪设置的 CRC-32,还是完全不同?有什么方法可以确定校验和是如何产生的?
更新:我能够在消息中进行 1 位的微小更改:
0000000000000000000000000000000000000000000000000000000000, 32C9A1E6 000000000000000000000000000000000000000000000000000000001, BD25904E 0000000000000000000000000000000000000000000000000000000002, B437A286 000000000000000000000000000000000000000000000000000000003, 8AB790EE 000000000000000000000000000000000000000000000000000000004, 2DDC3AEB 000000000000000000000000000000000000000000000000000000005, 208B3859 0000000000000000000000000000000000000000000000000000000006, 87E0925C 000000000000000000000000000000000000000000000000000000007, E59391AE 0000000000000000000000000000000000000000000000000000000008, B07292FC 000000000000000000000000000000000000000000000000000000009, 830EA655在不适当更新校验和的情况下更改任何内容会创建一条被拒绝的消息。
如果由于叠加原理(异或校验)而不能是 CRC-32,是否有任何方法可以执行分析以查找消息和校验和对中的任何属性或模式?
【问题讨论】:
标签: hex reverse-engineering checksum crc32