# 🔐 MD5 Bruteforce App with Flask, Redis, Docker Swarm & GitLab CI/CD Ce projet est une application de démonstration pour effectuer une attaque par bruteforce sur un hash MD5. Il inclut : - 🐍 Backend Flask - 🔥 Redis (cache de hash) - 🚀 Autoscaling intelligent via un script Python - 🧠 Monitoring CPU + réplicas - 🌐 Frontend HTML/JS - 🐳 Docker - 📦 CI/CD avec GitLab --- ## 📁 Structure du projet ``` docker-swarm-md5/ │ ├── backend/ # Code Flask backend │ ├── app.py # Application principale │ └── Dockerfile # Image Docker du backend │ ├── frontend/ # Interface utilisateur simple │ └── index.html │ ├── infra/ │ └── stack.yml # Fichier de déploiement Swarm │ ├── autoscaler/ │ └── autoscale.py # Script Python de scaling automatique │ ├── requirements.txt # Dépendances backend └── .gitlab-ci.yml # Pipeline CI/CD GitLab ``` --- ## 🛠️ Installation & Lancement ### 1. Construire l'image Docker du backend ```bash cd backend docker build -t md5_backend:latest . ``` --- ### 2. Initialiser Docker Swarm (si ce n’est pas encore fait) ```bash docker swarm init ``` --- ### 3. Déployer le stack ```bash cd infra docker stack deploy -c stack.yml md5_stack ``` --- ### 4. Lancer le script d'autoscaling Ce script surveille les requêtes et adapte le nombre de réplicas du backend : ```bash cd autoscaler pip install -r ../requirements.txt python autoscale.py ``` --- ### 5. Ouvrir le frontend Utilise un serveur local ou **Live Server (VS Code)** : ``` http://localhost:5500/frontend/index.html ``` --- ## 🚀 Endpoints API | Méthode | Endpoint | Description | |---------|------------------------|--------------------------------------------------| | GET | `/health` | Vérifie si l'app fonctionne | | POST | `/bruteforce` | Envoie un hash à casser | | GET | `/resolved` | Liste des hash résolus | | GET | `/resolved/` | Résultat d’un hash donné | | GET | `/request_count` | Nombre total de requêtes reçues | | DELETE | `/clear_cache` | Vide le cache Redis (hors compteur) | | GET | `/replicas` | Nombre de réplicas du backend (via Swarm) | | GET | `/cpu_usage` | Utilisation CPU du service (via `docker stats`) | ---