Писал один сетевой инструмент и пришлось накодить сканер портов который сможет в многопоточность независимо от основных потоков, набросал вот такой небольшой кусочек кода, работает на отлично, вполне подходит для встраивания в любой код, никаких зависимостей.
Пример использования
Python:
class port_scanner():
def __init__(self, ip):
self.ip = ip
def get_open_ports(self, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
res = s.connect_ex((self.ip, port))
s.close()
if res == 0:
return port
else:
return False
def start(self):
open_ports = []
with ThreadPoolExecutor(max_workers=100) as executor:
for result in executor.map(self.get_open_ports, range(1, 1000)):
if result:
open_ports.append(result)
return open_ports
Код:
ports = port_scanner("цель для сканирования (ip/host)").start()