2017-02-28 7 views
0

Ich habe Probleme beim Erstellen eines Port-Scanners, der IP-Adressen und Ports gleichzeitig scannt. Der Port-Scan-Teil des Codes funktioniert einwandfrei, aber ich kann die IP-Adressen nicht korrekt hinzufügen und die Schleifen synchron laufen lassen. Ich frage den Benutzer, die ersten 3 Oktette einzugeben, dann verwendet der Code das vierte Oktett zum Scannen und verschiebt die Nummer weiter. Der Ausgang wird aussehen soll:Erstellen von IP- und Port-Scanner Python

IP 127.0.0.1-Port 22 geschlossen ist IP 127.0.0.1 Port 23 IP 127.0.0.1-Port 24 geschlossen geschlossen ist IP 127.0.0.2-Port 22 geschlossen IP 127,0 .0.2 Port 23 ist IP 127.0.0.2-Port 24 geschlossen ist geschlossen .... etc

Hier ist der Code so weit:

import socket 

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

    server = 'google.com' 

    portstart = int(input("Enter starting port number to scan: ")) 
    portend = int(input("Enter end port number to scan: ")) 
    octets = input("Enter the first 3 octets of an IP to scan:") 
    fourthoctet = 1 

    for portnum in range (portstart, portend): 
     try: 
     s.connect((server,portnum)) 
      print("port",portnum,"is open") 
     except: 
      print("port",portnum,"is closed") 
     for fourthoctet in range (1,256): 
      print("IP", octets,".",fourthoctet) 
+1

würde nicht Ihre Ports zuerst drucken dann im Grunde „IP' octets'. (1-255)“ –

+0

Ja, sie mit der Art und Weise darauf hin, dass Art und Weise drucken ich den Code jetzt haben. Die Anweisungen für diese Zuweisung lauten wie folgt: Beginnen Sie mit der Aufforderung, die ersten drei Oktette einer IP-Adresse einzugeben. Beispiel: 127.0.0 Erstellen Sie dann eine äußere Schleife, die das Scannen mehrerer IP-Adressen ermöglicht. Wir werden immer 255 verschiedene IP-Adressen scannen. Wir werden alle IP-Adressen scannen mit eingegebenen ersten drei Oktetts beginnen, zum Beispiel: 127.0.0.1 127.0.0.2 127.0.0.3 127.0.0.254 Mit anderen Worten, die wir für alle 254 vierten Oktett Möglichkeiten scannen –

+0

dann nicht das problem wirklich nur du hast deinen port und vacletoctet schleife in der falschen reihenfolge? –

Antwort

0

von Ihrem gewünschten Ausgang zu urteilen, sollte nicht die Schleife sehe so aus?

for fourthoctet in range (1,256): 
    for portnum in range (portstart, portend): 
    print("IP", octets,".",fourthoctet, end=" ") 
    try: 
     s.connect((server,portnum)) 
     print("port",portnum,"is open") 
    except: 
     print("port",portnum,"is closed") 
+0

Ja, danke, genau das habe ich gesucht. Ich bin neu bei Python, daher scheinen selbst die einfachen Antworten schwer zu finden. –

+0

@JamesPi Nun, es ist nicht genau Python-spezifische Syntax, sondern allgemeine Logik. Grundsätzlich laufen die inneren for-Schleifen zuerst (bis zur Vollendung) vor den äußeren, denken Sie daran. Das Gleiche gilt für jede andere Programmiersprache –