2012-07-05 1 views
0

я пытаюсь изменить некоторую информацию о DMG файлы, Это работает хорошо, но когда я попытался открыть дамага у меня есть сообщение об ошибкеКак рассчитать MasterChecksum и DataForkChecksum на DMG файл

checksum invalid 

So Я получаю заголовок моего файла dmg, и я получаю всю необходимую мне информацию. У меня есть DataForkChecksum и MasterChecksum, но я не знаю, как их рассчитать.

Кто-нибудь знает, как это сделать?

ответ

2

Основные контрольные суммы - контрольная сумма контрольных сумм. Он вычисляется как контрольная сумма CRC-32 (полином = 0xedb88320), вычисленная по объединенным двоичным значениям всех контрольных сумм блоков BLKX, присутствующих в DMG. Это очень больно, чтобы вычислить.

libdmg содержит код GPL, который делает это. В частности, посмотрите на функцию calculateMasterChecksum() в http://shanemcc.co.uk/libdmg/libdmg-hfsplus/dmg/dmglib.c

0

Если вы не знаете много о контрольных сумм, я рекомендую быстро взглянуть на запись Wikipedia. По сути, они используются для проверки целостности файла, чтобы убедиться, что в любом случае он не был изменен и не мешал. Я считаю, что это особенно важно в сообществе с открытым исходным кодом, поскольку коду, загруженному на сайты обмена, могло быть помешано кем-то, кроме его оригинального провайдера.

(Also take a quick look at MD5 on Wikipedia, one read of this and you will quickly appreciate the difficulty of the problem and proposed solutions.)

Включив Checksum провайдер не гарантирующий качество кода (они вполне могут сделать по отдельности), но они дают вам возможность убедиться, что вы скачиваете именно то, что они предоставляют. Изменение одного байта изменит контрольную сумму.

В вашем случае, изменяя DMG, вы меняете контрольную сумму. Не зная специфики, вам сложно советовать, как обойти это. Если ваша установка связывается с исходным поставщиком DMG каким-то образом, чтобы сравнить контрольные суммы, то это будет очень сложно исправить. У вас также нет способа узнать, что такое их контрольная сумма.

Если это сравнение с локально сохраненным файлом, то у вас есть шанс. Самый простой способ - получить один из бесплатных инструментов для создания контрольных сумм и заменить их обоих.

Однако все это вызывает вопрос. Почему вы изменяете внешний DMG? Если вы хотите, чтобы ваш компьютер выполнял дополнительные действия, когда вы нажимаете на него, я считаю, что есть гораздо более простые способы.

+0

Это немного сложно. Я знаю, что такое контрольная сумма, но я не знаю, как вычислить два в моем dmg. Когда я вычисляю контрольную сумму всего моего файла dmg, он отличается от исходной контрольной суммы (без изменения моего dmg). У меня есть ID в моем dmg, и я хочу изменить его, не создавая другого dmg. – kavaliero