Enterprise-style security awareness and phishing simulation platform for small IT teams, MSPs, and security-conscious organizations.
Phishing accounts for 90%+ of initial breach vectors. Most awareness training platforms are expensive enterprise tools or basic slide decks. This platform bridges the gap — real phishing simulations, interactive training modules, and progress tracking without the enterprise price tag.
This platform directly supports security operations by:
- Reducing phishing success rates through hands-on training
- Improving user reporting — trained users spot and report threats faster
- Providing measurable metrics — track pass rates, detection rates, and identify high-risk users
- Supporting compliance requirements — document security awareness training completion
- Reducing triage workload — fewer successful phishes means fewer incidents to investigate
- User Authentication - Secure registration and login system
- Training Modules - Interactive lessons on:
- Phishing Basics
- Password Security
- Social Engineering
- Quiz System - Test knowledge after each module (70% to pass)
- Phishing Simulator - Real-world phishing email scenarios with:
- Multiple difficulty levels
- Timed challenges
- Instant feedback with red flag analysis
- Progress Tracking - Visual dashboards showing completion rates
- Admin Panel - Monitor team progress and phishing detection rates
- Modern, responsive UI
- Clean gradient theme
- Mobile-friendly layout
- Real-time statistics
- Python 3.8+
- pip
- Install dependencies:
pip install -r requirements.txt- Run the application:
python app.py- Access the platform:
Open your browser to: http://localhost:5000
Register an account - the first registered user automatically becomes admin.
- Register a new account
- Complete training modules in any order
- Take quizzes to test your knowledge (70% required to pass)
- Practice with phishing simulator scenarios
- Track your progress on the dashboard
- Login with admin credentials
- Access Admin Panel from navigation
- Monitor all user progress
- Review phishing simulation statistics
- Identify users who need additional training
security-training-platform/
├── app.py # Main Flask application
├── requirements.txt # Python dependencies
├── templates/ # HTML templates
│ ├── base.html # Base template
│ ├── index.html # Landing page
│ ├── login.html # Login page
│ ├── register.html # Registration page
│ ├── dashboard.html # User dashboard
│ ├── module.html # Training module view
│ ├── quiz.html # Quiz interface
│ ├── phishing.html # Phishing simulator list
│ ├── phishing_scenario.html # Individual scenario
│ ├── phishing_result.html # Scenario results
│ └── admin.html # Admin panel
├── static/
│ └── css/
│ └── style.css # Custom styles
└── security_training.db # SQLite database (created on first run)
- ID, username, email, password (hashed), is_admin, created_at
- ID, title, description, content (HTML), quiz_questions (JSON)
- ID, user_id, module_id, completed, score, completed_at
- ID, title, from_email, subject, body, red_flags (JSON), difficulty
- ID, user_id, scenario_id, identified_correctly, time_taken, timestamp
Edit the init_db() function in app.py to add modules:
{
'title': 'Your Module Title',
'description': 'Module description',
'content': '''<h3>Your HTML content here</h3>''',
'quiz_questions': [
{
'question': 'Your question?',
'options': ['Option 1', 'Option 2', 'Option 3', 'Option 4'],
'correct': 1 # Index of correct answer (0-based)
}
]
}Add to the scenarios list in init_db():
{
'title': 'Scenario Name',
'from_email': '[email protected]',
'subject': 'Email subject line',
'body': '''Email body content...''',
'red_flags': [
'Red flag 1',
'Red flag 2',
'Red flag 3'
],
'difficulty': 'Easy' # Easy, Medium, or Hard
}- Passwords are hashed using Werkzeug's security functions
- Session management with secure secret keys
- SQLite database for easy deployment
- Input validation on all forms
For production deployment:
- Change the secret key in
app.py - Set
debug=Falseinapp.run() - Use a production WSGI server (Gunicorn, uWSGI)
- Consider PostgreSQL instead of SQLite
- Add HTTPS/SSL certificates
- Implement rate limiting
- Add email notification features
- Set up automated database backups
- Email notifications for completed training
- Certificate generation upon completion
- More training modules (ransomware, data protection, GDPR)
- Scheduled phishing campaigns
- Detailed analytics and reporting
- Multi-language support
- Integration with LDAP/Active Directory
- Custom branding options
- Export reports to PDF/CSV
This project is open source and available for educational purposes.
Feel free to fork, modify, and expand this platform for your organization's needs!
For issues or questions, create an issue in the repository.
Built with: Python, Flask, SQLAlchemy, HTML/CSS/JavaScript
Perfect for: Small businesses, IT departments, security teams, MSPs






