Ce projet implémente un serveur et un client de communication socket pour l'exécution à distance de commandes système via un canal réseau. Le serveur écoute sur un port spécifique et permet l'exécution de commandes, ainsi que le lancement de processus via un client connecté. Le client peut interagir avec le serveur pour envoyer des commandes et recevoir les résultats.
- Le serveur écoute les connexions entrantes sur un port défini (
6666par défaut). - Il permet l'exécution de commandes système (comme
ls,pwd, etc.) envoyées par le client. - Il gère une commande spéciale
bomb, qui tente de lancer un fork (processus parallèle) sur le serveur. Ce processus peut entraîner des erreurs selon l'environnement d'exécution. - Le serveur renvoie les résultats ou les erreurs au client.
- Python 3.x
- Accès au réseau pour que le serveur et le client puissent se connecter.
-
Clonez ou téléchargez le dépôt contenant les fichiers
server.pyetclient.py. -
Assurez-vous que vous avez Python 3 installé sur votre machine.
Pour démarrer le serveur, exécutez le fichier server.py :
python3 server.pyLe serveur attendra des connexions sur le port 6666. Il peut être configuré pour écouter sur un autre port en modifiant la variable evil_socket_port.
Le client devra se connecter au serveur en utilisant l'adresse IP et le port du serveur. Exécutez le fichier client.py et entrez l'adresse IP du serveur lorsque cela vous est demandé.
python3 client.pyAprès la connexion, vous pourrez envoyer des commandes système au serveur. Tapez les commandes et appuyez sur Entrée pour les envoyer. Si vous souhaitez quitter, tapez exit.
bomb: Lance un processus fork. Cette commande peut entraîner une erreur selon l'environnement.- Toute autre commande : Les commandes système valides seront exécutées, et la sortie sera renvoyée au client.
- Exécutez le serveur sur une machine avec
python3 server.py. - Exécutez le client sur une autre machine avec
python3 client.py. - Connectez-vous au serveur en entrant l'adresse IP.
- Envoyez des commandes via le client. Par exemple, tapez
lspour afficher les fichiers du répertoire courant.
Avertissement : Ce projet est un simple exercice de démonstration et ne doit pas être utilisé en production. L'exécution de commandes arbitraires via des sockets peut présenter des risques de sécurité importants. Veuillez ne pas utiliser ce code dans des environnements non contrôlés ou accessibles au public.
Les contributions sont les bienvenues ! Si vous souhaitez améliorer le projet, veuillez forker le dépôt, créer une branche, et soumettre une pull request.