Nun, wer kennt das Problem nicht selbst. Habe ich ein offenes Scheunentor? Welche Ports sind sichtbar, welche erreichbar. Wie abgesichert bin ich wirklich?

Python bietet hier eine sehr einfache Lösung um das schnell und unkompliziert zu testen. Wir bauen uns eben “janz schnell” einen Portscanner in Python.

Für das Skript nutzen wir das Python Paket Socket. Welches im weiteren Verlauf noch ausführlicher beschrieben wird.

#!usr/bin/python

#port_scanner.py

import socket

t_host = str(raw_input("Enter the host to be scanned: "))   # Target Host, www.example.com
t_ip = socket.gethostbyname(t_host)     # Resolve t_host to IPv4 address

print t_ip      # Print the IP address

while 1:
  t_port = int(raw_input("Enter the port: "))	   # Enter the port to be scanned
  
  try:
    sock = socket.socket()			
    res = sock.connect((t_ip, t_port))
    print "Port {}: Open" .format(t_port)
    sock.close()
  except:
    print "Port {}: Closed" .format(t_port)
  
print "Port Scanning complete"

Wenn ihr  das Skript hier ausführt, werdet ihr aufgefordert, einen Hostnamen einzugeben (Beispiel hier: www.example.com), und desweiteren fragt es weiter nach Portnummern, die ihr einscannen möchtet.

Um das Skript zu beenden, drücken ihr ganz einfach Strg + C.

Wie das Ergebnis des Scanns dann entsprechend aussieht?:

Ich selber habe dies Skript in meinen Unittest für diverse Projekte mit eingebunden, und lasse es täglich zwar noch in erweiterter Form über einen Jenkins Job mitlaufen.

Hier findet ihr weitere Informationen zum Python Paket Socket.