сканер резьбового порта scapy - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь написать сканер портов, который должен быть быстрым.Я нашел в Google модуль потоков, который я пытаюсь использовать, но программа не меняет порты

программа:

from datetime import datetime
from scapy.all import *
import threading
import Queue

def TCPort(ip_addr, port):
    time = 1   # max time to send packages to a port is 1 seconds

    print port
    pkt = IP(dst=ip_addr)/TCP(dport=port,flags="S")
    ans = sr1(pkt, timeout=time, verbose=0)
    if(str(type(ans))=="<type 'NoneType'>"):
        #port is closed
        pass
    elif ans.haslayer(TCP):
        if (ans.getlayer(TCP).flags=="A") or (ans.getlayer(TCP).flags=="SA"):
            # port sent a SYN or SYN-ACK answer, so answer with RST to close
            # the connection and print the port
            sr1(IP(dst=ip_addr)/TCP(dport=port,flags="S"), timeout=time, verbose=0)
            print port,"open".rjust(9-len(str(port)))

def multi_thread():
    while True:
        ip_and_port = q.get()
        TCPort(ip_addr, port)
        q.task_done()

#main
ip_addr = "43.230.209.5"

ports = range(1,100)
start = datetime.now()
print "Started on", start.strftime('%Y-%m-%d %H:%M:%S')
q = Queue.Queue()

for x in range(30):
    t = threading.Thread(target=multi_thread)

t.daemon = True
t.start()
for port in ports:
    q.put((ip_addr,port))
q.join()

print "Finished on", datetime.now()-start

, когда я запускаю программу, результат:

Started on 2019-02-21 11:58:36
24
99
99
99
.
.
Finished on 0:00:33.538000

Вопрос в том, где я не прав?

...