尝试使用 python 解密 chrome 密码时 AES 密钥长度不正确(356 字节)

Incorrect AES key length (356 bytes) while trying to decrypt chrome passwords using python

我正在尝试从“登录数据”sqlite 文件中解密我的 chrome 密码。我遵循了本教程:https://ohyicong.medium.com/how-to-hack-chrome-password-with-python-1bedc167be3d 代码显示在这里:

import sqlite3
from sqlite3.dbapi2 import Cursor
from Cryptodome.Cipher import AES

#The encrypt_key i got from "Local State" file
secret_key="<My Secret Key>"

#My "Login Data" file copied to a file called "login.db"
conn = sqlite3.connect("login.db")
cursor = conn.cursor()

cursor.execute("SELECT action_url, username_value, password_value FROM logins")
for index,login in enumerate(cursor.fetchall()):
    url = login[0]
    username = login[1]
    ciphertext= login[2]
    print("Url:",url)
    print("Username",username)
    print("Cipher Text",ciphertext)
    initialisation_vector = ciphertext[3:15]
    encrypted_password = ciphertext[15:-16]
    cipher = AES.new(secret_key, AES.MODE_GCM, initialisation_vector)
    decrypted_pass = cipher.decrypt(encrypted_password)
    decrypted_pass = decrypted_pass.decode()
    print(decrypted_pass)

这是我在 python2.7 和 python3

中遇到的错误
    raise ValueError("Incorrect AES key length (%d bytes)" % len(key))
ValueError: Incorrect AES key length (356 bytes)

我确认我复制了正确的 secret_key 多次,但我仍然收到此错误。请帮我解决这个问题

Chrome 中的密钥是 base-64 编码的,并且具有文本“DPAPI”的固定前缀。你必须解码 base-64:

import base64
...
key = base64.b64decode(key)

他们 trim 关闭 header:

key = key[5:]

AES 构造函数应该正确接受它。

编辑:如果您查看所引用文章的末尾,您会看到 link 作者在 GitHub (https://github.com/ohyicong/decrypt-chrome-passwords) 上实现了他的方法。如果您查看他的源代码,您会发现他实际上完全按照我上面的建议进行操作。