You are browsing as a guest. Sign up (or log in) to start making projects!

2h 12m 28s logged

I started with a raw prototype. I built a simple terminal menu, a basic random password generator using Python’s secrets module, and a straightforward way to load and save unencrypted JSON data. It worked, but it was completely replaceable by any other online website…

Next, I integrated that you can add your own passwords, usernames and notes. I also The rich library to make the terminal look beautiful with custom tables. I also implemented the search feature so users could find specific accounts instead of just looking at everything, and I replaced the passwords in the main list (••••••••) and you need to search fot the specific programm. I think its better this way but others might disagree.

I added the getpass module so that when you type a password and spedifically the main password, the characters are completely hidden in the terminal.

Right now, the app is not fully encrypted yet, but I build a structure that will hopefulyl help me.

For the readability Instead of saving accounts directly at the top level of the JSON file, I moved them into a dedicated entries dictionary.

Master Password Integration: The app now requires a master password immediately upon boot. It checks this password against the JSON file before unlocking the menu.

Right now everything is just in the json file in clear text. i want to change that for the next devlog.
Right Now:

def load_vault(master_password: str) -> dict:
“”“Loads the vault and checks the password in plain text (Simulated).”””
if not os.path.exists(DB_FILE):
return {“cipher”: “VERSCHLÜSSELUNG_CIPHER”, “entries”: {}}

with open(DB_FILE, "r") as f:
    data = json.load(f)

# Checking the password in plain text for now
if data.get("passwort_schutz") != master_password:
    console.print("\n[bold red] Wrong password![/bold red]\n")
    return None

return {"cipher": data.get("cipher", "VERSCHLÜSSELUNG_CIPHER"), "entries": data.get("entries", {})}
0
3

Comments 0

No comments yet. Be the first!