我有一个用于打开和解密Google Chrome Cookie的脚本,代码如下:
decrypted = win32crypt.CryptUnprotectData(enctypted_cookie_value, None, None, None, 0)
在80版本更新后,似乎这不再是一个有效的解决方案。
根据这篇博客文章 https://blog.nirsoft.net/2020/02/19/tools-update-new-encryption-chrome-chromium-version-80/ ,我需要从“本地状态”文件中使用CryptUnprotectData对加密密钥进行解密,然后通过解密后的密钥来解密Cookie。
对于第一部分,我已经获得了我的加密密钥。
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')
然后我尝试解密它
decrypted_key = win32crypt.CryptUnprotectData(encrypted_key, None, None, None, 0)
但是出现了异常:
pywintypes.error: (13, 'CryptProtectData', 'The data is invalid.')
我无法弄清楚如何修复它。
对于加密的第二部分,似乎我应该使用pycryptodome,类似于这个代码片段:
cipher = AES.new(encrypted_key, AES.MODE_GCM, nonce=nonce)
plaintext = cipher.decrypt(data)
但我无法确定应该从哪里获取nonce值。
有人能解释一下如何正确进行Chrome cookies解密吗?
json.load(file)
来代替json.loads(file.read())
。 - evandrix