Skip to main content

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

PyPI Python License Downloads Open in Colab

Quick StartFeaturesSecurityDevelopersContributing



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

On first launch, choose your security level:

  • Biometric Only (Touch ID / Windows Hello / Fingerprint)
  • Biometric + Master Password (two-factor)
  • Master Password Only (traditional)

Two commands. You're protected.


Features

Security

  • AES-256 encryption via Fernet
  • Zero-knowledge — only salted PBKDF2 hash stored
  • 600,000 PBKDF2 iterations (OWASP 2023)
  • Hardware-linked keys — data tied to your machine
  • Brute force protection — adaptive lockouts
  • Auto-timeout — session expires after 30min
  • Touch ID / Windows Hello / Fingerprint support
  • Two-factor mode — biometric gate + master password
  • Emergency recovery key — printed once at setup, stored offline

Management

  • Generate strong, customizable passwords
  • Real-time strength evaluation
  • Search by domain or username
  • Encrypted backup & restore
  • Detailed logging (no secrets exposed)
  • Intuitive CLI navigation

Biometric Authentication

IronDome integrates with the native biometric stack on each platform — no third-party biometric services, no data transmitted.

Supported Platforms

Platform Mechanism Requirement
macOS Touch ID (LocalAuthentication framework) Touch ID sensor or Apple Watch
Windows Windows Hello (PIN, fingerprint, face) Windows Hello-compatible hardware
Linux fprintd (fingerprint daemon) Supported fingerprint reader + fprintd installed

Biometric is optional. If hardware is unavailable, IronDome falls back to Master Password Only mode automatically.

Two Modes

Biometric Only — A cryptographically random vault key is generated at setup and stored in the OS credential store (Keychain on macOS, Windows Credential Manager, libsecret on Linux). Biometric proof unlocks the credential store; the vault key never touches disk unprotected.

Biometric + Master Password — Biometric is a gate, not the key. A successful biometric check permits password entry; PBKDF2 still derives the vault key from your master password. This is the higher-assurance mode — compromising biometrics alone is not sufficient to decrypt the vault.

Recovery Key

When you enroll biometrics, IronDome generates a one-time 24-word recovery phrase (BIP-39 format). Write it down and store it offline. It is the only way to recover the vault if biometric hardware fails or is replaced. IronDome does not store the recovery key.

Re-authentication

Session re-authentication for sensitive operations (delete, export, backup) uses the same method you enrolled with. If you enrolled with Biometric + Master Password, both factors are required for re-authentication.


How It Works

First Launch → Choose Security Level
  ├── Biometric Only     → Touch ID / Face / Fingerprint
  │                            │
  │                      Random vault key generated
  │                            │
  │                      Stored in OS Keychain / Credential Store
  │                            │
  │                      Biometric proof unlocks key on each session
  │
  ├── Biometric + Password → Biometric Gate (must pass)
  │                            │
  │                      Master Password entry
  │                            │
  │                      PBKDF2-HMAC-SHA256 (600k iterations)
  │                            │
  │                      Vault key derived — biometric alone is insufficient
  │
  └── Password Only      → Username + Master Password
                                 │
                           PBKDF2-HMAC-SHA256 (600k iterations)
                                 │
                           Vault key derived (existing flow)

                    ──────────────── common path ────────────────

                    ┌─────────────────────────┐
                    │       Vault Key          │
                    └───────────┬─────────────┘
                                │
                 ┌──────────────┼──────────────┐
                 ▼                             ▼
    ┌────────────────────┐        ┌────────────────────┐
    │  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:

  1. Enter a master username (min 4 characters)
  2. Create a strong master password (min 8 characters)
  3. 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:


Requirements

  • Python 3.8+
  • cryptography library
  • keyring library (biometric / OS credential store integration)
  • Windows, macOS, or Linux

Optional — platform biometric support:

  • macOS: pyobjc-framework-LocalAuthentication (Touch ID hardware required)
  • Windows: Windows Hello is accessed via the native WinRT API — no extra package
  • Linux: fprintd system daemon + a supported fingerprint reader

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

King Hippopotamus
Created & maintained by King Hippopotamus
Built with security in mind. No data leaves your machine. Ever.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

irondome-2.1.0.tar.gz (42.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

irondome-2.1.0-py3-none-any.whl (45.2 kB view details)

Uploaded Python 3

File details

Details for the file irondome-2.1.0.tar.gz.

File metadata

  • Download URL: irondome-2.1.0.tar.gz
  • Upload date:
  • Size: 42.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for irondome-2.1.0.tar.gz
Algorithm Hash digest
SHA256 0a0bcd18761f01b3fc40610c8d101974aef65cb674b1ab0cf0d6f0216b77a239
MD5 14a9816652636514e7a7aca6115bce17
BLAKE2b-256 25c21ebfb8d4274660b8ed3f783154ade56859f3a94abfddf8b384e01c471e17

See more details on using hashes here.

Provenance

The following attestation bundles were made for irondome-2.1.0.tar.gz:

Publisher: publish.yml on TheKingHippopotamus/IronDome-Bunker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file irondome-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: irondome-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 45.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for irondome-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 23d5619495111a14eb01691df9c5985ad4270bf70708ca3c22bab791fa5489c0
MD5 9117a6bf906e2330c532334af3e08f9a
BLAKE2b-256 f82c5c84e70485e2e3d10849b9ca3b6f9a61650eec468c4ba9daa17ab115c908

See more details on using hashes here.

Provenance

The following attestation bundles were made for irondome-2.1.0-py3-none-any.whl:

Publisher: publish.yml on TheKingHippopotamus/IronDome-Bunker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page