I’ve this code:
#!/usr/bin/env python3
# pip3 set up pycryptodome bsddb3
import os
import bsddb3.db as bdb
import struct
def extract_keys(wallet_path):
attempt:
# Open the pockets.dat file
db_env = bdb.DBEnv()
db_env.open(os.path.dirname(wallet_path), bdb.DB_CREATE | bdb.DB_INIT_MPOOL)
db = bdb.DB(db_env)
db.open(wallet_path, "principal", bdb.DB_BTREE, bdb.DB_RDONLY)
mkey, ckeys = None, []
for key, worth in db.gadgets():
if key.startswith(b'x04mkey'):
mkey = worth # Extract grasp key
elif key.startswith(b'x07ckey'):
ckeys.append(worth) # Extract crypted keys
db.shut()
db_env.shut()
return {"mkey": mkey, "ckeys": ckeys}
besides Exception as e:
print(f"Error: {e}")
return None
if __name__ == "__main__":
for infile in os.listdir('.'):
if os.path.isfile(infile) and infile[-4:]=='.dat':
outcome = extract_keys(infile)
if outcome:
print(f"File: {infile}")
print(f"mkey: {outcome['mkey'].hex() if outcome['mkey'] else 'Not discovered'}")
print(f"ckey: {[ckey.hex() for ckey in result['ckeys']]}n")
else:
print("Didn't extract keys.")
It does extract mkeys however not ckeys. repair that?
Does it extract mkeys accurately?