Skip to content

ADDag-src/Pyside6-Password-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pyside6 Password Manager

A password manager built with PySide6, featuring strong encryption and a focus on security and usability.

Features

  • Supports multiple users
  • Option for changing a user's master password
  • Delete user accounts
  • Automatic logout after a period of inactivity
  • Fully local, great for offline use and backups
  • Master password secured with Argon2
  • Add, edit, and delete entries
  • Search functionality
  • All vault data is encrypted with Fernet before being stored in a SQLite database
  • Built‑in password generator with customizable options
  • Import and export vault data in CSV format

Encryption & Storage

All sensitive data is stored in such a way to ensure that nothing can be compromised even if the database file is accessed directly.

Master Password Protection

  • The master password is never stored in plain text.
  • The master password is hashed using Argon2 (implemented via argon2-cffi).
  • Only the resulting hash is stored in the database, and hash comparison is used during login.
  • During program operation, the master password is used only long enough to verify the Argon2 hash and derive the encryption key. It is not retained in memory beyond the login process.
  • A minimum length requirement is enforced for the master password, since it is the foundation of all vault security.

Vault Entry Encryption

  • All sensitive entry fields (usernames, passwords and optional notes) are encrypted using Fernet, part of the cryptography library.
  • A secure encryption key is derived from the master password and used to create a Fernet instance for all encryption and decryption tasks.
  • Encryption and decryption occur only in memory; only encrypted ciphertext is ever written to the database.
  • A hash of usernames is stored and used to detect existing website/username combinations.

Data Storage

  • The application uses SQLite as a lightweight and reliable local database engine.
  • Only encrypted ciphertext is stored in the database; no plaintext usernames, passwords, or notes are ever written to disk.
  • All operations are performed locally on the user's device.

Database Location

  • The application automatically creates a data/ folder on first launch.
  • In development mode, this folder is created next to main.py.
  • In packaged builds, the folder is created inside the application’s internal runtime directory (the _internal folder generated by PyInstaller).
  • All encrypted vault data is stored inside this folder.

Import & Export

The application supports importing and exporting vault data in CSV format.

Export

  • Users can export all vault entries to a CSV file.
  • Exported data is written in unencrypted form, with a clear warning reminding the user to keep the file secure.
  • Exporting requires the user to be logged in and includes an additional master password verification step.

Import

  • Vault data can be imported from a CSV file that follows the expected format.
  • Imported entries are automatically encrypted before being stored in the database.
  • Duplicate detection is performed using hashed usernames. When duplicates are found, the user chooses a single action (skip, update, or add anyway) that is applied to all detected duplicates.
  • Entries missing required fields (website, username, or password) are skipped during import.

Third‑Party CSV Compatibility

  • The importer supports CSV files exported by this application as well as other password managers.
  • Tested compatible formats include:
    • Google Chrome
    • Mozilla Firefox
    • Bitwarden
  • Other password managers may also work, provided their CSV includes standard fields such as website, username, and password. The importer checks for common variations of these fields, but because CSV formats differ, full compatibility cannot be guaranteed.
  • Unsupported CSV formats may still work if column names are adjusted to match the expected fields (website, username, password, notes).

Screenshots

Login Window

A simple login screen where users can create a new account or log in to an existing one.

Login Window

Main Window - Save Mode

The default mode, where entering a website and its details creates a new vault entry.

Main Window

Main Window - Search Mode

Enabling “Search Mode” switches the input bar into a search field for filtering existing entries.

Main Window

Vault Window

Displays all saved entries with quick access to actions.

Vault Window

Edit Entry Window

A focused popup for updating an existing entry.

Edit Entry Window

Getting Started

  • Requires Python 3.10 or later.
  • Clone the repository.
  • Navigate into the project folder.
  • Install the required dependencies using pip install -r requirements.txt.
  • Run the application using python main.py.

Packaging

The application can be packaged into an executable using PyInstaller. Run the following command from the project folder:

Windows(Tested):

pyinstaller --name=PasswordManager --noconsole --icon="resources/icons/safe-icon.ico" --add-data "resources/icons/*.ico;resources/icons" --add-data "resources/icons/*.png;resources/icons" --add-data "resources/images/*;resources/images" main.py

Linux(Tested)/Mac(Not tested)

pyinstaller --name=PasswordManager --noconsole --icon="resources/icons/safe-icon.png" --add-data "resources/icons/*.ico:resources/icons" --add-data "resources/icons/*.png:resources/icons" --add-data "resources/images/*:resources/images" main.py

Credits & Thanks

Releases

No releases published

Packages

 
 
 

Contributors

Languages