0 votes

Fichier plist (liste de propriétés) md5sum change lorsqu'il est compilé dans l'application iPhone

Je suis en train d'inclure un fichier plist dans mon application iPhone. Il est au format binaire (en utilisant plutil pour convertir du xml en binaire). Je veux exécuter un checksum MD5 (ou SHA-1) dessus au moment de l'exécution pour confirmer que son contenu est conforme à ce qui est attendu. Malheureusement, j'obtiens toujours un checksum différent de ce que j'ai inclus initialement. Après plus d'une heure à penser que je calculais mal la somme MD5, j'ai décidé de faire un test pour confirmer que les octets sont en effet identiques. Ils ne le sont pas. La taille du fichier reste la même, mais à partir de l'octet 30, et tout au long du fichier (à l'exception des 32 derniers octets), le contenu du fichier est complètement différent. Est-ce que quelqu'un sait si les fichiers de liste de propriétés sont signés ou autrement "compilés" dans un format binaire différent avant d'être inclus dans une application iPhone ? Si c'est le cas, pouvez-vous fournir plus de détails sur le processus?

Merci d'avance !

1voto

Brian Webster Points 7516

Par défaut, plutôt que de simplement effectuer une copie directe, Xcode utilise un petit script pour traiter et copier les fichiers plist lors de la construction d'une cible. Si vous ouvrez la fenêtre d'informations pour votre cible dans Xcode et sélectionnez l'onglet "Règles", vous verrez que pour le traitement des fichiers source text.plist, il utilise son propre outil appelé CopyPlistFile. Il effectue quelques vérifications de base pour s'assurer que le plist est valide, et peut éventuellement le convertir dans un format différent, bien qu'il semble qu'aucune conversion ne soit effectuée par défaut.

Je ne sais pas si c'est ce qui entraîne un changement dans votre fichier plist, mais si vous le souhaitez, vous pouvez obtenir des informations sur le fichier plist lui-même dans votre projet et changer son type de fichier de "text.plist" à "text" simplement. Cela devrait amener Xcode à le traiter comme un fichier texte brut plutôt qu'un fichier de liste de propriétés et simplement effectuer une copie directe au lieu de le faire passer par l'outil CopyPlistFile.

0voto

Chris Garrett Points 2468

Je vais empiler les "pourquoi" sur cette question. Je ne connais pas la réponse à votre question, mais je suis curieux de savoir pourquoi vous y consacrez du temps.

Puisque les applications sont signées numériquement, pourquoi vous souciez-vous de l'intégrité du PList? Si quelqu'un le modifie, alors l'application ne s'installera pas car la signature numérique ne sera plus valide.

L'autre raison pourrait être que vous craignez que l'application soit piratée. Parfaitement raisonnable, mais si quelqu'un peut pirater l'application, alors il peut également modifier le PList et changer le checksum dans votre code pour qu'il fonctionne toujours. Il n'y a vraiment aucun moyen de garantir l'intégrité de votre contenu sans l'obtenir réellement d'un tiers (par exemple, votre propre serveur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X