Erstellen eines Netzwerk-Scanners in Python

PythonBeginner
Jetzt üben

Einführung

In diesem Projekt lernen Sie, wie Sie einen Netzwerkscanner mit Python erstellen. Der Netzwerkscanner nutzt das Befehlszeilentool nmap, um eine angegebene IP-Adresse zu scannen und die Ergebnisse in einer grafischen Benutzeroberfläche (GUI) mithilfe der Tkinter-Bibliothek anzuzeigen.

Beispiel einer Netzwerkscanner-GUI

🎯 Aufgaben

In diesem Projekt lernen Sie:

  • Wie Sie das Projekt einrichten und die erforderlichen Bibliotheken installieren
  • Wie Sie die erforderlichen Bibliotheken für die GUI und die Ausführung des Befehlszeilentools nmap importieren
  • Wie Sie eine Scanning-Funktion definieren, um die vom Benutzer eingegebene IP-Adresse abzurufen und das Netzwerk zu scannen
  • Wie Sie das Hauptfenster der GUI erstellen
  • Wie Sie ein Eingabefeld für die IP-Adresse und eine Schaltfläche "Netzwerk scannen" hinzufügen
  • Wie Sie einen Textbereich erstellen, um die Scanergebnisse anzuzeigen
  • Wie Sie das Projekt ausführen und Netzwerkscans durchführen

🏆 Errungenschaften

Nach Abschluss dieses Projekts können Sie:

  • Ein Python-Projekt einrichten und Bibliotheken installieren
  • Bibliotheken importieren und in einem Python-Skript verwenden
  • Eine GUI mit Tkinter erstellen
  • Benutzer-Eingaben verarbeiten und Funktionen auslösen
  • Das Befehlszeilentool nmap für Netzwerkscans nutzen

Projekt einrichten

Erstellen Sie eine neue Python-Datei und benennen Sie sie network_scanner.py. Öffnen Sie die Datei in einem Code-Editor Ihrer Wahl.

cd ~/project
touch network_scanner.py

Installieren Sie anschließend das Befehlszeilentool nmap, tkinter und python-nmap mit dem folgenden Befehl:

sudo apt update
sudo apt-get install nmap -y
sudo apt-get install python3-tk -y
sudo pip install python-nmap
✨ Lösung prüfen und üben

Importieren Sie die erforderlichen Bibliotheken

Am Anfang der Datei importieren Sie die erforderlichen Bibliotheken: tkinter für die GUI und subprocess für die Ausführung des Befehlszeilentools nmap.

import tkinter as tk
import subprocess
✨ Lösung prüfen und üben

Definieren Sie die Scanning-Funktion

Definieren Sie eine Funktion namens scan_network, die ausgelöst wird, wenn die Schaltfläche "Netzwerk scannen" geklickt wird. Diese Funktion ruft die vom Benutzer eingegebene IP-Adresse ab, löscht den Ergebnistextbereich und führt den nmap-Befehl aus, um das Netzwerk zu scannen.

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.")
✨ Lösung prüfen und üben

Erstellen Sie das Hauptfenster

Erstellen Sie das Hauptfenster der GUI mit der Tk()-Klasse aus Tkinter.

window = tk.Tk()
window.title("Network Scanner")
✨ Lösung prüfen und üben

Fügen Sie ein Eingabefeld und einen Scan-Button hinzu

Erstellen Sie eine Beschriftung (Label) und ein Eingabefeld, damit der Benutzer die IP-Adresse eingeben kann. Erstellen Sie dann eine Schaltfläche "Netzwerk scannen", die die scan_network-Funktion aufruft, wenn sie geklickt wird.

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()
✨ Lösung prüfen und üben

Fügen Sie einen Ergebnistextbereich hinzu

Erstellen Sie einen Textbereich mit der Text()-Klasse aus Tkinter. Dieser Textbereich zeigt die Scanergebnisse an.

result_text = tk.Text(window)
result_text.pack()
✨ Lösung prüfen und üben

Starten Sie die Hauptschleife

Fügen Sie am Ende der Datei die folgende Zeile hinzu, um die Hauptschleife der GUI zu starten:

window.mainloop()
✨ Lösung prüfen und üben

Führen Sie das Projekt aus

Speichern Sie die Datei und führen Sie sie mit einem Python-Interpreter aus. Das GUI-Fenster wird erscheinen.

cd ~/project
python network_scanner.py

Geben Sie die IP-Adresse, die Sie scannen möchten, in das Eingabefeld ein und klicken Sie auf die Schaltfläche "Scan Network". Der Netzwerkscan wird mit nmap durchgeführt, und die Ergebnisse werden im Textbereich angezeigt.

Netzwerk-Scanner GUI-Fenster
✨ Lösung prüfen und üben

Zusammenfassung

In diesem Projekt haben Sie gelernt, wie Sie mit der Tkinter-Bibliothek einen Netzwerk-Scanner in Python erstellen können. Der Netzwerk-Scanner nutzt das Befehlszeilentool nmap, um eine angegebene IP-Adresse zu scannen. Die Ergebnisse werden in einer grafischen Benutzeroberfläche (Graphical User Interface, GUI) angezeigt, sodass Benutzer einfach Netzwerkscans durchführen und die Ausgabe anzeigen können. Sie können den Netzwerk-Scanner weiter verbessern, indem Sie je nach Ihren Anforderungen weitere Funktionen hinzufügen und die Benutzeroberfläche verbessern.