我目前正在“破解”一台1996年制造的旧3d打印机。有一个软件在旧的Windows PC上运行。我需要修改一些前端无法访问的参数,所以我想修改配置文件。但是如果我修改了一些东西,它就不能再被阅读了。我注意到,文件末尾有一个校验和,我并不是一个真正的校验和专家。我假设,在加载文件时,再次计算该校验和,并与最后的校验和进行比较。
我很难找出使用了哪种校验和算法。
我已经发现:我认为这不仅仅是文件中位的添加。当我切换两个字符时,用加法生成的校验和不会改变。但软件不会接受该文件。
我猜它是某种CRC16,因为校验和看起来是这样的:
0x4f20
由于我用几个常用的CRC16参数计算了这个数字,并且找不到与“4f20”匹配的数字,我假设它一定是一个自定义的CRC16。。
以下是完整的示例文件:
PACKET noname
style 502
last_modified 1511855084 # Tue Nov 28 08:44:44 2017
STRUCTURE MACHINE_OVRL
PARAM distance_units
Value = "millimeters"
ENDPARAM
PARAM language
Value = "English"
ENDPARAM
ENDSTRUCTURE
ENDPACKET
checksum 0x4f20
我认为计算时没有考虑校验和本身或完整的行“校验和0x4f20”,因为这是不可能的(?)
感谢您的帮助。
编辑:当然,我还有一些带有校验和的文件,但这些文件比这个文件长得多。如果需要,我也可以提供。。