web-dev-qa-db-fra.com

Chrome 80 comment décoder les cookies

J'avais un script de travail pour ouvrir et déchiffrer Google Chrome cookies qui ressemblaient à:

decrypted = win32crypt.CryptUnprotectData(enctypted_cookie_value, None, None, None, 0)

Il semble qu'après la mise à jour 80, ce n'est plus une solution valable.

Selon ce billet de blog https://blog.nirsoft.net/2020/02/19/tools-update-new-encryption-chrome-chromium-version-80/ il semble que je doive CryptUnprotectData sur encrypted_key du fichier d'état local, puis déchiffrer en quelque sorte le cookie, en utilisant la clé déchiffrée.

Pour la première partie, j'ai eu mon encrypted_key

path = r'%LocalAppData%\Google\Chrome\User Data\Local State'
path = os.path.expandvars(path)
with open(path, 'r') as file:
    encrypted_key = json.loads(file.read())['os_crypt']['encrypted_key']
encrypted_key = bytearray(encrypted_key, 'utf-8')

Puis j'ai essayé de le déchiffrer

decrypted_key = win32crypt.CryptUnprotectData (encrypted_key, Aucun, Aucun, Aucun, 0)

Et j'ai eu l'exception:

pywintypes.error: (13, 'CryptProtectData', 'The data is invalid.')

et je ne peux pas comprendre comment le réparer

Aussi pour la deuxième partie du cryptage, il semble que je devrais utiliser pycryptodome, quelque chose comme cet extrait:

cipher = AES.new(encrypted_key, AES.MODE_GCM, nonce=nonce)
plaintext = cipher.decrypt(data)

Mais je ne peux pas comprendre où je devrais obtenir une valeur nonce

Quelqu'un peut-il expliquer, comment faire Chrome cookies décrypter correctement?

Vous avez probablement copié la valeur de clé chiffrée DPAPI à partir d'un compte d'utilisateur sous Windows et essayez d'appeler CryptUnprotectData WinAPI lorsque vous êtes connecté en tant qu'autre utilisateur. Cela ne fonctionnera pas, de par la nature de DPAPI.

0
dgrandm