2012-07-05 3 views
0

J'essaie de changer des informations sur un fichier DMG, Il fonctionne bien, mais quand je l'ai essayé d'ouvrir le dmg j'ai le message d'erreurComment calculer la MasterChecksum et DataForkChecksum sur un fichier DMG

checksum invalid 

Alors Je reçois l'en-tête de mon fichier dmg, et j'obtiens toutes les informations dont j'ai besoin. J'ai un DataForkChecksum et un MasterChecksum mais je ne sais pas comment les calculer.

Est-ce que quelqu'un sait comment faire cela?

Répondre

2

Les sommes de contrôle principales sont une somme de contrôle des sommes de contrôle. Il est calculé comme la somme de contrôle CRC-32 (polynomial = 0xedb88320) calculée sur les valeurs binaires concaténées de toutes les sommes de contrôle des blocs BLKX présents dans le DMG. C'est assez pénible à calculer.

libdmg contient le code GPL qui fait cela. En particulier jeter un oeil à la fonction calculateMasterChecksum() dans http://shanemcc.co.uk/libdmg/libdmg-hfsplus/dmg/dmglib.c

0

Si vous ne connaissez pas beaucoup les Checksums, nous vous recommandons de jeter un coup d'œil à l'entrée Wikipedia. Essentiellement, ils sont utilisés pour vérifier l'intégrité d'un fichier pour s'assurer qu'il n'a pas été modifié ou interféré de toute façon. Je crois que cela est particulièrement important dans la communauté open source, car le code téléchargé sur les sites de partage aurait pu être interféré par quelqu'un d'autre que son fournisseur d'origine.

(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.)

En incluant une somme de contrôle du fournisseur ne garantit la qualité du code (ils peuvent bien faire séparément), mais ils sont en vous donnant la possibilité de faire en sorte que ce que vous téléchargez est exactement ce qu'ils ont fournis. Un changement à un seul octet changera le Checksum.

Dans votre cas, en modifiant le DMG, vous modifiez le Checksum. Sans connaître les détails, il est difficile de vous conseiller sur la façon de contourner le problème. Si votre configuration communique d'une manière ou d'une autre avec le fournisseur DMG d'origine pour comparer les sommes de contrôle, il sera très difficile de résoudre le problème. Vous n'avez également aucun moyen de savoir quelle est leur somme de contrôle. S'il compare avec un fichier stocké localement, alors vous avez une chance. Le plus simple sera d'obtenir un des outils gratuits pour créer des checksums et les remplacer tous les deux.

Cependant tout cela soulève une question. Pourquoi modifiez-vous un DMG externe? Si vous voulez que votre ordinateur préforme des actions supplémentaires lorsque vous cliquez dessus, je crois qu'il y a beaucoup de façons plus simples

+0

C'est un peu compliqué. Je sais ce qui est une somme de contrôle, mais je ne sais pas comment calculer les deux dans mon dmg, Quand je calcule la somme de contrôle de mon fichier all dmg, c'est différent de la somme de contrôle originale (sans aucun changement de mon dmg). J'ai un ID dans mon dmg, et je veux le changer sans faire un autre dmg. – kavaliero

Questions connexes