pip install -r requirements.txtWindows:
# Download and install from: https://github.com/UB-Mannheim/tesseract/wiki
# Add to PATH: C:\Program Files\Tesseract-OCRmacOS:
brew install tesseractLinux:
sudo apt-get install tesseract-ocrpython train_model.pypython backend_complete.pypython test_backend.pyCREATE TABLE users (
id INTEGER PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(128) NOT NULL,
profile_image VARCHAR(100) DEFAULT 'default_profile.jpg',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE scan_history (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL,
input_type VARCHAR(10), -- 'URL' or 'Image'
input_value TEXT,
prediction VARCHAR(20), -- 'Legitimate' or 'Phishing'
confidence_score FLOAT,
risk_score INTEGER,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users (id)
);POST /api/register- User registrationPOST /api/login- User loginPOST /api/logout- User logout
POST /api/analyze-url- URL phishing detectionPOST /api/analyze-image- Image OCR analysis
GET /api/history- User scan historyGET /api/dashboard-stats- Dashboard statisticsPUT /api/update-profile- Profile management
GET /api/health- Health check
1. User Registration
โโโ Validate input data
โโโ Hash password with bcrypt
โโโ Save to database
โโโ Return user data
2. User Login
โโโ Find user by username/email
โโโ Verify password hash
โโโ Create session
โโโ Return user data
3. URL Analysis
โโโ Validate URL format
โโโ Extract 7 features
โโโ Scale features
โโโ Predict with Random Forest
โโโ Calculate risk score
โโโ Save to database
โโโ Return results
4. Image Analysis
โโโ Upload and save file
โโโ Extract text with OCR
โโโ Analyze text for keywords
โโโ Calculate risk score
โโโ Save to database
โโโ Return results
5. History Tracking
โโโ Query user scans
โโโ Apply filters
โโโ Paginate results
โโโ Return statistics
features = [
url_length, # Total URL length
num_dots, # Number of '.' characters
has_at_symbol, # Binary: @ present (1/0)
has_https, # Binary: HTTPS (1/0)
num_subdomains, # Number of subdomains
count_special_chars, # Special characters count
suspicious_count # Phishing keywords count
]- Text Extraction: Use pytesseract to extract text
- Keyword Analysis: Scan for 40+ phishing keywords
- Risk Calculation: Score based on keyword density
- Classification: High Risk/Suspicious/Low Risk
phishing_keywords = [
'login', 'verify', 'update', 'secure', 'bank',
'account', 'password', 'payment', 'transaction',
'urgent', 'immediate', 'suspended', 'blocked'
]from werkzeug.security import generate_password_hash, check_password_hash
# Hash password
password_hash = generate_password_hash(password)
# Verify password
is_valid = check_password_hash(password_hash, provided_password)from flask_login import LoginManager, login_user, logout_user
# Login user
login_user(user)
# Logout user
logout_user()# URL validation
def validate_url(url):
if not url:
return False
if not url.startswith(('http://', 'https://')):
url = 'https://' + url
return url
# File validation
allowed_extensions = {'png', 'jpg', 'jpeg', 'gif', 'bmp'}with open('aegis_model.pkl', 'rb') as f:
model_data = pickle.load(f)
rf_model = model_data['model']
scaler = model_data['scaler']
feature_names = model_data['feature_names']# Extract features
features = extractor.extract_features(url)
# Scale features
features_scaled = scaler.transform(features.reshape(1, -1))
# Make prediction
prediction_proba = rf_model.predict_proba(features_scaled)[0]
prediction = 'Phishing' if prediction_proba[1] > 0.5 else 'Legitimate'
confidence = max(prediction_proba)
# Calculate risk score
risk_score = int(min(confidence * 100, 100)) if prediction == 'Phishing' else int((1 - confidence) * 50)python test_backend.py- โ User registration and login
- โ URL analysis (legitimate and phishing)
- โ Image analysis (OCR)
- โ History tracking
- โ Dashboard statistics
- โ Profile management
- โ Error handling
# Register user
curl -X POST http://localhost:5000/api/register \
-H "Content-Type: application/json" \
-d '{"username":"test","email":"test@example.com","password":"testpass123"}'
# Login
curl -X POST http://localhost:5000/api/login \
-H "Content-Type: application/json" \
-d '{"username":"test","password":"testpass123"}'
# Analyze URL
curl -X POST http://localhost:5000/api/analyze-url \
-H "Content-Type: application/json" \
-d '{"url":"https://www.google.com"}'# config.py
class ProductionConfig:
SECRET_KEY = 'your-production-secret-key'
SQLALCHEMY_DATABASE_URI = 'postgresql://user:pass@localhost/aegisai'
SESSION_COOKIE_SECURE = True
WTF_CSRF_ENABLED = Trueexport SECRET_KEY='your-secret-key'
export DATABASE_URL='sqlite:///aegisai.db'
export FLASK_ENV='production'FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "backend_complete.py"]-
Model not found
python train_model.py
-
OCR dependencies missing
pip install pytesseract pillow # Install Tesseract OCR system package -
Database connection error
# Delete database and restart rm aegisai.db python backend_complete.py -
Port already in use
# Kill process on port 5000 lsof -ti:5000 | xargs kill
# Enable debug mode
app.run(debug=True, host='0.0.0.0', port=5000)- Load model once at startup (not in each request)
- Use pickle for fast serialization
- Add indexes on frequently queried columns
- Use connection pooling for production
- Cache model predictions
- Cache user sessions
- Use Redis for distributed caching
- Rate limiting on API endpoints
- Email notifications for high-risk detections
- Advanced image analysis with CNN
- Real-time URL scanning
- API key authentication
- Multi-language support
- Advanced threat intelligence
AegisAI Backend - Complete, production-ready phishing detection system! ๐ก๏ธ