7 votos

Usando ADB para cambiar el bloqueo de pantalla

Estoy buscando una forma de cambiar el tipo de bloqueo de pantalla de deslizar a contraseña, y establecer la contraseña a través de la línea de comandos adb. Tengo un dispositivo con la configuración que quiero, y uno que tiene bloqueo de deslizamiento. Estoy bastante seguro de que esto se puede lograr a través de "copiar y pegar" de algunos campos con sqlite3, pero no estoy seguro de qué campos y cómo hacerlo. Estoy abierto a casi todas las ideas excepto usar comandos adb shell input para lograr esto. Es decir, puedo/sé cómo/actualmente estoy usando los comandos input swipe input text input tap para cambiar de desbloqueo por deslizamiento a desbloqueo por contraseña.

edit1: aclarado adb shell input, sí, mi teléfono está rooteado.

edit2: enlaces relevantes:
Cómo cambiar el tipo de bloqueo de pantalla
Cifrado de contraseña en Android

Según la publicación en el primer enlace, debería ser fácil cambiar el tipo de pantalla de bloqueo, el único problema es que no puedo encontrar el campo lockscreen.password_type en la base de datos a la que se refieren. ¿Se ha movido en 4.3? Después de leer el artículo del segundo enlace, mi idea fue usar el número de sal almacenado en la base de datos para hashear una nueva contraseña usando la sal específica del dispositivo, y reemplazar la contraseña existente (si la hay). Todavía estoy tratando de averiguar cómo hacer esto.

1 votos

¿Estás enraizado?

0 votos

Excepto usando comandos adb shell input, y sí, mi dispositivo está rooteado

16voto

Sun Puntos 121

Desde Android 8.0 Oreo, puedes cambiar la pantalla de bloqueo usando los comandos adb que se encuentran a continuación

adb shell

athene_f:/ $ locksettings
usage: locksettings set-pattern [--old OLD_CREDENTIAL] NEW_PATTERN

   locksettings set-pin [--old OLD_CREDENTIAL] NEW_PIN
   locksettings set-password [--old OLD_CREDENTIAL] NEW_PASSWORD
   locksettings clear [--old OLD_CREDENTIAL]
   locksettings verify [--old OLD_CREDENTIAL]
   locksettings set-disabled DISABLED
   locksettings get-disabled

flags:
   --user USER_ID: especifica el usuario, el valor predeterminado es el usuario actual
  1. locksettings set-pin: establece un PIN
  2. locksettings set-password: establece una contraseña
  3. locksettings clear: borra la credencial de desbloqueo
  4. locksettings verify: verifica la credencial y desbloquea el usuario
  5. locksettings set-disabled: establece si la pantalla de bloqueo debe estar desactivada
  6. locksettings get-disabled: recupera si la pantalla de bloqueo está desactivada

Y si deseas quitar la contraseña, simplemente usa el siguiente código:

$ locksettings clear --old old_password_put_here

Aquí está el enlace de referencia: The Android Soul - Cómo cambiar o eliminar el patrón, PIN o contraseña de la pantalla de bloqueo a través de ADB en Android 8.0 Oreo

Lo he probado en un dispositivo Android Oreo. Funciona perfectamente.

0 votos

Obteniendo respuesta como Solicitud limitada. ¿Qué significa eso?

4voto

Andy Brudtkuhl Puntos 1714

No existe una funcionalidad incorporada para establecer la contraseña a través de la línea de comandos, ni desde una terminal en el dispositivo ni desde adb. Ni siquiera puedes lograr esto copiando la contraseña almacenada en el archivo de configuración seguro desde otro dispositivo. La contraseña no se almacena como texto plano, sino que se guarda un hash criptográfico de la contraseña. Este hash se genera utilizando la contraseña y un valor de salt: un número aleatorio generado una vez en el dispositivo.

Hashear la contraseña evita que alguien robe tu teléfono y encuentre la contraseña. Esto es importante no solo para proteger la contraseña en sí misma (en caso de que uses la misma contraseña para otras cosas), sino también porque la contraseña se utiliza para cifrar el almacén de claves del dispositivo y como parte de la función de cifrado del dispositivo completo. Salando la contraseña con un salt específico del dispositivo asegura que un atacante no pueda usar una tabla arcoiris para determinar la contraseña. (Una tabla arcoiris es una lista de todas las contraseñas hasheadas posibles, a la que se consulta para encontrar la contraseña original dada la contraseña hasheada. La técnica permite a las implementaciones de contraseña ingenuas como las de Windows 95 ser vulneradas en menos de un segundo utilizando una computadora de escritorio normal.)

Además, el código que actualiza la contraseña almacenada cuando la cambias a través de la interfaz gráfica de usuario tiene otros efectos secundarios. Como mencioné antes, la contraseña se utiliza para cifrar el almacén de claves del dispositivo, el cual puede ser utilizado por todas las aplicaciones en el dispositivo para almacenar credenciales de manera segura. Cambiar la contraseña guardada sin actualizar el almacén de claves resultaría en la pérdida de las credenciales almacenadas. Además, si se utiliza el cifrado del dispositivo completo, cambiar la contraseña guardada sin actualizar la clave de cifrado del dispositivo haría que todo el almacenamiento sea inaccesible.

Para lograr la funcionalidad que deseas, la forma más sencilla sería parchear una ROM personalizada para exportar la funcionalidad que la aplicación de configuración utiliza para cambiar la contraseña, y agregar un programa de línea de comandos que pueda cambiar la contraseña de la misma manera. Incluso podría ser posible hackear una aplicación que pueda hacer esto utilizando reflexión para obtener acceso a las funciones no exportadas, pero la aplicación aún necesitaría permisos de root, y sería específica para la ROM (e incluso la versión de la ROM) en el dispositivo.

El código relevante está aquí si estás interesado.

1 votos

Bueno, lo que pasa es que leí este artículo: [forensics.spreitzenbarth.de/2012/02/28/… y básicamente te explica cómo abrir una contraseña utilizando el archivo password.key (¿esta es la contraseña encriptada?) y settings.db (¿almacena la sal?) para realizar un ataque de fuerza bruta a la contraseña de alguna manera (no sé lo suficiente sobre encriptación para entender completamente este artículo). Basándome en este artículo, se me ocurrió la idea de potencialmente utilizar la sal específica del dispositivo para encriptar una nueva contraseña y sobrescribir el archivo password.key. ¿Lógica defectuosa o posible?

0 votos

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