Créer un scanner de réseau en Python

PythonBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous apprendrez à créer un scanner de réseau à l'aide de Python. Le scanner de réseau utilisera l'outil en ligne de commande nmap pour scanner une adresse IP spécifiée et afficher les résultats dans une interface graphique utilisateur (GUI) en utilisant la bibliothèque Tkinter.

Exemple de GUI du scanner de réseau

🎯 Tâches

Dans ce projet, vous apprendrez :

  • Comment configurer le projet et installer les bibliothèques nécessaires
  • Comment importer les bibliothèques nécessaires pour la GUI et l'exécution de l'outil en ligne de commande nmap
  • Comment définir une fonction de scan pour récupérer l'adresse IP saisie par l'utilisateur et scanner le réseau
  • Comment créer la fenêtre principale de la GUI
  • Comment ajouter un champ de saisie pour l'adresse IP et un bouton "Scanner le réseau"
  • Comment créer une zone de texte pour afficher les résultats du scan
  • Comment exécuter le projet et effectuer un scan de réseau

🏆 Réalisations

Après avoir terminé ce projet, vous serez en mesure de :

  • Configurer un projet Python et installer des bibliothèques
  • Importer des bibliothèques et les utiliser dans un script Python
  • Créer une GUI à l'aide de Tkinter
  • Gérer les entrées utilisateur et déclencher des fonctions
  • Utiliser l'outil en ligne de commande nmap pour le scan de réseau

Configurer le projet

Créez un nouveau fichier Python et nommez-le network_scanner.py. Ouvrez le fichier dans un éditeur de code de votre choix.

cd ~/project
touch network_scanner.py

Ensuite, installez les outils en ligne de commande nmap, tkinter et python-nmap en utilisant la commande suivante :

sudo apt update
sudo apt-get install nmap -y
sudo apt-get install python3-tk -y
sudo pip install python-nmap
✨ Vérifier la solution et pratiquer

Importer les bibliothèques nécessaires

Au début du fichier, importez les bibliothèques requises : tkinter pour la GUI et subprocess pour exécuter l'outil en ligne de commande nmap.

import tkinter as tk
import subprocess
✨ Vérifier la solution et pratiquer

Définir la fonction de scan

Définissez une fonction appelée scan_network qui sera déclenchée lorsque le bouton "Scanner le réseau" sera cliqué. Cette fonction récupérera l'adresse IP saisie par l'utilisateur, effacera la zone de texte des résultats et exécutera la commande nmap pour scanner le réseau.

def scan_network():
    ip_address = entry_ip.get()
    result_text.delete(1.0, tk.END)
    result_text.insert(tk.END, f"Scanning network: {ip_address}\n\n")

    try:
        output = subprocess.check_output(["nmap", "-F", ip_address])
        result_text.insert(tk.END, output.decode("utf-8"))
    except subprocess.CalledProcessError:
        result_text.insert(tk.END, "An error occurred while scanning the network.")
✨ Vérifier la solution et pratiquer

Créer la fenêtre principale

Créez la fenêtre principale de la GUI en utilisant la classe Tk() de Tkinter.

window = tk.Tk()
window.title("Network Scanner")
✨ Vérifier la solution et pratiquer

Ajouter un champ de saisie et un bouton de scan

Créez une étiquette (label) et un champ de saisie pour que l'utilisateur puisse entrer l'adresse IP. Ensuite, créez un bouton "Scanner le réseau" qui appellera la fonction scan_network lorsqu'il sera cliqué.

label_ip = tk.Label(window, text="Enter IP Address:")
label_ip.pack()
entry_ip = tk.Entry(window)
entry_ip.pack()
scan_button = tk.Button(window, text="Scan Network", command=scan_network)
scan_button.pack()
✨ Vérifier la solution et pratiquer

Ajouter une zone de texte pour les résultats

Créez une zone de texte en utilisant la classe Text() de Tkinter. Cette zone de texte affichera les résultats du scan.

result_text = tk.Text(window)
result_text.pack()
✨ Vérifier la solution et pratiquer

Démarrer la boucle principale

Ajoutez la ligne suivante à la fin du fichier pour démarrer la boucle principale de la GUI :

window.mainloop()
✨ Vérifier la solution et pratiquer

Exécuter le projet

Enregistrez le fichier et exécutez-le à l'aide d'un interpréteur Python. La fenêtre de la GUI apparaîtra.

cd ~/project
python network_scanner.py

Entrez l'adresse IP que vous souhaitez scanner dans le champ de saisie et cliquez sur le bouton "Scan Network". Le scan du réseau sera effectué à l'aide de nmap, et les résultats seront affichés dans la zone de texte.

Fenêtre de la GUI du scanner de réseau
✨ Vérifier la solution et pratiquer

Résumé

Dans ce projet, vous avez appris à créer un scanner de réseau en Python en utilisant la bibliothèque Tkinter. Le scanner de réseau utilise l'outil en ligne de commande nmap pour scanner une adresse IP spécifiée. Les résultats sont affichés dans une interface graphique utilisateur (GUI), permettant aux utilisateurs de réaliser facilement des scans de réseau et de visualiser la sortie. Vous pouvez améliorer davantage le scanner de réseau en ajoutant plus de fonctionnalités et en améliorant l'interface utilisateur selon vos besoins.