当我尝试在 Windows 中解密 chrome 密码时,我有这个错误 pywintypes.error: (87, 'CryptProtectData', 'Paramètre wrong.') [英] I have this error pywintypes.error: (87, 'CryptProtectData', 'Paramètre incorrect.') when i'm trying to decrypt chrome password in windows
本文介绍了当我尝试在 Windows 中解密 chrome 密码时,我有这个错误 pywintypes.error: (87, 'CryptProtectData', 'Paramètre wrong.')的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我所有的代码,我尝试用它来解密 Windows 中的 chrome 密码.
Here is all of my code,I try to use this to decrypt chrome password in windows.
import os
import sqlite3
import win32crypt
def get_chrome():
data_path = os.path.expanduser('~') + r'\AppData\Local\Google\Chrome\User Data\Default\Login Data'
c = sqlite3.connect(data_path)
cursor = c.cursor()
select_statement = 'SELECT origin_url, username_value, password_value FROM logins'
cursor.execute(select_statement)
login_data = cursor.fetchall()
cred = {}
string = ''
for url, user_name, pwd in login_data:
pwd = win32crypt.CryptUnprotectData(pwd)
cred[url] = (user_name, pwd[1].decode('utf8'))
string += '\n[+] URL:%s USERNAME:%s PASSWORD:%s\n' % (url,user_name,pwd[1].decode('utf8'))
print(string)
if __name__=='__main__':
get_chrome()
它显示的错误是:
pywintypes.error: (87, 'CryptProtectData', 'Paramètre incorrect.') when i'm trying to decrypt chrome password in windows
推荐答案
我假设这是来自 w3w3w3 youtube 的频道.我遇到了和你完全一样的问题,但是有人发布了解决方案:
I'm assuming this is from w3w3w3 youtube's channel. I encountered the exact same problem as you, however, someone posted a solution to it:
import os
import json
import base64
import sqlite3
import win32crypt
from Cryptodome.Cipher import AES
import shutil
def get_master_key():
with open(os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User
Data\Local State', "r") as f:
local_state = f.read()
local_state = json.loads(local_state)
master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])
master_key = master_key[5:] # removing DPAPI
master_key = win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1]
return master_key
def decrypt_payload(cipher, payload):
return cipher.decrypt(payload)
def generate_cipher(aes_key, iv):
return AES.new(aes_key, AES.MODE_GCM, iv)
def decrypt_password(buff, master_key):
try:
iv = buff[3:15]
payload = buff[15:]
cipher = generate_cipher(master_key, iv)
decrypted_pass = decrypt_payload(cipher, payload)
decrypted_pass = decrypted_pass[:-16].decode() # remove suffix bytes
return decrypted_pass
except Exception as e:
# print("Probably saved password from Chrome version older than v80\n")
# print(str(e))
return "Chrome < 80"
master_key = get_master_key()
login_db = os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Google\Chrome\User Data\default\Login Data'
shutil.copy2(login_db, "Loginvault.db") #making a temp copy since Login Data DB is locked while Chrome is running
conn = sqlite3.connect("Loginvault.db")
cursor = conn.cursor()
try:
cursor.execute("SELECT action_url, username_value, password_value FROM logins")
for r in cursor.fetchall():
url = r[0]
username = r[1]
encrypted_password = r[2]
decrypted_password = decrypt_password(encrypted_password, master_key)
if len(username) > 0:
print("URL: " + url + "\nUser Name: " + username + "\nPassword: " + decrypted_password + "\n" + "*" * 50 + "\n")
except Exception as e:
pass
cursor.close()
conn.close()
try:
os.remove("Loginvault.db")
except Exception as e:
pass
这篇关于当我尝试在 Windows 中解密 chrome 密码时,我有这个错误 pywintypes.error: (87, 'CryptProtectData', 'Paramètre wrong.')的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文