代码之家  ›  专栏  ›  技术社区  ›  Alex

配置文件校验和猜测(CRC)

  •  0
  • Alex  · 技术社区  · 7 年前

    我目前正在“破解”一台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”,因为这是不可能的(?)

    感谢您的帮助。

    编辑:当然,我还有一些带有校验和的文件,但这些文件比这个文件长得多。如果需要,我也可以提供。。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mark Adler    7 年前

    RevEng 为此目的而编写。给定输入和相关CRC的几个示例,RevEng将推导CRC参数。如果是CRC。