0

我尝试更改有关 dmg 文件的一些信息,效果很好,但是当我尝试打开 dmg 时出现错误消息

checksum invalid

所以我得到了我的 dmg 文件的标题,我得到了我需要的所有信息。我有一个 DataForkChecksum 和一个 MasterChecksum 但我不知道如何计算它们。

有谁知道该怎么做?

4

2 回答 2

2

主校验和是校验和的校验和。它被计算为在 DMG 中存在的 BLKX 块的所有校验和的级联二进制值上计算的 CRC-32 校验和(多项式=0xedb88320)。计算起来很痛苦。

libdmg 包含执行此操作的 GPL 代码。特别是看看http://shanemcc.co.uk/libdmg/libdmg-hfsplus/dmg/dmglib.c中的 calculateMasterChecksum() 函数

于 2012-09-10T13:42:22.353 回答
0

如果您对校验和不太了解,我建议您快速查看Wikipedia条目。本质上,它们用于检查文件的完整性,以确保它没有被更改或受到任何干扰。我相信这在开源社区中尤其重要,因为上传到共享网站的代码可能会受到原始提供者以外的其他人的干扰。

(还可以快速查看维基百科上的 MD5,读一读,您将很快体会到问题的难度和建议的解决方案。)

通过包含校验和,提供者并不能保证代码的质量(他们可能会单独做),但他们让您能够确保您下载的内容正是他们提供的内容。更改单个字节将更改校验和。

在您的情况下,通过修改 DMG,您正在更改校验和。在不知道具体细节的情况下,很难建议您如何绕过它。如果您的设置以某种方式与原始 DMG 提供商通信以比较校验和,那么修复将非常困难。您也无法知道它们的校验和是什么。

如果将其与本地存储的文件进行比较,那么您有机会。最简单的方法是获取用于创建校验和的免费工具之一并将它们都替换掉。

然而,这一切都带来了一个问题。为什么要修改外部提供的 DMG?如果您希望您的计算机在单击它时执行其他操作,我相信有更简单的方法

于 2012-07-05T14:20:36.370 回答