README.md 2,59 ko
Newer Older
aw242765's avatar
aw242765 a validé
# 🔐 MD5 Bruteforce App with Flask, Redis, Docker Swarm & GitLab CI/CD
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
Ce projet est une application de démonstration pour effectuer une attaque par bruteforce sur un hash MD5.  
Il inclut :
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
- 🐍 Backend Flask
- 🔥 Redis (cache de hash)
- 🚀 Autoscaling intelligent via un script Python
- 🧠 Monitoring CPU + réplicas
- 🌐 Frontend HTML/JS
- 🐳 Docker 
- 📦 CI/CD avec GitLab
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
## 📁 Structure du projet
aw242765's avatar
aw242765 a validé

```
aw242765's avatar
aw242765 a validé
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
aw242765's avatar
aw242765 a validé
```

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
## 🛠️ Installation & Lancement
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
### 1. Construire l'image Docker du backend
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
```bash
cd backend
docker build -t md5_backend:latest .
```
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
### 2. Initialiser Docker Swarm (si ce n’est pas encore fait)
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
```bash
docker swarm init
```
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
### 3. Déployer le stack
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
```bash
cd infra
docker stack deploy -c stack.yml md5_stack
```
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
### 4. Lancer le script d'autoscaling
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
Ce script surveille les requêtes et adapte le nombre de réplicas du backend :
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
```bash
cd autoscaler
pip install -r ../requirements.txt
python autoscale.py
```
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
### 5. Ouvrir le frontend
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
Utilise un serveur local ou **Live Server (VS Code)** :
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
```
http://localhost:5500/frontend/index.html
```
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
## 🚀 Endpoints API
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
| 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/<hash>`     | 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`)  |
aw242765's avatar
aw242765 a validé

aw242765's avatar
aw242765 a validé
---
aw242765's avatar
aw242765 a validé