校验和算法逆向工程

4
我一直在分析一些SPI EEPROM内存,并试图找出使用的校验和算法;
例如,我已经获得了数据:14567D9h和校验和187h。假设它是正常的16位校验和,我得到的是86h - 没有匹配,但是在添加101h之后,它神奇地变成了391h。
另一个例子: 8ADh和校验和B5h,对于这个例子来说,通常是16位校验和结果是完全相同的数字:B5h(完美匹配)。
我检查了28个样本,我能够截取其中一些值必须添加101h到校验和中,而对于一些值只需要进行求和即可。
奇偶校验不适用 - 如果您愿意,我可以分享更多数据 - 所有数据都收集在一个excel文件中,然后计算。经过几天和我的朋友的头脑风暴,我们仍然没有想出任何东西:/
也许算法中还有一些额外的部分,我还没有找到?
CRC和其他大量算法都已检查 - 只有16位校验和提供了任何有希望的结果。
提前感谢您的帮助!
我的电子表格副本:https://drive.google.com/file/d/0B2FO0-Y1n-ySMUZ2VTVkME9tdm8/view?usp=sharing

你能再发几个例子吗? - Jerry Federspiel
可能还包括长度(从0开始计数)作为4字节块的数量。 - Luka Rahne
你在使用什么大小的整数来进行中间求和? - Jerry Federspiel
在比较文件后,我已经找到了数据存储的地址,并且找到了读取它的方法。但是要更改它,我必须编写正确的校验和。你读过Excel文件吗?分析有什么问题吗? - Wasilij Grigoriewicz Zaitsev
很可能http://reverseengineering.stackexchange.com/是更好的地方来完成这样的任务。 - Salvador Dali
显示剩余7条评论
1个回答

1
据我所知,CRC用于文件以帮助识别文件的损坏。 CRC的大小是固定的,而文件的大小则不是,而且文件的大小要大得多。
换句话说,CRC不可逆,因为它是一对多的关系。

我所说的CRC是一种校验和。 - Mr. M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接