#!/usr/bin/env python3 import threading import socket import queue import sys class WorkerThread(threading.Thread): def __init__(self,queue, FTP_CONNECTIONS): threading.Thread.__init__(self) self.queue = queue self.FTP_CONNECTIONS = FTP_CONNECTIONS def run(self): while True: try: new_connection = self.queue.get(timeout=3) except queue.Empty: print("Queue is empty") return try: connect_to_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connect_to_server.connect((new_connection, 21)) mesg = connect_to_server.recv(1024) print(mesg) self.queue.task_done() except: print("Network connection error!") return threads = [] queue = queue.Queue() ftp_sites = ['ftp.cs.uow.edu.au', 'ftp.tvdr.de', '109.254.33.9', 'ftp.simet.com.tr', 'www.multicom.bg', 'ftp.tue.nl', 'ftp.thp.uni-duisburg.de', 'ftp.ot.ru', 'ftp.pcsoft.fr', 'ftp.unibocconi.it', 'ftp.usgennet.org', 'ftp.redcom.ru', 'ftp.kazusa.or.jp', 'totem.fix.no', 'ftp.tu-chemnitz.de', '81.211.90.2', 'relay.fidonet.org.ua', 'ftp.flygroup.st', '209.62.115.40', 'ftp.engels.san.ru', 'ftp.astro.physik.uni-potsdam.de', 'gdead.berkeley.edu', 'ftp6.freebsd.org', 'ftp.jinr.ru', 'ftp.porcupine.org', 'ftp.wicks.co.nz', 'www.mebius.net', 'ftp.cifrovik.ru', 'ftp.ripe.net', 'www.buk.irk.ru', 'edlab-ftp.cs.umass.edu', 'ftp.amtech.su', 'candc1.golden.net', '95.31.12.123', 'ftp.cybertechs.qc.ca', 'webmail.ukrsat.mk.ua', 'ftp.ubi.com', 'gosling-ftp.libris.kb.se', 'ftp.intellecom.net.ua', 'ftp.arm.kes.ru', 'ftp.idsia.ch', 'ftp.zyxel.com.tr', 'ftp.cyanide-studio.com', 'ftp.sovintel.ru', 'ftp.digiater.nl', 'ftp.cs.uregina.ca', 'ftp.iren.ru', 'ftp.skpress.ru', 'site.spravka053.ru', 'ftp.europeonline.net'] for i in range(5): try: worker = WorkerThread(queue, ftp_sites) worker.setDaemon(True) worker.start() threads.append(worker) print(f"Thread {i} is alive") except: sys.exit() for mission in ftp_sites: try: queue.put(mission) except: print("Queue issues while scanning targets!") sys.exit() try: queue.join() except: print("Queue issues...") sys.exit() for thread_join in threads: try: thread_join.join() except: print("Thread issues...") sys.exit() print("Scan complete")