3 votos

¿Cómo recuperar la contraseña de wifi almacenada?

Mi dispositivo Android (Un Samsung Galaxy S7 SM-G930F, versión 6.0.1) tiene diferentes redes wi-fi guardadas. Me gustaría recuperar alguna de las contraseñas que tiene guardadas. Navegando por la web he buscado posibles soluciones pero ninguna me ha funcionado.

  • Las contraseñas almacenadas en wpa_supplicant.conf están encriptadas, y aunque cambie las propiedades de construcción "ro.securestorage.support" a false, las contraseñas antiguas permanecen encriptadas o se borran, y me gustaría recuperarlas.
  • Sé que las contraseñas de wi-fi suelen tener una copia de seguridad en google drive, pero no tengo ni idea de cómo recuperarlas de la copia de seguridad online.
  • He oído hablar de un módulo Xposed "Wifi password" que supuestamente debería mostrar la contraseña del wifi en lugar de los puntos normales, pero tengo un dispositivo TouchWiz y si instalo el Xposed Framework tengo miedo de que borre mis datos, incluida mi contraseña del wifi.

Entiendo que el cifrado sirve para mantener a salvo tu contraseña, pero hasta donde yo sé, cada vez que intento conectarme a una red wifi utiliza la contraseña real, por lo que hay que guardarla en algún sitio o descifrarla sobre la marcha.

¿Puede alguien ayudarme?

EDIT: Como dije, si cambio ro.securestorage.support propiedad en build.prop mi contraseña almacenada se borra o permanece con hash.

Si borro .system.wpa_supplicant

todos los puntos de acceso WiFi guardados se perderán por primera vez.

Además, como se ha dicho en los comentarios, la contraseña no está encriptada por lo que no hay "forma" de desencriptarla, sino que está cifrada y debería haber una forma de recuperarla

1 votos

0 votos

Especifiqué en las posibles soluciones cada respuesta en esa pregunta, diciendo que cambiar las propiedades de construcción o borrar archivos resultaría en la eliminación de mis contraseñas almacenadas.

0 votos

Agradezco el esfuerzo que has puesto en la investigación y en plantear una cuestión que puede ser útil para los futuros visitantes. Por lo general, es mejor mencionar en tu pregunta cualquier pregunta anterior -si la encuentras- que pueda considerarse duplicada. Pero los duplicados suelen estar desaconsejados. Como su pregunta tampoco tiene una solución al problema, se puede justificar la repetición de la pregunta. La pregunta anterior no tiene una respuesta a la altura de tus expectativas porque Android Enthusiasts no es el lugar adecuado para responder preguntas explícitas sobre criptografía .

1voto

pr0nin Puntos 353

El valor hexadecimal que encontró en el wpa_supplicant.conf es el PMK (no el PSK directamente, sino algún valor intermedio que calcula el PSK o algo así). Este valor no está encriptado, se hace un hash según lo definido por WPA2 usando PBKDF2 SHA-1 con 4096 iteraciones, ver Wikipedia.

SHA-1 es una función unidireccional, lo que significa que no se puede invertir.

El Wifi sigue funcionando, porque el PSK es la clave real que requiere el Wifi para funcionar. La frase de contraseña es sólo para los "humanos tontos que no pueden recordar un simple valor de 64 caracteres hexadecimales" (también conocido como conveniencia del usuario).

De ahí que no exista una función de "desencriptación". La única forma de recuperar la contraseña es realizar una búsqueda por fuerza bruta de esa contraseña (probando todas las contraseñas posibles). Dependiendo de la longitud de la contraseña y de tu hardware (CPU, GPU) esto puede llevar algunos días, semanas, meses o años.

Hay un tema en Github con indica que la herramienta "hashcat" es capaz de romper este valor utilizando el modo 12000 ( -m 12000 ):

Ver también Algoritmo de cifrado utilizado en WPA/WPA2

0 votos

Pero yo (como humano tonto) no puedo usar ese psk de ninguna manera para acceder al wifi con otro dispositivo? Perdona mi ignorancia sobre el cifrado y el hashing, entiendo la diferencia pero he utilizado mal el término "cifrado".

0 votos

@Iztooi Algunos sistemas todavía permiten utilizar el PSK directamente en lugar de la contraseña. Si el campo de la contraseña está limitado a 63 caracteres sólo acepta una contraseña. Si acepta 64 caracteres normalmente todo lo que tenga menos de 64 caracteres se considera una contraseña y si se introduce el código hexadecimal de 64 dígitos se toma directamente como PSK. O en Linux en el wpa_supplicant.conf se especifica la contraseña entre comillas, y el PSK sin ellas.

0 votos

Así que comprobé mi wpa_supplicant.conf y cada psk que aparece tiene 32 caracteres, y no tiene comillas (así que según lo que he leído, debería ser la cadena hexadecimal). ¿Es posible que no se muestre la totalidad del psk pero que se procesen los 32 caracteres restantes y se añadan cada vez que intento conectarme?

1voto

AridArgon Puntos 13

Leyendo en StackExchange esta pregunta Recuperar la contraseña del WiFi el usuario "life-on-mars" contestó que si haces una copia de seguridad de la configuración del proveedor (com.Android.provider.settings) con adb y extraes esa copia de seguridad con Android Backup Extractor al final obtendrá un archivo llamado flattened-data que tiene toda la red guardada de la misma manera que el wpa_supplicant.conf pero con las contraseñas reales sin hash/cifrado.

0 votos

No funcionó en el OnePlus 6 con Android 9. En qué dispositivo y versión de Android has probado esta respuesta?

1 votos

He probado esto en un Samsung Galaxy S7 (SM-G930F) en una versión 6.0.1

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