web-dev-qa-db-ja.com

Chrome 80 Cookieのデコード方法

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/ 私はする必要があるようですローカル状態ファイルのencrypted_keyのCryptUnprotectDataは、復号化されたキーを使用して、何らかの方法でCookieを復号化します。

最初の部分では、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')

それから私はそれを解読しようとしました

decrypted_key = win32crypt.CryptUnprotectData(encrypted_key、None、None、None、0)

そして例外を得ました:

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

そして、私はそれを修正する方法を理解できません

また、暗号化の2番目の部分では、次のスニペットのようなpycryptodomeを使用する必要があるようです:

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

しかし、私はどこでナンス値を取得すべきかわからない

Chrome Cookieを正しく解読する方法を教えてください。

おそらく、Windows上の1つのユーザーアカウントからDPAPI暗号化キーの値をコピーし、別のユーザーとしてログオンしているときにCryptUnprotectData WinAPIを呼び出そうとしている可能性があります。これは、DPAPIの性質上、機能しません。

0
dgrandm