У меня есть скрипт сканера портов, который сканирует порты и сообщает вам, открыты они или закрыты. Есть ли способ увидеть IP-адреса, с которыми обмениваются данными порты? Сценарий:
from threading import Thread
import socket
host = str(input('host > '))
from_port = int(input('start scan from port > '))
to_port = int(input('finish scan to port > '))
counting_open = []
counting_close = []
threads = []
def scan(port):
s = socket.socket()
result = s.connect_ex((str(host),port))
print(('checking ports > '+(str(port))))
if result == 0:
counting_open.append(port)
print((str(port))+' -> is open')
peer = s.getpeername()
print(peer)
s.close()
else:
counting_close.append(port)
#print((str(port))+' -> is closed')
s.close()
for i in range(from_port, to_port+1):
t = Thread(target=scan, args=(i,))
threads.append(t)
t.start()
[x.join() for x in threads]
print(counting_open)
РЕДАКТИРОВАТЬ: Чтобы быть ясным, я не запрашивал IP-адрес локального хоста, который вводится пользователем. Я спрашивал, есть ли способ узнать, какие внешние общедоступные IP-адреса связываются с хостом через порты, обнаруженные после запуска сценария.
external_ip = urllib.request.urlopen('http://ident.me').read().decode('utf8')
. 03.10.2017