plist (Property List) cambia md5sum file quando compilato in applicazione per iPhone

StackOverflow https://stackoverflow.com/questions/1142995

  •  16-09-2019
  •  | 
  •  

Domanda

I includo un file plist nella mia applicazione per iPhone. E 'in formato binario (usando plutil convertire da XML a binario). Voglio correre un checksum MD5 (o SHA-1) su di esso in fase di esecuzione per confermare il suo contenuto sono cosa ci si aspetta. Purtroppo, ho sempre arrivare una somma di controllo che è diverso da quello che originariamente incluso. Dopo più di un'ora di assumere stavo calcolando la somma MD5 sbagliato, ho deciso di eseguire un test e verificare che i byte sono infatti, lo stesso. Essi non sono. La dimensione del file rimane la stessa, ma dal byte 30, e in tutto il file (ad eccezione per gli ultimi 32 byte), i contenuti del file sono completamente differenti. Qualcuno sa se i file di elenco delle proprietà sono firmati o in altro modo "compilato" ad un formato binario diverso prima l'inclusione in un applicazione per iPhone? Se è così, si può fornire altri dettagli sul processo?

Grazie in anticipo!

È stato utile?

Soluzione

Per impostazione predefinita, piuttosto che solo facendo una copia dritto, Xcode utilizza un piccolo script per elaborare e copiare i file plist quando si costruisce un bersaglio. Se si apre la finestra di informazioni per il vostro obiettivo in Xcode e selezionare la scheda "Regole", vedrai che per l'elaborazione di file di origine text.plist, utilizza un proprio strumento chiamato CopyPlistFile. Lo fa qualche controllo di base per assicurarsi che il plist è valida, e può opzionalmente convertirlo in un formato diverso, anche se sembra che la conversione non viene eseguita per impostazione predefinita.

Non so se questo è ciò che sta causando un cambiamento nel file plist, ma se si vuole si può ottenere informazioni sul file plist in sé nel progetto e cambiare il tipo di file da "text.plist" a solo " testo". Questo dovrebbe causare Xcode di trattarlo come un file di testo piuttosto che un file di elenco di proprietà e solo fare una copia dritto invece di correre attraverso lo strumento CopyPlistFile.

Altri suggerimenti

farò un salto il motivo per cui impilare su questa questione. Non conosco la risposta alla tua domanda, ma io sono curioso di sapere perchè stai spendendo tempo su di esso.

Dal momento che le applicazioni sono firmati digitalmente, perché siete preoccupati per l'integrità del PList? Se qualcuno ha modificato, allora l'applicazione non sarebbe installare perché la firma digitale non sarebbe più valida.

L'altro motivo potrebbe essere che si sono preoccupati per l'applicazione essere violato. Perfettamente ragionevole, ma se qualcuno può incidere l'applicazione, poi si può anche modificare il file plist, e cambiare il checksum nel codice in modo che sarà ancora eseguito. Non c'è davvero nessun modo per garantire l'integrità dei contenuti senza realmente ottenere da parte di terzi (ad esempio il proprio server)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top