So che ci sono migliaia di port scanner, l'ho fatto perchè non avevo un pazzo da fare
Codice:
import socket, re
class Scanner():
def __init__(self):
self.host = raw_input("Host to scan: ")
self.list = []
def full_scan(self):
self.port1 = int(raw_input("Initial port: "))
self.port2 = int(raw_input("Final port: "))
print "Scanning port on", socket.gethostbyname(self.host)
for self.i in range(self.port1, self.port2):
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.scan = self.s.connect_ex((self.host, self.i))
if self.scan == 0:
print "Port %d: OPEN" % (self.i)
self.list.append(self.i)
self.s.close()
if len(self.list) == 0:
print "Scanning completed: no port open."
else:
print "Scanning completed."
def scan(self):
self.port = int(raw_input("Port: "))
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.scan = self.s.connect_ex((self.host, self.port))
if self.scan == 0:
print "Port %d: OPEN" % (self.port)
else:
print "Port %d: CLOSED" % (self.port)
self.s.close()
# main
main = Scanner()
command = raw_input("Type FULL SCAN to scan a range of port -- type SCAN to scan a single port\n>>> ")
if re.match("FULL SCAN", command):
main.full_scan()
elif re.match("SCAN", command):
main.scan()
else:
print "Invalid choice"