El Android impone estas condiciones en los patrones:
- Cada patrón debe conectar al menos cuatro puntos.
- Los puntos en el patrón deben ser distintos.
- Si el segmento de línea que conecta dos puntos consecutivos en el patrón pasa a través de otros puntos, los otros puntos deben haber estado previamente en el patrón.
En estas condiciones, puede crear 389112 patrones distintos , como se calcula con el siguiente programa Haskell:
dots = [(row, col) | row <- [0..2], col <- [0..2]] line (r, c) (r', c') = takeWhile (/= (r', c')) $ zip [r, r + (r' - r) `div` g ..] [c, c + (c' - c) `div` g ..] where g = gcd (r' - r) (c' - c) extensions [email protected] (dot : _) = [new : pattern | new = 4 main = print . length . filter valid . foldr search [] $ map return dots
Este número es confirmado por Adam J. Aviv, Katherine Gibson, Evan Mossop, Matt Blaze, Jonathan M. Smith, “Ataques de manchas en pantallas táctiles de teléfonos inteligentes”, en Proc. 4th USENIX WOOT , 9 de agosto de 2010, págs. 1-7:
- ¿Cuál es el mejor fondo de pantalla para mi teléfono?
- ¿Por qué mi teléfono Android de repente descargó 120mb de 'datos de fondo' (68mb Firefox y 61mb Android OS) después de haberlo comunicado por wifi durante una semana (datos móviles apagados) y luego encendí los datos móviles? ¿Estoy siendo pirateado?
- ¿Por qué algunas personas consideran que el sistema operativo Android está roto?
- ¿Cuál es tu opinión sobre Huawei P9 lite?
- ¿Es el Redmi 4 mejor que el Redmi 4A?
Debido a la restricción del punto de contacto intermedio, el espacio de contraseña del patrón de contraseña de Android contiene 389,112 posibles patrones⁴.
⁴ Debido a la complejidad de la restricción del punto de contacto intermedio, calculamos este resultado mediante métodos de fuerza bruta.