Я пытаюсь закодировать сканер портов в python с захватом баннера.Сокет не может установить соединение
Без линии s.send('getBanner\n')
(который захватывает баннер) работает мой скрипт, и он печатает открытые порты.
Но когда я добавляю строку 'getBanner'
, ошибка сокета говорит '[Errn 32] Broken Pipe'
.
Я знаю, что эта ошибка, вероятно, происходит потому, что клиенты не дожидаются установления соединения и закрытия сокета. Как я могу это решить?
Код:
import socket
host = '192.168.1.1'
for port in range(1,1024):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex((host, port))
s.send(('getBanner\n'))
banner = s.recv(1024)
if result == 0:
print "[+] Port %s tcp/open" % port
print "[+] Banner: %s" % banner
s.close()
Он работал как ожидалось. Благодарю вас за советы. –