A Chrome extension that securely stores website credentials in an AES‑256‑encrypted SQLite database located on a USB flash drive, powered by a FastAPI backend.
.
├── Basic_USB_interface.py # USB operations and AES encryption logic
├── password_server.py # FastAPI backend API
└── extension/
├── background.js # Chrome service worker
├── content.js # Autofill and capture scripts
├── manifest.json # Chrome extension manifest (v3)
├── popup.html # User interface for password manager
└── popup.js # UI interaction logic
Ensure your USB stick is plugged in and mounted.
Option 1: Using Executable (Recommended)
- Simply run the provided executable: dist/windows/PocketVault.exe
Option 2: Using Python Scripts
pip install -r requirements.txt
pip install fastapi uvicorn cryptography psutil
uvicorn password_server:app --host 127.0.0.1 --port 5000This launches the API at http://127.0.0.1:5000
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select the
/extensionfolder
- The user sets a master password (passphrase) in the popup.
- The passphrase is deterministically converted into a 256-bit AES key via PBKDF2.
- Credentials are stored in an SQLite database on a USB drive.
- The database is always encrypted (AES‑256‑CBC) except during brief decryption inside a temp file for operations.
- The Chrome extension communicates with the FastAPI backend to save/retrieve credentials.
- AES‑256‑CBC encryption with random IV
- PBKDF2-HMAC-SHA256 key derivation:
pbkdf2_hmac('sha256', password.encode(), salt=b'IL0V3EC52!', iterations=100000)
- USB paths auto-detected via
psutil - Passwords are never stored on disk unencrypted
| Endpoint | Method | Description |
|---|---|---|
/savePassword |
POST | Save or overwrite credentials |
/getPassword/{site} |
GET | Retrieve credentials for a website |
/setupUSB |
POST | Initialize and encrypt new database |
/encryptUSB |
POST | Encrypt existing database |
/usbStatus |
GET | USB detection and status info |
- Autofill login forms (username + password)
- Save credentials when user submits a form
- Manually view credentials from popup
- Toggle password visibility in input fields
- Secure local storage of master key (Chrome local storage)
- Automatically clearing Master key or allow manually clearing it
- Add Prompt for setup process
- Encrypt the communication (extension <-> backend)
- Handle sign-up pages to autofill auto-genarated password