A browser-first security toolkit packaged as a static site that runs anywhere GitHub Pages runs. The new Web Edition ships client-side password analysis, AES-GCM text/file encryption, and actionable security checklists—no backend required. The original JavaFX desktop project remains in src/ for reference as the Legacy Desktop Edition.
- Location:
docs/(configure GitHub Pages to serve from thedocsfolder) - Stack: Vanilla HTML/CSS/JavaScript, Web Crypto API,
zxcvbnvia CDN - Capabilities:
- Password strength heuristics with actionable suggestions
- Text encryption/decryption using AES-GCM + PBKDF2 (entirely in-browser)
- Experimental file encryption/decryption using local memory only
- Security workflow checklist for quick wins
- Deployment: Push to GitHub, enable Pages → Branch
master→ Folder/docs - Limitations: Browser sandboxes block raw port scanning and filesystem access beyond the selected files; those Desktop features stay in the legacy app.
Tip: Open
docs/index.htmllocally or on GitHub Pages to explore the interactive web dashboard. No build step is required.
The original comprehensive desktop cybersecurity analysis tool built with Java and JavaFX is still available in src/. It provides system security analysis through password scanning, port vulnerability detection, file encryption/decryption capabilities, and an overall security risk scoring system with a clean dashboard interface.
- Real-time Strength Scoring: Uses Zxcvbn4j library for entropy-based password strength analysis
- Pattern Detection: Identifies sequential characters, repeated patterns, common substitutions, and dictionary words
- Complexity Requirements: Validates minimum length, character types, and mixed case requirements
- Improvement Suggestions: Provides specific recommendations for password improvement
- Batch Analysis: Support for analyzing multiple passwords (UI ready)
- Multi-threaded Scanning: Efficient concurrent port scanning with configurable thread pools
- Customizable Ranges: Support for well-known ports (1-1024) or custom port ranges
- Service Detection: Identifies running services on open ports
- Vulnerability Assessment: Cross-references open ports with known vulnerabilities
- Performance Optimized: Configurable timeouts and progress tracking
- Scan Cancellation: Support for stopping long-running scans
- AES-256 Encryption: Symmetric encryption with 256-bit keys and secure key derivation
- RSA-2048 Support: Asymmetric encryption for key exchange and digital signatures
- Hybrid Approach: RSA encrypts AES keys for secure file sharing
- Key Management: Secure key generation, import/export, and password-based derivation
- Integrity Verification: HMAC-based file integrity checking
- Progress Tracking: Real-time progress for large file operations
- Overall Risk Scoring: Weighted scoring across all security categories
- Category Breakdown: Individual scores for password, network, encryption, and system configuration
- Visual Indicators: Color-coded risk levels and progress bars
- Recommendations Engine: Automated security improvement suggestions
- Historical Tracking: Score trends and analysis history
- Export Capabilities: Generate detailed security reports
- Java 17: Modern Java with latest language features
- JavaFX 17: Rich desktop UI framework with FXML for layout
- Maven: Project management and dependency management
- Passay: Password validation and pattern detection library
- Zxcvbn4j: Password strength estimation library
- SLF4J + Logback: Structured logging framework
- JUnit 5: Unit testing framework
JavaSecurityAnalyzer/
├── pom.xml # Maven configuration
├── src/
│ ├── main/
│ │ ├── java/com/securityanalyzer/
│ │ │ ├── MainApplication.java # Application entry point
│ │ │ ├── controller/ # UI controllers
│ │ │ │ └── MainController.java # Main application controller
│ │ │ ├── model/ # Data models
│ │ │ │ ├── PasswordAnalysis.java # Password analysis results
│ │ │ │ ├── PortScanResult.java # Port scan data
│ │ │ │ ├── EncryptionResult.java # Encryption operation results
│ │ │ │ └── SecurityScore.java # Overall security assessment
│ │ │ ├── service/ # Business logic services
│ │ │ │ ├── PasswordAnalysisService.java
│ │ │ │ ├── PortScanService.java
│ │ │ │ ├── EncryptionService.java
│ │ │ │ ├── SecurityScoringService.java
│ │ │ │ └── FileService.java
│ │ │ ├── util/ # Utility classes
│ │ │ │ ├── EventManager.java # Event system
│ │ │ │ └── ConfigManager.java # Configuration management
│ │ │ └── exception/ # Custom exceptions
│ │ │ ├── SecurityAnalysisException.java
│ │ │ ├── EncryptionException.java
│ │ │ ├── NetworkScanException.java
│ │ │ └── FileOperationException.java
│ │ └── resources/
│ │ ├── fxml/
│ │ │ └── main_dashboard.fxml # Main UI layout
│ │ ├── css/
│ │ │ └── main.css # Application styling
│ │ └── images/ # Application icons
│ └── test/
│ └── java/com/securityanalyzer/
│ └── PasswordAnalysisServiceTest.java
└── README.md
- Java Development Kit (JDK) 17 or higher
- Maven 3.6 or higher
- JavaFX SDK 17 (included via Maven dependencies)
- Git (for cloning the repository)
git clone <repository-url>
cd JavaSecurityAnalyzer# Compile the project
mvn clean compile
# Run tests
mvn test
# Package the application
mvn clean package# Using Maven
mvn javafx:run
# Using the generated JAR
java -jar target/java-security-analyzer-1.0.0.jar- Navigate to the Password Analysis tab
- Enter a password in the input field
- View real-time strength analysis with:
- Strength score (0-100)
- Pattern detection results
- Character complexity indicators
- Specific improvement suggestions
- Navigate to the Port Scanner tab
- Configure scan parameters:
- Target host (default: localhost)
- Port range (default: 1-1024)
- Connection timeout (default: 1000ms)
- Click Start Scan to begin
- Monitor progress and view results:
- Open/closed/filtered port status
- Service identification
- Vulnerability assessments
- Response times
- Navigate to the File Encryption tab
- Select a file using the Browse button
- Choose encryption algorithm:
- AES-256: Password-based symmetric encryption
- RSA-2048: Asymmetric encryption (requires key pair)
- Hybrid: RSA + AES for optimal security
- Enter a strong password (minimum 12 characters recommended)
- Click Encrypt or Decrypt to process the file
- View operation history and verification status
- Navigate to the Security Dashboard tab
- View overall security score and risk level
- Examine category breakdown:
- Password Security (30% weight)
- Network Security (40% weight)
- Encryption Practices (20% weight)
- System Configuration (10% weight)
- Review security recommendations
- Use quick actions for comprehensive analysis
- No Plain Text Storage: Passwords are hashed using SHA-256
- Pattern Detection: Identifies common weak patterns
- Entropy Calculation: Uses Zxcvbn algorithm for accurate strength scoring
- Real-time Analysis: Immediate feedback as you type
- Concurrent Scanning: Multi-threaded port scanning for efficiency
- Timeout Protection: Configurable timeouts prevent hanging
- Service Identification: Automatic detection of common services
- Vulnerability Database: Built-in vulnerability information
- Industry Standards: AES-256 and RSA-2048 algorithms
- Secure Key Derivation: PBKDF2 with 100,000 iterations
- Random IV Generation: Cryptographically secure initialization vectors
- Integrity Verification: HMAC-based message authentication
- Memory Protection: Sensitive data cleared from memory
- Secure Temporary Files: Safe handling of temporary files
- Error Handling: Comprehensive error handling without information leakage
- Audit Logging: Security operations logged (without sensitive data)
The application uses a configuration file stored in:
- Linux/macOS:
~/.security-analyzer/security-analyzer.properties - Windows:
%USERPROFILE%\.security-analyzer\security-analyzer.properties
# Port Scanner Settings
scanner.default.timeout=1000
scanner.default.startPort=1
scanner.default.endPort=1024
scanner.threadPoolSize=20
# Password Analysis Settings
password.minLength=8
password.requireUppercase=true
password.requireDigits=true
# Encryption Settings
encryption.defaultAlgorithm=AES_256
encryption.keyDerivationIterations=100000
# UI Settings
ui.windowWidth=1200
ui.windowHeight=800// Analyze password strength
PasswordAnalysis result = passwordAnalysisService.analyzePassword("MyPassword123!");
// Check if password meets minimum requirements
boolean isValid = passwordAnalysisService.meetsMinimumRequirements("MyPassword123!");// Scan ports on localhost
PortScanResult result = portScanService.scanPorts("localhost", 1, 1024);
// Scan with custom timeout
PortScanResult result = portScanService.scanPorts("example.com", 80, 443, 2000);// Encrypt file with AES
EncryptionResult result = encryptionService.encryptFileAES("file.txt", "password123");
// Generate RSA key pair
EncryptionResult keyResult = encryptionService.generateRSAKeyPair("mykeys");Run the test suite:
mvn test
# Run specific test class
mvn test -Dtest=PasswordAnalysisServiceTest
# Run with coverage
mvn clean test jacoco:report- Unit tests for all service classes
- Integration tests for encryption workflows
- Security tests for cryptographic operations
- Performance tests for port scanning
- Create model class in
model/package - Implement service in
service/package - Add UI components in
controller/and FXML - Update SecurityScoringService to include new module
- Add tests for the new functionality
- Follow Java naming conventions
- Use meaningful variable and method names
- Add Javadoc comments for public APIs
- Include null checks and error handling
- Log security operations appropriately
Application won't start
- Ensure Java 17+ is installed and JAVA_HOME is set
- Check JavaFX dependencies are properly configured
- Verify Maven dependencies were downloaded successfully
Port scanning not working
- Check firewall settings may block scanning
- Ensure target host is reachable
- Verify you have necessary permissions
Encryption operations failing
- Ensure sufficient disk space for encrypted files
- Check file permissions for source and destination
- Verify password strength meets minimum requirements
UI display issues
- Ensure JavaFX runtime is properly configured
- Check system supports JavaFX (graphics drivers)
- Verify CSS files are in the correct location
- Memory Usage: Application uses < 512MB during normal operation
- CPU Usage: Port scanning uses < 50% CPU during active scans
- Disk I/O: Optimized for large file encryption operations
- Network: Configurable concurrent scanning limits
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Never commit sensitive data or credentials
- Follow secure coding practices
- Add tests for security-critical functionality
- Document security assumptions and limitations
For support, please:
- Check the troubleshooting section above
- Review existing GitHub issues
- Create a new issue with detailed information
- Include system information (OS, Java version, etc.)
- Initial release
- Password analysis with real-time scoring
- Multi-threaded port scanning with vulnerability detection
- AES-256 and RSA-2048 file encryption
- Comprehensive security dashboard
- Event-driven architecture
- Extensive CSS styling and responsive design
This tool is designed for educational and defensive security purposes only. Users are responsible for:
- Using the tool only on systems they own or have explicit permission to test
- Securing encrypted files and managing keys appropriately
- Complying with applicable laws and regulations
- Understanding the limitations of automated security analysis
The developers are not responsible for misuse of this software.