Работая на простом сканере портов, который позволяет пользователю вводить IP-адрес, а также набор портов для сканирования через ie порт нижней границы и порт верхней границы включительно, программа должна сканировать через каждый порт в этих границы.
#!/usr/bin/env python
import sys
import ssl #secure shell layer
import socket
try:
ip = sys.argv[1]
lowport = int(sys.argv[2])
upport = int(sys.argv[3])
except:
print 'you did it wrong'
sys.exit()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10.0)
def scan(port):
try:
s.connect((ip, port))
return True
except:
return False
s.close()
for x in range(lowport,upport+1):
if scan(x):
print "Port {} open" .format(x)
однако мой вывод кажется подозрительным. Ниже приведены сообщения об открытых портах на трех разных запусках.
Port 7250 open
Port 7251 open
Port 22 open
Port 23 open
Port 5004 open
Port 5005 open
Я подозреваю, что моя проблема может быть в моем блоке def scan (), хотя я не могу понять, что я здесь неправильно. Если я могу подключиться к сокету, значит порт открыт, верно? работает в Python 2.7