Cómo comprometer el patrón de desbloqueo de Android

En la siguiente entrada veremos cómo obtener o eliminar un patrón de bloqueo de Android, siempre como prueba de concepto, así que nada de terminales robados ni de tomar prestado un momento el teléfono de la novia, que os conozco... XD

Como todos sabemos, en Android se utiliza ampliamente el patrón de grid en 3x3, en el que deberemos marcar un mínimo de cuatro puntos y en el que cada punto sólo puede ser utilizado una vez. Cada uno de estos puntos es indexado internamente de 1 a 9. Por ejemplo, en la imagen de la derecha el patrón de desbloqueo sería "2547896".

Este patrón se almacena como un hash SHA-1 en una cadena de bytes dentro del fichero /data/system/gesture.key. El problema es que Android no añade salt a los datos originales y, si tenemos en cuenta que tenemos un número finito de posibles patrones, crear y utilizar un diccionario de hashes válidos es algo muy trivial...

Obteniendo el patrón de desbloqueo

El fichero gesture.key se encuentra en un directorio que no es accesible normalmente, por lo que tendremos que acceder como root, es decir, el teléfono ha de encontrarse previamente rooteado. Además, para poder utilizar el SDK (adb) deberemos conectar el terminal a nuestro equipo y para ello tiene que estar activado el USB debugging. Si se dan estas dos circustancias los pasos son muy sencillos. A continuación veremos cómo hacerlo en un Windows 7 con un Samsung Galaxy S...

Primero conectamos el teléfono y comprobamos que nuestro dispositivo se reconoce correctamente:

D:\android-adt-bundle-windows\sdk\platform-tools>adb.exe devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
303121D3C7E200EC        device


Ahora volcamos el contenido del fichero gesture.key a un fichero de texto en nuestro equipo:

D:\android-adt-bundle-windows\sdk\platform-tools>adb shell "su -c 'cat /data/system/gesture.key'" > prueba.txt
Después lo abrimos con nuestro editor hexadecimal favorito:

D:\android-adt-bundle-windows\sdk\platform-tools>"d:\Program Files (x86)\HxD\HxD.exe" prueba.txt

Copiamos el patrón del dispositvo:



Finalmente, buscamos el hash dentro del diccionario:



Como podéis comprobar, a la izquierda podemos ver el patrón de desblopqueo utilizado. Así de fácil.

Y ahora pensaréis "ya, y si el teléfono no está rooteado o no tiene el debugging activado?". Pues existe otra opción que sería obtener el contenido de la memoria flash mediante JTAG y buscar cada uno de los hashes del diccionario pre-compilado. Podéis descargar scripts en Python que automatizan esta tarea desde http://www.ccl-forensics.com/Software/other-software-a-scripts.html.

Desactivando el patrón de desbloqueo
Por último, existe otra opción que es evadir el patrón de desbloqueo. Para ello se puede:

1. desactivar:

adb shell
cd /data/data/com.android.providers.settings/databases
sqlite3 settings.db
update system set value=0 where name='lock_pattern_autolock';
update system set value=0 where name='lockscreen.lockedoutpermanently';
.quit


y/o eliminar:

adb shell rm /data/system/gesture.key

Fuentes:
Locked Out of Your Phone? Here's How You Bypass the Android Pattern Lock Screen
Unlocking Android Pattern Locks
Cracking android lockscreens

Comentarios

  1. El GRID segun esto necesita mínimo 4 inputs. Entonces sería:

    Mov = 4, combinaciones = 1624
    Mov = 5, combinaciones = 7152
    Mov = 6, combinaciones = 26016
    Mov = 7, combinaciones = 72912
    Mov = 8, combinaciones = 140704
    Mov = 9, combinaciones = 140704

    Posibilidades: 1624 + 7152 + 26016 + 72912 + 140704 + 140704 = 389112 totales...

    Claro que todo esto no importa si puedes ver el hash dentro de un diccionario. Es lo bueno de que Android esté abierto de todos lados,

    Me gustó mucho el post. De gran utilidad cuando olvide el patrón de desbloqueo de los teléfonos de mis amigos, =)

    ResponderEliminar
  2. Estupendo post! Me ha llamado mucho la atencion...

    ResponderEliminar
  3. gracias a todos por vuestros comentarios!

    ResponderEliminar
  4. Saludos, por favor , quisiera sabes si es posible desbloquear mi celular que lo bloqueé estando borracho y no recuerdo la contrasenha, hay el modo de hacer "hard reset", pero no quisiera perder mis datos, e intenté desbloquearla 250 veces y no me pide contrasenha y cuenta de google, (que si me lo sé), gracias...

    ResponderEliminar
  5. Tanta bronca... mejor un reseteo de fabrica y listo, en 5 minutos ya tengo libre el fon, o bien un flash desde memoria extraible y ya, en otros 5 minutos ya tengo el fon irreconocible para el dueño.

    ResponderEliminar
    Respuestas
    1. lo malo es que por ejemplo en mi caso la tecla de volumen arriba no funciona (no puedo entrar a las opciones de Recovery)

      Eliminar
  6. Hola amigo, una consulta, tengo una tablet inco que se bloqueo, ya borre el gesture.key el password.key y por ahi lei que la cuanta tambien se almacena en accounts.db y lo renombre, y me sigue preguntando la cuenta de google, no sabes cual seria el archivo a editar o eliminar? te agradeceria me ayudaras porque no encuentro la rom para recargarla, saludos!!!

    ResponderEliminar
  7. Prueba a borrarlo definitivamente con adb o Root Explorer, debería funcionar.

    Si no hecha un vistazo a http://cellphone88.com/several-ways-to-change-gmail-account-on-android-without-factory-reset

    Saludos,

    ResponderEliminar
  8. Hola nuevamente, ya lo hice nada mas es cuestión de renombrar el archivo settings.db o eliminarlo y ya con eso no te pide que metas tu cuenta google, espero les sirva a los que no podian entrar con estos metodos es este la ubicacion del archivo /data/data/com.android.providers.settings/databases

    ResponderEliminar
  9. hola! que otra forma hay para obtener el patrón que no sea resetearlo... el teléfono no le puedo configurar la opcion de depuración de usb ya que esta bloqueado.

    ResponderEliminar
  10. hola me pueden indicar donde se encuentra el gesture key y el password key, supongo que dentro de Android pero no figura la carpeta. gracias. Lau

    ResponderEliminar
  11. Buen día, pero q podemos hacer con las rablet q no tienen procesador a 13 que son las nucas q reconoce el adb, estas otras tables con procesadores a20,a23 ,rock chip etc como podemos hacer para quitarles el patron

    ResponderEliminar
  12. que hago si no me lo detecta con adb devices???

    ResponderEliminar
  13. Mi tablet Titan pc7010me esta bloqueada por patron de seguridad, la red inalambrica deshabilitada.. al querer hacer hard reset, presionando las teclas power y "M", aparece el android tirado, abierto y con signo de admiracion rojo.. presiono alguba tecla y no pasa nada.. se queda asi por 5 minutos y se reinicia de manera normal.. quisiera saber que puedo hacer para entrar al menu de restablecimiento de fabrica.. de antemano agradezco su ayuda!!!

    ResponderEliminar
  14. tengo una duda!! si no tenia activado la depuracion USB antes que se me bloqueara el cel con solo instalar los driver del cel en mi pc me reconoce el disposito al ejecutar el comadno adn devices??

    ResponderEliminar
    Respuestas
    1. que yo sepa la única manera de activar la depuración USB es en el menú de ajustes y “Opciones de desarrollo”... a ver si alguien sabe otra manera... :-/

      Eliminar
  15. Muy bueno me sirvio me llevo tiempo pero si hace lo que dice :D

    ResponderEliminar
  16. Amigo como hago para desbloquear un ZTE V795

    ResponderEliminar
  17. hola a todos lo que pasa es que tengo un celular samsung s3 con la pantalla rota y no se mira nada y quisiera quitarle el patron de seguridad pero no me deja me sale un error device unauthorized y no se que sea y quisiera saber si algui paso por lo mismo y como lo soluciono gracias de antemano

    ResponderEliminar
  18. para poder conectar el movil y desbloquearlo con adb debe estar con la depuracion activada sino se hace imposible poder conectarlo

    ResponderEliminar
  19. Tengo un nexus 5 android 6.0.1 con la pantalla rota. Como desbloqueo tengo un pin en vez de patrón. ¿Cómo podría introducir dicho pin desde el PC para poder activar la depuración USB y rescatar mis datos? Gracias.

    ResponderEliminar
    Respuestas
    1. hola amigo, yo pensaria la forma mas facil seria con un teclado usb de esos de tablets o hasta de compu,porque por bluetooth tienes que configurarlo o si ya tenias uno igual solo prendiendolo, saludos!!!

      Eliminar
  20. Hola, al seguir otro tutorial, borré el archivo gesture.key y ya no funciona la opción de seguridad, al tocar la opción de patrón, se detiene el proceso settings. Creé el archivo gesture.key vacío en data/system pero no funcionó de nada. Quizá deba poner algo en dicho archivo, y colocarlo en otra ruta... Alguien podría ayudarme, quisiera poder bloquear mi dispositivo con patrón nuevamente. Gracias

    ResponderEliminar
    Respuestas
    1. Tienes que salvar toda la info que te sirva del celular y luego resetear de fabrica. de esa manera se repara solo.

      Eliminar

Publicar un comentario