A modern, enterprise-grade Windows desktop application for managing passwords with military-grade encryption and MySQL server synchronization. Built with C# and WPF, featuring AES-256-GCM encryption, multi-user support, and comprehensive password management capabilities.
- AES-256-GCM Encryption: Industry-standard encryption for all stored passwords
- BCrypt Password Hashing: Secure master password protection
- Multi-User Support: Individual user accounts with isolated data
- Session-Based Security: Master password required for each session
- SQLite + MySQL Support: Local storage with optional server synchronization
- Zero-Knowledge Architecture: Server never sees plain text passwords
- Modern Dark Theme: Professional gradient design with animations
- Tabbed Interface: Organized sections for different functions
- Login System: Secure user authentication with account creation
- Responsive Design: Fixed window size for consistent experience
- Animated Elements: Smooth transitions and visual effects
- Status Notifications: Real-time feedback for all operations
- User Management: Create accounts and secure login system
- Add Password: Securely store passwords for accounts
- View Passwords: List and retrieve stored passwords
- Generate OTP: Create strong passwords using HMAC-SHA256
- Wi-Fi Analysis: Real Windows netsh integration for Wi-Fi password analysis
- Server Synchronization: Optional MySQL server sync for multi-device access
- Password Reports: PDF/CSV export for password strength analysis
- MySQL Server Sync: Enterprise-grade server synchronization
- HTTP API Integration: RESTful API for secure server communication
- Bidirectional Sync: Sync between multiple devices
- Conflict Resolution: Automatic conflict detection and resolution
- Offline Support: Full functionality without internet connection
- Auto-Sync: Configurable automatic synchronization
- Windows 10/11
- .NET 9.0 SDK (download from Microsoft)
- MySQL Server (optional, for server synchronization)
- Clone or download the repository
- Navigate to the
IronArmourdirectory - Run the application:
cd IronArmour dotnet run
- Launch the application
- Create Account: Click "Create New Account" and set up your user account
- Login: Use your credentials to log into the application
- Set Master Password: Create a strong master password for your vault
- Access Vault: Use the tabs to manage your passwords
For enterprise synchronization across multiple devices:
-
Set up a MySQL database:
CREATE DATABASE ironarmour; CREATE USER 'ironarmour'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON ironarmour.* TO 'ironarmour'@'localhost';
-
Create a REST API server (Node.js example):
// server.js const express = require('express'); const mysql = require('mysql2/promise'); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); const app = express(); app.use(express.json()); const db = mysql.createPool({ host: 'localhost', user: 'ironarmour', password: 'your_password', database: 'ironarmour' }); // API endpoints for sync operations app.post('/api/sync', authenticateToken, async (req, res) => { // Handle password synchronization }); app.listen(3000, () => console.log('Iron Armour API running on port 3000'));
-
Configure Iron Armour:
- Go to Settings tab
- Set Database Type: "MySQL"
- Server URL: "http://localhost:3000"
- Auth Token: Your JWT token
- Test Connection and start syncing
- Create Account: Click "Create New Account" on login screen
- Login: Enter your username and password
- Master Password: Set up your vault's master password (required for encryption)
- Click the "Add Password" tab
- Enter the Account Name (e.g., Gmail, GitHub)
- Enter the Password to store
- Click "Add Password"
- Password is encrypted and stored locally
- Click the "View Passwords" tab
- Click "List Accounts" to see all stored accounts
- Click "View" next to any account to decrypt and see its password
- Passwords are decrypted on-demand for security
- Click the "Generate OTP" tab
- Enter Account Name, Username, and OTP Secret
- Set desired Password Length (8-32 characters)
- Click "Generate OTP Password"
- Strong, unique password generated using HMAC-SHA256
- Click the "Wi-Fi Analysis" tab
- Click "Analyze Wi-Fi Passwords"
- Application uses Windows
netshto retrieve saved Wi-Fi passwords - View network names, passwords, and security strength analysis
- Go to Settings tab
- Enable Sync checkbox
- Choose Database Type: "MySQL" for server sync
- Enter Server URL (API endpoint)
- Set Auth Token for authentication
- Configure sync direction and intervals
- Click "Test Connection" to verify setup
- Click "Sync Now" to synchronize with server
- Use "Export PDF Report" or "Export CSV Report" buttons
- Choose save location for the report
- Reports include password strength analysis
- PDF reports are automatically opened after creation
- Frontend: WPF (Windows Presentation Foundation) with modern UI
- Backend: C# .NET 9.0 with async/await patterns
- Database: SQLite (local) + MySQL (server sync) with Entity Framework Core
- Encryption: AES-256-GCM with PBKDF2 key derivation
- Hashing: BCrypt for user passwords, PBKDF2 for encryption keys
- Synchronization: HTTP REST API with JWT authentication
- User Authentication: BCrypt-hashed passwords with salt
- Master Password: Per-user vault encryption key
- Password Encryption: AES-256-GCM with unique salt per entry
- Key Derivation: PBKDF2 with 100,000 iterations
- Database Security: All sensitive data encrypted before storage
- Zero-Knowledge: Server synchronization without exposing plain text
- Session Security: Master password required for decryption operations
-- Users table (for multi-user support)
CREATE TABLE Users (
Id INT PRIMARY KEY AUTO_INCREMENT,
Username VARCHAR(255) UNIQUE NOT NULL,
HashedPassword VARCHAR(255) NOT NULL,
Salt VARCHAR(255) NOT NULL,
CreatedAt DATETIME NOT NULL
);
-- Master passwords table (per-user vault keys)
CREATE TABLE MasterPasswords (
Id INT PRIMARY KEY AUTO_INCREMENT,
UserId INT NOT NULL,
HashedPassword VARCHAR(255) NOT NULL,
Salt VARCHAR(255) NOT NULL,
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
-- Password entries table
CREATE TABLE PasswordEntries (
Id INT PRIMARY KEY AUTO_INCREMENT,
UserId INT NOT NULL,
Account VARCHAR(255) NOT NULL,
EncryptedPassword TEXT NOT NULL,
Nonce VARCHAR(255) NOT NULL,
Salt VARCHAR(255) NOT NULL,
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
-- Sync settings table
CREATE TABLE SyncSettings (
Id INT PRIMARY KEY AUTO_INCREMENT,
IsSyncEnabled BOOLEAN DEFAULT FALSE,
ServerUrl VARCHAR(500),
AuthToken VARCHAR(500),
DatabaseType VARCHAR(50) DEFAULT 'HTTP',
MySqlConnectionString TEXT,
SyncDirection INT DEFAULT 0,
AutoSyncEnabled BOOLEAN DEFAULT FALSE,
SyncIntervalMinutes INT DEFAULT 30,
ExcludedAccounts TEXT
);IronArmour/
βββ App.xaml # Application entry point
βββ App.xaml.cs
βββ MainWindow.xaml # Main application window (vault interface)
βββ MainWindow.xaml.cs
βββ LoginWindow.xaml # User authentication window
βββ LoginWindow.xaml.cs
βββ Models.cs # Entity Framework models
βββ VaultService.cs # Core business logic and encryption
βββ CryptoHelper.cs # Cryptographic utilities
βββ SyncManager.cs # Server synchronization logic
βββ MySqlSyncProvider.cs # MySQL server communication
βββ SyncModels.cs # Sync-related data models
βββ ReportGenerator.cs # PDF/CSV report generation
βββ IronArmour.csproj # Project configuration
βββ vault.db # SQLite database (created at runtime)
- Strong Master Password: Use a long, complex master password
- Regular Backups: Backup your
vault.dbfile regularly - Session Management: Passwords are only accessible during active sessions
- Local Storage: No data is sent to external servers
- Encryption: All passwords are encrypted with unique salts
- Application won't start: Ensure .NET 9.0 SDK is installed
- Login fails: Check username/password or reset database
- Database errors: Delete
vault.dband restart (will recreate database) - Sync connection fails: Verify server URL and authentication token
- Wi-Fi analysis fails: Requires administrator privileges for netsh access
- MySQL connection errors: Check connection string and server permissions
To completely reset the application:
- Close the application
- Delete the
vault.dbfile - Restart the application
- Create new account and set up master password
- Connection refused: Ensure MySQL server is running and accessible
- Authentication failed: Verify username/password in connection string
- Permission denied: Grant proper permissions to database user
- SSL errors: Configure SSL settings in connection string if required
- Slow startup: Database migration may be running (normal for first run)
- Sync delays: Check network connectivity and server response time
- Memory usage: Large password databases may require more RAM
This project is open-source. Feel free to use, modify, and distribute.
Contributions are welcome! Please feel free to submit issues and pull requests.
This application is for educational and personal use. Always follow your organization's security policies when handling sensitive data.
POST /api/auth
Content-Type: application/json
{
"username": "[email protected]",
"password": "userpassword"
}
Response:
{
"success": true,
"token": "jwt_token_here",
"userId": 123
}POST /api/sync
Authorization: Bearer jwt_token
Content-Type: application/json
{
"passwords": [
{
"id": "unique_id",
"account": "Gmail",
"encryptedPassword": "encrypted_data",
"nonce": "nonce_value",
"salt": "salt_value",
"lastModified": "2024-01-01T00:00:00Z",
"isDeleted": false
}
],
"lastSync": "2024-01-01T00:00:00Z"
}
Response:
{
"success": true,
"serverPasswords": [...],
"conflicts": [...],
"message": "Sync completed successfully"
}POST /api/devices/register
Authorization: Bearer jwt_token
Content-Type: application/json
{
"deviceId": "unique_device_id",
"deviceName": "My Laptop"
}
Response:
{
"success": true,
"message": "Device registered successfully"
}- OS: Windows 10 version 1903 or later
- RAM: 512 MB
- Storage: 50 MB free space
- Display: 1024x768 resolution
- OS: Windows 10/11
- RAM: 1 GB
- Storage: 100 MB free space
- Display: 1920x1080 resolution
- Network: Stable internet for sync features
- β Multi-user support with secure login system
- β MySQL server synchronization
- β Enhanced UI with animations and modern design
- β Password strength analysis and reporting
- β Real Windows Wi-Fi password analysis
- β PDF/CSV export functionality
- β Zero-knowledge server architecture
- Basic password vault functionality
- Local SQLite storage
- AES-256-GCM encryption
- Simple WPF interface
Built with β€οΈ using C# and WPF - Enterprise-Grade Password Management π‘οΈβ‘π