Ce repository contient mon projet personnel de développement d'un RAT (Remote Access Trojan) éducatif dans le cadre du cours de sécurité Python de 4e année à l'ESGI. L'objectif est d'apprendre et de comprendre les mécanismes de sécurité informatique, les communications réseau sécurisées et les techniques de surveillance dans un contexte purement pédagogique.
Ce projet me permet d'acquérir des compétences dans :
- 🎙️ Enregistrement audio - Capture du microphone ✅ module existant
- ⌨️ Keylogger - Enregistrement des frappes clavier ✅ module existant
- 📷 Captures d'écran - Screenshots automatiques ✅ module existant
- 📸 Photos webcam - Capture depuis la caméra ✅ module existant
- 🌐 Informations réseau - Configuration système ✅ module existant
- � Transfert de fichiers - Upload/download de fichiers
- 🖥️ Shell distant - Exécution de commandes
- 🔍 Recherche de fichiers - Exploration du système
- 🔐 Extraction de hashes - SAM/shadow (Windows/Linux)
- 🖥️ Interface CLI - Prompt interactif
rat > - 🔐 Communication TLS - Chiffrement obligatoire des communications
- 🌐 Gestion multi-agents - Support de plusieurs clients simultanés
- � Monitoring - Surveillance des clients connectés
- �️ Gestion erreurs - Robustesse et help intégré
- Python 3.11+
- Poetry pour la gestion des dépendances
- Installer les dépendances avec Poetry :
poetry install- Activer l'environnement virtuel :
poetry shell- Installer les hooks pre-commit :
poetry run pre-commit installsrc/
├── rat/
│ ├── client/ # Modules client du RAT
│ │ ├── commands.py # ✅ NOUVEAU - Orchestrateur principal (6/12 commandes)
│ │ ├── client_audio_recorder.py # ✅ Enregistrement audio (adapté)
│ │ ├── keylogger.py # ✅ Capture clavier (adapté)
│ │ ├── client_screenshot.py # ✅ Captures d'écran (adapté)
│ │ ├── client_picture.py # ✅ Photos webcam (adapté)
│ │ └── client_info.py # ✅ Informations système (étendu)
│ └── server/ # ❌ Modules serveur (à développer)
├── tp1/ # TP1 - Analyse réseau
└── tp3/ # TP3 - Captcha solving
tests/ # ✅ Tests unitaires (50 tests passent)
├── conftest.py # ✅ Configuration automatique PYTHONPATH
├── rat/client/ # ✅ Tests des modules client adaptés
│ ├── test_help_command.py # 7 tests
│ ├── test_ipconfig_command.py # 10 tests
│ ├── test_keylogger.py # 10 tests
│ ├── test_client_screenshot.py # 8 tests
│ ├── test_client_photo.py # 8 tests
│ └── test_client_audio_recorder.py # 7 tests
docs/ # Documentation
- help : Liste des 12 commandes avec usage détaillé ✅
- ipconfig : Configuration réseau étendue ✅
- Tests unitaires complets (17 tests) ✅
- Architecture
RATCommandsavec dispatcher ✅
- keylogger : Adaptation du module existant ✅ (10 tests)
- screenshot : Adaptation du module existant ✅ (8 tests)
- webcam_snapshot : Adaptation du module existant ✅ (8 tests)
- record_audio : Adaptation du module existant ✅ (7 tests)
- Dépendances multimédia installées (pynput, pillow, opencv-python, sounddevice, scipy) ✅
- Total : 6/12 commandes client implémentées 🎯
Testez le système de commandes unifié :
# Test complet de toutes les commandes
poetry run python -c "
from src.rat.client.commands import RATCommands
rat = RATCommands()
# Test help
print('=== HELP ===')
result = rat.execute_command('help')
print(f'Status: {result[\"status\"]}')
# Test des commandes multimédia
for cmd in ['screenshot', 'keylogger', 'webcam_snapshot', 'record_audio']:
print(f'\\n=== {cmd.upper()} ===')
if cmd == 'keylogger':
result = rat.execute_command(cmd, duration=1)
elif cmd == 'record_audio':
result = rat.execute_command(cmd, duration=1)
else:
result = rat.execute_command(cmd)
print(f'Status: {result[\"status\"]}')
"✅ Implémentées (6/12) :
help: Liste des commandes avec usageipconfig: Configuration réseau complètekeylogger: Enregistrement clavier avec duréescreenshot: Capture d'écran avec sauvegardewebcam_snapshot: Photo webcam avec sauvegarderecord_audio: Enregistrement audio avec durée
🔄 En cours d'implémentation (0/12) : Toutes les commandes ont leur structure créée mais retournent des messages "À implémenter"
❌ À implémenter (6/12) :
webcam_stream: Stream vidéo temps réelshell: Shell interactif bash/cmdsearch: Recherche de fichiersdownload: Téléchargement fichiers victime → serveurupload: Envoi fichiers serveur → victimehashdump: Extraction SAM/shadow
❌ Serveur (0/6 points) : Toute la partie serveur reste à développer
Ce repository contient également d'autres travaux pratiques :
# TP1 - Analyse réseau
poetry run python -m src.tp1.main
# TP3 - Résolution de captcha
poetry run python -m src.tp3.mainExécuter la suite de tests complète :
poetry run pytestTests spécifiques des modules RAT :
# Tests des commandes client (50 tests)
poetry run pytest tests/rat/client/ -v
# Tests d'un module spécifique
poetry run pytest tests/rat/client/test_help_command.py -v
poetry run pytest tests/rat/client/test_keylogger.py -vAvec couverture :
poetry run pytest --cov=src --cov-report=htmlÉtat actuel : ✅ 50/50 tests passent pour les 6 commandes implémentées
Le projet utilise des outils de qualité de code configurés :
- ruff : Linting et formatage
- autoflake : Suppression imports inutiles
- pre-commit : Hooks de validation
poetry run pre-commit installCommandes à implémenter :
- webcam_stream : Extension du module webcam pour stream continu
- shell : Interface bash/cmd avec subprocess
- search : Recherche de fichiers avec patterns
- download : Transfert fichiers victime → serveur
- upload : Transfert fichiers serveur → victime
- hashdump : Extraction SAM (Windows) / shadow (Linux)
# Tester une commande spécifique après implémentation
poetry run python -c "
from src.rat.client.commands import RATCommands
rat = RATCommands()
result = rat.execute_command('shell', command='ls -la')
print(result)
"Une fois les 12 commandes client terminées (10/10 points), développement du serveur avec :
- Socket TCP sécurisé (TLS)
- Interface CLI
rat > - Gestion multi-agents
- Communication bidirectionnelle
Voir le fichier PLAN_IMPLEMENTATION.md pour mon planning détaillé.
Période : 10 mai - 31 juillet 2025 (weekends uniquement) Développement : Solo
Ce projet personnel est développé exclusivement dans un cadre éducatif pour :
- Mon apprentissage des mécanismes de sécurité informatique
- Ma compréhension des techniques de communication réseau sécurisée
- L'étude des vulnérabilités et méthodes de protection
- ✅ Tests uniquement sur mes propres machines
- ✅ Environnement de développement isolé et contrôlé
- ✅ Respect absolu de la vie privée et des lois
- ❌ Aucune utilisation malveillante
- ❌ Aucun partage ou distribution du code
- ❌ Aucun déploiement en dehors du cadre éducatif
Étudiant : Spero KOTIN & Lauren EDOH COFFI Formation : ESGI 4e année - Cours de sécurité Python Objectif : Projet personnel d'apprentissage de la cybersécurité
Projet éducatif personnel - ESGI 2025