סורק פורטים שלא עובד

  • פותח הנושא et28
  • פורסם בתאריך

et28

New member
סורק פורטים שלא עובד

כתבתי את הקוד הבא:
קוד:
from datetime import datetime
from scapy.all import *
import threading
import random  
import Queue

def TCPort(ip_addr, port):
    time = 10   # max time to send packages to a port
    rndport = random.randint(1024,65500)
    pkt = IP(dst=ip_addr)/TCP(dport=port,flags="S", sport=rndport)
    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 == 0x12):
            # port sent a SYN or SYN-ACK answer, so answer with RST to close
            # the connection and print the port
            sr(IP(dst=ip_addr)/TCP(dport=port,flags="AR", sport=rndport), timeout=time, verbose=0)
            print port,"open".rjust(9-len(str(port)))

#main
ip_addr = "192.168.1.154"

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

# port = Queue.Queue()
for port in ports:
    t = threading.Thread(target=TCPort, args = (ip_addr,port))
    t.start()

t.join()

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

# scans: TCP, stealth, XMAS, fin, null, ack, udp.
# done :
מה שקורה הוא שהסורק לא מראה לי פורטים פתוחים, וזאת למרות ש NMAP מראה לי מספר פורטים פתוחים.

המוזר הוא שכשאני מוריד את ה- threadים ועושה פורט אחד כל פעם, הסריקה מראה לי פורטים פתוחים. גם ב- wireshark אני רואה שיש תגובה בפורטים הפתוחים בשני המצבים (עם ובלי threadים).

מה אני עושה לא נכון?
* אם כבר אז כבר- האם ניתן לייעל את הקוד? אם כן- כיצד?

כמובן תודה מראש!
 
למעלה