Erstellen Sie einen Port-Scanner in Python

Manav Narula 21 Juni 2023
Erstellen Sie einen Port-Scanner in Python

Dieses Tutorial zeigt, wie man einen Port-Scanner in Python erstellt.

Erstellen Sie einen Port-Scanner in Python

Lassen Sie uns zunächst die Grundlagen eines Ports lernen. Ein Port ist ein Endpunkt in einem Netzwerk, über den einige Informationen zwischen einem Server und einem Client ausgetauscht werden.

Ein Port-Scanner ist eine einfache Anwendung, mit der wir feststellen können, welche Ports auf einem bestimmten Host für die Kommunikation geöffnet sind.

Mit einem Port-Scanner können wir feststellen, welche Ports für Verbindungen geöffnet sind, und wissen über die laufenden Dienste der Ports Bescheid. Diese Art von Tool hilft, die Sicherheitsmaßnahmen gegen potenzielle Penetrationsangriffe zu testen.

Informationen werden über das Internet ausgetauscht, im Allgemeinen unter Verwendung der TCP- und UDP-Protokolle. Ports reichen in diesen Protokollen von 0 bis 65535 und sind in drei Bereiche unterteilt.

Die Systemports reichen von 0 bis 1023, Benutzerports von 1024 bis 49151, und jeder Port darüber ist ein dynamischer Port.

Mit einem Portscanner prüfen wir jeden Port einzeln auf Verbindung und ob die Verbindung erfolgreich ist. Lassen Sie uns diskutieren, wie Sie dies in Python erreichen können.

  • Wir importieren das Modul socket.
  • Wir erstellen ein socket-Objekt und versuchen, eine Verbindung zu Ports für einen bestimmten Host-Server herzustellen.
  • Wir werden eine for-Schleife verwenden, um über den Bereich der Ports zu iterieren und versuchen, eine Verbindung für jeden Port einzeln herzustellen.
  • Wir erstellen eine Funktion zum Testen der Verbindung und verwenden einen try- und außer-Block, um True und False basierend auf dem Verbindungserfolg zurückzugeben.
  • Im Block try versuchen wir, eine Verbindung mit der Funktion socket.connect() herzustellen. Bei erfolgreicher Verbindung gibt der Block True zurück.
  • Wenn die Verbindung nicht erfolgreich ist, wird eine Ausnahme ausgelöst, im Block außer abgefangen und False zurückgegeben.

Dies ist im folgenden Code implementiert.

import socket

t = "https://www.hackthissite.org/"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


def check_port(port):
    try:
        c = s.connect((t, port))
        return True
    except:
        return False


for a in range(200):
    if check_port(a):
        print("Port", a)

Der obige Code überprüft die ersten 200 Ports, um festzustellen, ob Ports für die Verbindung geöffnet sind. Beachten Sie, dass wir nur nach Hosts suchen sollten, die uns dies erlauben.

Wir können unseren einfachen Port-Scanner modifizieren und einige aufregende Funktionen hinzufügen. Wir können die Funktion socket.settimeout() verwenden, um das Timeout festzulegen, indem wir die Zeit in der Funktion angeben.

Die Verbindung wird abgebrochen, wenn sie länger dauert als durch diese Funktion eingestellt.

Eine weitere Möglichkeit, die Leistung des Port-Scanners in Python zu verbessern, ist die Verwendung des Konzepts des Multithreading. Das threads-Modul in Python kann verwendet werden, um Threads zu erstellen und zu verwalten, die der Anwendung mehr Parallelität verleihen und die Ausführungszeit verbessern können.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn