2 votos

¿Existe una forma de asignar/traducir un patrón de bloqueo a un PIN numérico?

Acabo de encriptar mi Moto X (Gen 1) (KitKat 4.4.4) utilizando la opción de encriptación por defecto desde el menú Ajustes > Seguridad. Una vez finalizado el proceso de encriptación, me pide "Escriba la contraseña para descifrar el almacenamiento". Sólo hay un problema: nunca me pidió una contraseña.

Parece que estoy no es el único que haya experimentado esto. He intentado mi contraseña de Google como 3 veces, y, al igual que esa otra pobre alma, no he sido capaz de encontrar una manera de asignar mi patrón de bloqueo a un PIN, que podría ser lo que Android utiliza para el cifrado.

Para los mapeos, he probado con un teclado telefónico estándar:

1 2 3
4 5 6
7 8 9

y un teclado numérico estándar:

7 8 9
4 5 6
1 2 3

y una conjetura basada en cómo podría hacerlo un desarrollador:

0 1 2
3 4 5
6 7 8

Presumiblemente, aunque no necesariamente, Android almacena ese patrón como una cadena o número de alguna manera. Dado un determinado patrón de desbloqueo, ¿cómo puedo encontrar la cadena o el número que representa ese patrón?


A los moderadores: Me parece bien borrar esta pregunta si no es on-topic. Creo que la pregunta habría sido on-topic si la respuesta solucionara mi problema. No estoy seguro de cómo lo veis vosotros.

2voto

David Englund Puntos 126

He descargado la fuente de Android y he encontrado la respuesta. La suposición salvaje resulta ser correcta. Este es el mapeo:

0 1 2
3 4 5
6 7 8

Si su patrón va de arriba a la izquierda a arriba a la derecha (0->1->2) y luego hacia abajo a la derecha (2->5->8), la versión en cadena de la contraseña es "01258".

La fuente de esto viene de LockPatternUtils en el paquete com.Android.internal.widget:

/**
 * Serialize a pattern.
 * @param pattern The pattern.
 * @return The pattern in string form.
 */
public static String patternToString(List<LockPatternView.Cell> pattern) {
    if (pattern == null) {
        return "";
    }
    final int patternSize = pattern.size();

    byte[] res = new byte[patternSize];
    for (int i = 0; i < patternSize; i++) {
        LockPatternView.Cell cell = pattern.get(i);
        res[i] = (byte) (cell.getRow() * 3 + cell.getColumn());
    }
    return new String(res);
}

donde las filas y las columnas son ambas {0,1,2}.

Sin embargo, como dije en mi pregunta, probé este mapeo con mi patrón, y no funciona para desbloquear mi encriptación. Esto resultó ser un callejón sin salida, pero espero que esta respuesta sea útil para otros con un problema similar. (Nota de nuevo que la otra persona que tenía este problema también trató de encontrar el mapeo de patrón a PIN, pero la respuesta no estaba por ahí).

0 votos

Buena información, gracias +1, si consigues la respuesta correcta por favor edita tu respuesta para el resto de los que estamos luchando con este tema.

1voto

linux-guy Puntos 11

Me doy cuenta de que este hilo es muy viejo, pero en realidad he utilizado esta información con mucho éxito. Esta es la cuadrícula correcta para traducir los bloqueos de patrones 3x3 en un pin:

1 2 3
4 5 6
7 8 9

Esto funciona en mi Oneplus 3 con Resurrection Remix 6.0.1. Larga historia corta, he permitido descifrar la contraseña en el arranque, pero al reiniciar me dio la opción de contraseña. ¡Esta rejilla funcionó como un encanto!

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