1 votes

Signature de Update.zip - différents sha pour le même fichier

J'essaie de flasher un update.zip personnalisé sur un appareil pré-Kitkat.

Dans le zip il y a 2 fichiers avec les signatures SHA1 des autres fichiers de la mise à jour. Mais ils ont des signatures différentes pour les mêmes fichiers.

Exemple :

META-INF/MANIFEST.MF :

Name: system/lib/libcustom_jni.so
SHA1-Digest: +PhV5XphkQTNTyM2TSRTeiaDlCA=

MÉTA-INF/CERT.SF :

Name: system/lib/libcustom_jni.so
SHA1-Digest: 7ooFhqk1oYWF5pmVuSAhF2pFVNw=

Je peux obtenir le premier en utilisant :

sha1sum system/lib/libcustom_jni.so | cut -d\  -f1 | xxd -p -r | base64
+PhV5XphkQTNTyM2TSRTeiaDlCA=

Comment est calculée la seconde ? Le deuxième fichier a un hachage du premier fichier, alors peut-être que les autres hachages sont salés avec le premier fichier ou quelque chose comme ça ?

D'après ce que j'ai trouvé dans doc java les SHAs devraient être identiques, sauf que tous les SHAs sont la version 1 dans le update.zip original.

Il semble que le certificat utilisé pour signer la mise à jour était le certificat de test Android, donc il devrait fonctionner, mais il s'arrête au lieu de cela.

2voto

NegativeFriction Points 293

Réponse : aquí comme je l'ai écrit dans le commentaire. Le second hachage est un SHA1 des 3 lignes du fichier manifest.

Je peux obtenir le second hachage en exécutant :

echo 'Name: system/lib/libcustom_jni.so\r\nSHA1-Digest: +PhV5XphkQTNTyM2TSRTeiaDlCA=\r\n\r' | sha1sum | cut -d\  -f1 | xxd -p -r | base64 
7ooFhqk1oYWF5pmVuSAhF2pFVNw=

La commande echo ajoute le dernier \n il doit donc être supprimé de la commande pour ne pas être dupliqué.

Modifier pour la postériorité :

Le fichier update.zip est ensuite signé par SignApk à l'aide du fichier -w qui lui permet de générer un commentaire ZIP, sans lequel l'installation échoue. Le commentaire est composé de signed by SignApk suivie d'un bloc de signature. Code à Android SignApk source

C'était la dernière pièce du puzzle qui m'a permis de créer un update.zip personnalisé pour ma tablette Prestigio.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X