A production-ready, secure password manager built with Java and Maven.
- AES-GCM Encryption: Military-grade encryption with 256-bit keys
- PBKDF2 Key Derivation: Industry-standard key stretching with salt
- Secure Password Input: Passwords entered via console (no echo)
- Password Strength Validation: Built-in password strength checker
- Memory Security: Secure password clearing from memory
- Google Drive Backup: Automatic and manual backups to Google Drive
- OAuth2 Authentication: Secure Google Drive integration
- File Synchronization: Upload/download encrypted vault files
- Add/Update/Delete: Full CRUD operations for password entries
- Entry Search: Quick lookup of stored credentials
- Batch Operations: Delete all entries at once
- Auto-backup: Automatic backups after modifications
- Configuration Management: YAML-based configuration
- Comprehensive Logging: Detailed operation logging
- Error Handling: Robust exception management
- Cross-platform: Works on Linux, macOS, Windows
- Java 21 or higher
- Maven 3.6 or higher
- Google Drive account (for cloud features)
# Clone the repository
git clone <repository-url>
cd pandora
# Build the application
mvn clean compile package
# The executable JAR will be created at:
# target/pandora-1.0-SNAPSHOT.jarBefore executing commands below make sure to edit the pandora file that is in the project root directory and copy it to your /usr/local/bin/ directory and make it executable with chmod +x pandora
# Initialize vault
pandora init
# Add new entry
pandora add
# List all entries
pandora list
# Get specific entry
pandora get <entry-name>
# Update existing entry
pandora update <entry-name>
# Delete entry
pandora delete <entry-name>
# Delete all entries
pandora delete --all# Upload to Google Drive
pandora upload
# Download from Google Drive
pandora download <file-id>
# Manage backups
pandora backup list
pandora backup create
pandora backup restore <backup-file># Check password strength
pandora security check <password>
# Generate strong password
pandora security generate
# Security audit
pandora security auditEdit ~/.pandora/config.yaml to customize behavior:
# Pandora Configuration File
# This file controls behavior of Pandora
# Pandora Settings
pandora_directory: "${user.home}/.pandora"
backup_directory: "${user.home}/.pandora/backups"
# Backup Settings
backup_retention_days: 30
auto_backup_enabled: true
# Cloud Storage Settings
cloud_provider: "google-drive"
cloud_settings:
default_folder: "Pandora Backups"
encryption_enabled: true
# Security Settings
password_min_length: 12
require_special_chars: true
require_numbers: true
require_uppercase: true
# Logging Settings
log_level: "INFO"
log_file: "${user.home}/.pandora/logs/pandora.log"# Clean build
mvn clean
# Compile only
mvn compile
# Run tests
mvn test
# Package application
mvn package
# Skip tests during packaging
mvn package -DskipTests
# Create shaded JAR with all dependencies
mvn clean package- Jackson 2.20.1: JSON serialization/deserialization
- BouncyCastle 1.78: Cryptography provider
- Picocli 4.7.6: Command-line interface
- Google APIs: Drive integration
- SnakeYAML 2.4: Configuration file support
- Key Generation: PBKDF2 with HMAC-SHA256, 100,000 iterations
- Encryption: AES-256-GCM with 96-bit authentication tag
- IV Generation: Cryptographically secure random IV per encryption
- Salt Storage: Base64 encoded salt stored with encrypted data
- β No passwords in memory longer than necessary
- β Secure random number generation
- β Constant-time comparison for sensitive data
- β Memory clearing after use
- β Input validation and sanitization
- β Comprehensive error handling
-
Enable Google Drive API
- Go to Google Cloud Console
- Enable Drive API
- Create OAuth 2.0 credentials
- Download
credentials.json
-
Configure Application
- Place
credentials.jsonin project root or~/.pandora/ - Application will auto-copy credentials during first run
- Place
-
Backup Operations
- Automatic backups after each modification
- Manual upload/download operations
- Encrypted backup files with timestamps
Pandora provides comprehensive logging for debugging and auditing:
# Log location
~/.pandora/logs/pandora.log
# Log levels
- ERROR: Critical errors
- WARN: Warning messages
- INFO: General information
- DEBUG: Detailed debugging"Google Drive credentials file not found"
- Ensure
credentials.jsonexists in~/.pandora/ - Or place it in project root (will be auto-copied)
- Verify Google Drive API is enabled
"Failed to decrypt vault file"
- Verify master password is correct
- Check if vault file is corrupted
- Ensure vault file permissions are correct
"Permission denied"
- Check file permissions on
~/.pandora/ - Ensure Java has read/write access
- Verify directory ownership
Enable debug logging in config.yaml:
logging:
log_level: "DEBUG"This project is licensed under the MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
For issues, questions, or contributions:
- Create an issue in the repository
- Check existing issues for solutions
- Review documentation before asking questions
π Pandora - Your Secure Digital Vault