1 votos

Update.zip firma- sha diferente para el mismo archivo

Estoy tratando de destellar un archivo update.zip personalizado en un dispositivo previo a Kitkat.

En el zip hay 2 archivos con firmas SHA1 de otros archivos en la actualización. Pero tienen firmas diferentes para los mismos archivos.

Ejemplo:

META-INF/MANIFEST.MF:

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

META-INF/CERT.SF:

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

Puedo obtener el primero usando:

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

¿Cómo se calcula el segundo? El segundo archivo tiene un hash del primer archivo, así que quizás los otros hashes están salados con el primer archivo o algo así.

Según lo que encontré en la documentación de Java, los SHAs deberían ser idénticos, excepto que todos los SHAs son la versión 1 en el archivo original update.zip.

Parece que el certificado utilizado para firmar la actualización fue el de prueba de android por lo que debería funcionar, pero en su lugar aborta.

0 votos

Esto responde a mi pregunta si es cierto, necesito probarlo: stackoverflow.com/a/9384919/1333247

0 votos

Parece que tienes más conocimiento que yo, por favor revisa mi respuesta y siéntete libre de corregirla (o publicar tu propia respuesta) android.stackexchange.com/q/222262

1 votos

@alecxs Gracias, pero de verdad solo he jugado con un dispositivo Android 4.2 hasta ahora. Esa pregunta es sobre Android 9, creo que han cambiado demasiadas cosas entre ellos para que yo pueda ayudar.

2voto

Jakub Fojtik Puntos 26

Respondido aquí como escribí en el comentario. El segundo hash es un SHA1 de las 3 líneas en el archivo de manifiesto.

Puedo obtener el segundo hash ejecutando:

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

El comando echo añade el \n final así que debe ser eliminado del comando para no ser duplicado.

Editar para posterioridad:

Entonces, el update.zip es firmado por SignApk utilizando el argumento -w, lo que hace que genere un comentario ZIP, sin el cual la instalación falla. El comentario consiste en la cadena signed by SignApk seguida de un bloque de firma. Código en fuente Android SignApk

Esta fue la última pieza del rompecabezas que me permitió crear un update.zip personalizado para mi tableta Prestigio.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X