написал сканер портов,вроде все хорошо ,ошибок не выводит,работает и выводит что все порты закрыты.Но,прогоняю тот же диапазон в Nmap и там есть открытые порты.Почему мой код не видит открытые порты,что не правильно?
import socket
#from termcolor import colored
import ipaddress
import threading
p =[]
def scan(host,port,orb):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Создаем новый сокет
sock.settimeout(4) # Устанавливаем таймаут, чтоб скрипт не зависал если попал на открытый порт
try:
return sock.connect((HOST, port)) # Пробуем подключится
except:
return print("Port %s closed %s" %( port,host)) # Если возникло исключение -- порт закрыт
else:
with open (orb,'a') as jy:
jy.write(host + port)
return print("Порт %s открыт %s." % (port,host)) #выводим информацию что порт открыт
sock.close()# закрываем сокет.
spis =[]
with open ('111.txt','r') as gla:
for i in gla:
i = i.strip()
try:
n = ipaddress.ip_network(i)
for ip in n:
spis.append(ip)
except ValueError:
print(' детектед ошибка -',ip)
ports = [524,61444,80] #Создаем список портов, которые мы хотим просканирвать
for i in spis: #Теперь в цикле перебераем все указаные порты
t1 = threading.Thread(target=scan, args=(spis.pop(),ports[0],'222.txt'))
t2 = threading.Thread(target=scan, args=(spis.pop(), ports[1],'222.txt'))
t3 = threading.Thread(target=scan, args=(spis.pop(), ports[2],'222.txt'))
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()