Iron Dome - A secure CLI password manager with AES-256 encryption and zero-knowledge architecture
Project description
IronDome
Fortified CLI Password Manager — AES-256 | Zero-Knowledge | Hardware-Bound
Quick Start • Features • Security • Developers • Contributing
Your passwords. Your machine. Your rules.
IronDome encrypts everything locally with AES-256, binds keys to your hardware, and operates on a zero-knowledge model — your master password is never stored. Nothing leaves your device. Ever.
Quick Start
pip install IronDome
bunker
Two commands. You're protected.
Features
Security
|
Management
|
How It Works
┌─────────────────────────┐
│ Master Password │
│ (never stored) │
└───────────┬─────────────┘
│
┌───────────▼─────────────┐
│ PBKDF2-HMAC-SHA256 │
│ 600,000 iterations │
│ + unique salt │
└───────────┬─────────────┘
│
┌──────────────┼──────────────┐
▼ ▼
┌────────────────────┐ ┌────────────────────┐
│ Machine-Specific │ │ User-Specific │
│ System Key │ │ Encryption Key │
│ (hardware-bound) │ │ (user+pass+salt) │
└────────┬───────────┘ └────────┬───────────┘
│ │
▼ ▼
┌────────────────────┐ ┌────────────────────┐
│ Encrypts master │ │ Encrypts password │
│ credentials │ │ database │
└────────────────────┘ └────────────────────┘
Usage
First-Time Setup
On first run, create your master account:
- Enter a master username (min 4 characters)
- Create a strong master password (min 8 characters)
- Confirm your master password
Main Menu
╔══════════════════════════════╗
║ === Password Manager === ║
║ Logged in as: nir ║
╠══════════════════════════════╣
║ 1. Generate a new password ║
║ 2. Save a password ║
║ 3. Find passwords ║
║ 4. List all websites ║
║ 5. Delete a password ║
║ 6. Create backup ║
║ 7. Show storage location ║
║ 8. Logout ║
║ 9. Exit ║
╚══════════════════════════════╝
Security Architecture
Encryption Layers
| Layer | Purpose | Scope |
|---|---|---|
| Machine-specific system key | Encrypts master credentials | Ties data to your hardware |
| User-specific encryption key | Encrypts password database | Requires both username + password |
Authentication Security
| Feature | Implementation |
|---|---|
| Brute force protection | Adaptive attempt limits with progressive lockout |
| Session management | Auto-timeout after 30 min inactivity |
| Sensitive operations | Require re-authentication |
| Device tracking | Per-device lockout with identifier tracking |
Cryptographic Stack
| Component | Implementation |
|---|---|
| Symmetric Encryption | AES-256-CBC + PKCS7 padding (Fernet) |
| Key Derivation | PBKDF2HMAC-SHA256, 600k iterations |
| Password Hashing | PBKDF2-HMAC-SHA256 + unique salt |
| Random Generation | Python secrets (CSPRNG) |
Data Storage
~/.password_manager/
├── password_manager.log # Non-sensitive log
├── backups/
│ └── .passwords_backup_*.enc # Encrypted backups
└── secrets/ # Restricted (0o700)
├── .passwords.enc # Encrypted password DB
├── salt.bin # Key derivation salt
├── .master_user.enc # Encrypted master user
├── .master_hash.enc # Encrypted master hash
└── .login_attempts.dat # Lockout tracking
Password Strength Scoring
Excellent ██████████████████████████████ 80+
Very Strong ████████████████████████░░░░░░ 60-79
Strong ██████████████████░░░░░░░░░░░░ 40-59
Medium ████████████░░░░░░░░░░░░░░░░░░ 25-39
Weak ██████░░░░░░░░░░░░░░░░░░░░░░░░ <25
For Developers
Clone & Run from Source
git clone https://github.com/TheKingHippopotamus/IronDome-Bunker.git
cd IronDome-Bunker
pip install -r requirements.txt
python -m password_manager
Project Structure
password_manager/
├── __init__.py # Package init + version
├── __main__.py # Entry point
├── manager.py # Main SecurePasswordManager class
├── auth.py # Authentication & master account
├── encryption.py # Encryption utilities
├── session.py # Session management & timeout
├── storage.py # File storage operations
├── generator.py # Password generation
├── utils.py # Utility functions
├── logger.py # Logging setup
└── constants.py # Constants & configuration
Contributing
We welcome contributions! Please read:
- CONTRIBUTING.md — development guidelines and PR process
- CODE_OF_CONDUCT.md — community standards
- SECURITY.md — vulnerability reporting
Screenshots & Demo
Application Interface
Secure authentication login
Main dashboard interface
Password details view
Video Demo
Click the image above to watch the full demonstration
Requirements
- Python 3.8+
cryptographylibrary- Windows, macOS, or Linux
License
GNU General Public License v3.0
- Attribution — credit the original author
- Share Source — distribute source with binaries
- Same License — derivatives must use GPL-3.0
- State Changes — indicate modifications
Created & maintained by King Hippopotamus
Built with security in mind. No data leaves your machine. Ever.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file irondome-1.1.0.tar.gz.
File metadata
- Download URL: irondome-1.1.0.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c437597ce9505a6eef8709817c4363915e7752d226faf1ba64838b9eebe0334
|
|
| MD5 |
ad2446aec1c507de5c15182b092e4844
|
|
| BLAKE2b-256 |
c3435aa8866ff5d8f2c30b621ad5bceb72943d24a14a043c9a92d20c30365cc3
|
Provenance
The following attestation bundles were made for irondome-1.1.0.tar.gz:
Publisher:
publish.yml on TheKingHippopotamus/IronDome-Bunker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
irondome-1.1.0.tar.gz -
Subject digest:
6c437597ce9505a6eef8709817c4363915e7752d226faf1ba64838b9eebe0334 - Sigstore transparency entry: 1202761330
- Sigstore integration time:
-
Permalink:
TheKingHippopotamus/IronDome-Bunker@61c0638114e0c6ccd4845c6db83542d44f3eaa00 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/TheKingHippopotamus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@61c0638114e0c6ccd4845c6db83542d44f3eaa00 -
Trigger Event:
push
-
Statement type:
File details
Details for the file irondome-1.1.0-py3-none-any.whl.
File metadata
- Download URL: irondome-1.1.0-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46c11e7e46e4824002364264e6bbc0ecc55998b711fb0a2f2dc1a2fd14c5c1f6
|
|
| MD5 |
a7d0eb5ddf506bf5bb7ecaf29e8335cc
|
|
| BLAKE2b-256 |
9952d1313ac0ee6a4decff04517102107383d1acbfd5bf628030d4b4ad14318d
|
Provenance
The following attestation bundles were made for irondome-1.1.0-py3-none-any.whl:
Publisher:
publish.yml on TheKingHippopotamus/IronDome-Bunker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
irondome-1.1.0-py3-none-any.whl -
Subject digest:
46c11e7e46e4824002364264e6bbc0ecc55998b711fb0a2f2dc1a2fd14c5c1f6 - Sigstore transparency entry: 1202761352
- Sigstore integration time:
-
Permalink:
TheKingHippopotamus/IronDome-Bunker@61c0638114e0c6ccd4845c6db83542d44f3eaa00 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/TheKingHippopotamus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@61c0638114e0c6ccd4845c6db83542d44f3eaa00 -
Trigger Event:
push
-
Statement type: