Python Security est un projet réalisé par notre groupe de 4 étudiants dans le cadre du cours de sécurité Python à l'EPITA.
Consulter la ==> documentation Sphinx <==
- ✅ Analyse réseau
- ✅ Scan de chaque machine du réseau
- ✅ Génération de rapport (HTML, JSON, CSV)
- ✅ Scan de port multithread
- ✅ Environnement Docker pour tests et exécution
- ✅ Simulation d'attaques avec
src/tools/pirate.py
python 3.x
et le contenu derequirements.txt
docker
docker-compose
- Clonez le dépôt :
git clone https://github.com/Sazard/python_security
cd python_security
pip install -r requirements.txt
Lancer directement python3 src/main.py --help
pour voir les options.
python3 src/main.py --help
usage: main.py [-h] [-i ip] [-n netmask] [-1 single_ip] [-f output_format] [-a analyse]
Basic network scanner
options:
-h, --help show this help message and exit
-i ip, --ip ip Host IP address
-n netmask, --netmask netmask
Subnet mask
-1 single_ip, --single-ip single_ip
Single IP address to scan
-f output_format, --output-format output_format
Output format
-a analyze, --analyse analyse
Analyse network traffic
Explication des options :
- -h, --help : Affiche l'aide et la liste des options disponibles.
- -i ip, --ip ip : Spécifie l'adresse IP de l'hôte.
- -n netmask, --netmask netmask : Spécifie le masque de sous-réseau.
- -1 single_ip, --single-ip single_ip : Spécifie une seule adresse IP à analyser.
- -f output_format, --output-format output_format : Choisissez le format de sortie pour les rapports ("html", "json", "csv").
- -a analyse, --analyse analyse : Analyse le trafic réseau. Utilisez -a "*" pour analyser toutes les interfaces réseau de la machine.
Pour lancer le projet dans un environnement Docker interactif, exécutez le script build_and_run.sh
:
./build_and_run.sh
... création des environnements réseau et build de l'image ...
Cela lancera un shell Bash dans l'image Docker, avec un environnement réseau créé automatiquement.
1. Avec docker : lancera un shell interactif dans un docker ayant l'IP 172.18.1.10 dans un réseau dédié
./build_and_run.sh
... création des environnements réseau et build de l'image ...
python3 src/main.py --help
usage: main.py [-h] [-i ip] [-n netmask] [-1 single_ip] [-f output_format] [-a analyse]
Basic network scanner
options:
-h, --help show this help message and exit
-i ip, --ip ip Host IP address
-n netmask, --netmask netmask
Subnet mask
-1 single_ip, --single-ip single_ip
Single IP address to scan
-f output_format, --output-format output_format
Output format
-a analyse, --analyse analyse
Analyse network traffic
python3 src/main.py --single-ip 172.18.1.3 -f <format>
Les rapports peuvent être générés aux formats nommés "html", "json", "csv" avec l'option "-f", "--format"
2. Sans docker : lancer le script directement sans docker
python3 src/main.py --help
usage: main.py [-h] [-i ip] [-n netmask] [-1 single_ip] [-f output_format] [-a analyse]
Basic network scanner
options:
-h, --help show this help message and exit
-i ip, --ip ip Host IP address
-n netmask, --netmask netmask
Subnet mask
-1 single_ip, --single-ip single_ip
Single IP address to scan
-f output_format, --output-format output_format
Output format
-a analyse, --analyse analyse
Analyse network traffic
python3 src/main.py --single-ip 65.21.239.190 -f <format>
Lancer dans deux consoles séparées - avec ou sans docker - si docker est utilisé il faut lancer deux instances différentes à partir de la commande docker run
et changer l'IP, par exemple :
1. Lancer un shell interactif automatiquement dans le conteneur 1 avec l'IP 172.18.1.10
./build_and_run.sh
... création des environnements réseau et build de l'image ...
- Première console dans le conteneur 1 (celui lancé avec
build_and_run.sh
):
python3 src/main.py -a "*"
Le script main.py
avec le mode "-a" (pour analyse réseau) sera en écoute sur toutes les interfaces réseau de la machine.
2. Lancer un shell interactif dans le conteneur 2 avec l'IP 172.18.1.12 en lançant la commande suivante :
docker run -v "$PWD/:/opt/python-securite" --name python-securite2 -it --ip 172.18.1.12 --network test_network python-securite:dev
- Deuxième console dans le conteneur 2 (celui lancé avec la commande):
python3 src/tools/pirate.py --target <target> --host <host>
Le script pirate.py
génère tout un tas d'attaques qui apparaitrons dans la première console. Etant donné que le docker est en root
il n'y a pas besoin de sudo pour lancer le script d'attaque.
Cela devrait être ainsi :
root
.
Utilisation sans docker :
sudo pip install -r requirements.txt # sinon problème d'import python
sudo python3 src/tools/pirate.py --target <target> --host <host>
Pour lancer les tests, exécutez le script tests/non_interactive_run.sh
:
./tests/non_interactive_run.sh
Ce script appelle directement pytest
et effectue le tout dans docker.
La documentation est générée à partir du code Python à l'aide de Sphinx et du thème Read the Docs. Pour générer la documentation, exécutez les commandes suivantes :
cd docs
make html
Vous pouvez ensuite accéder à la documentation en ouvrant le fichier docs/_build/html/index.html
dans votre navigateur ou y accéder via ce lien.
-
Premier jalon (05/04/2023) :
- POC fonctionnalités de base (sniffing : parseur de paquet, scan de port : finger printing) ✅
- Revue de code ✅
-
Second jalon (07/04/2023) :
- Documentation ✅
- Amélioration des fonctionnalités ✅
- Vérification du pipeline et des tests unitaires ✅
-
Troisième jalon (15/04/2023) :
- Revue documentation ✅
- Export des données dans les formats convenus ✅
- Environnement Docker complet pour les tests ✅
-
Quatrième jalon (20/04/2023) :
- PoC complet ✅
- Documentation de run complète ✅
- Stanislas MEDRANO
- Clément MILISAVLJEVIC
- Antoine REMY
- Nicolas SUTTER
Ce projet est réalisé dans le cadre du cours de sécurité Python à l'EPITA.