Recuperar las contraseñas de Google Chrome

4

Al recuperar las contraseñas de Google Chrome en macOS, he notado que todas las contraseñas aparecen como lo mismo (algo en la línea de): Vi??M!4NNn . La forma en que los recuperé fue con lo siguiente (como no administrador):

cd "users/user/library/application support/google/chrome/default"
sqlite3 "Login Data"
sqlite3> .output chrome-passwords.txt
sqlite3> select origin_url, username_values, password_value from logins;

Incluso si ejecuto como root y obtengo las contraseñas obtengo lo mismo, ¿qué está causando esto y cómo puedo recuperarlas correctamente?

    
pregunta CertifcateJunky 25.05.2018 - 16:45
fuente

1 respuesta

1

Está bien, lo descubrí y dije que publicaría una respuesta.

La razón por la que las contraseñas se mostraron como lo hicieron es porque están cifradas con una clave pbkdf2 que se almacena en una ubicación específica del llavero (generalmente con el nombre 'Chrome'). Para encontrar esta clave, puede ejecutar el comando security find-generic-password -wa 'Chrome' como administrador y debería extraer la clave por usted.

Una vez que tengas la clave, para descifrarla necesitarás;

  • Genera el IV ( python -c 'import sys;sys.stdout.write("20" * 16)'
  • Obtenga la sal (110% de probabilidad es saltysalt )
  • Cifre la clave encontrada usando pbkdf2_hmac , capturando los primeros 16 caracteres y hexlifique la clave cifrada ( python -c 'import binascii;import hashlib;key=hashlib.pbkdf2_hmac("sha1","<KEY>",b"saltysalt",1003)[:16];print binascii.hexlify(key) )
  • Base64 codifica la contraseña cifrada y elimina los primeros tres caracteres ( python -c 'import base64;print base64.b64encode("ENCRYPTED_PASSWORD")[3:]' )
  • Descifre el cifrado con el siguiente comando: openssl enc -base64 -d -aes-128-cbc -v <IV> '<HEX KEY>' -K '<BASE64 ENCODED PASSWORD>' .

Por suerte para ti, creé una función Python simple para devolver lo mismo:

import base64
import binascii
import subprocess
from hashlib import pbkdf2_hmac


def decrypt(encrypted, key):
    iv = ''.join(('20', ) * 16)
    key = pbkdf2_hmac('sha1', key, b'saltysalt', 1003)[:16]

    hex_key = binascii.hexlify(key)
    hex_enc_password = base64.b64encode(encrypted[3:])
    try:
        decrypted = subprocess.check_output(
            "openssl enc -base64 -d "
            "-aes-128-cbc -iv '{}' -K {} <<< "
            "{} 2>/dev/null".format(iv, hex_key, hex_enc_password),
            shell=True)
    except subprocess.CalledProcessError:
        decrypted = "n/a"

    return decrypted

Ten en cuenta que para que funcione correctamente, debes tener las credenciales administrativas de la computadora en la que ejecutas esto.

    
respondido por el CertifcateJunky 04.06.2018 - 18:18
fuente

Lea otras preguntas en las etiquetas