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.