0

私は scapy を使用して Python でパケット スニファを作成しましたが、マルチスレッドのものにはまり込んでいます..

def sniffer(ip):
    filter_str = "icmp and host " + ip
    packets=sniff(filter=filter_str,count=20)
    status= False
    for p in packets:
        packet_load=str(p['Raw'].load)
        if packet_load.find("@@")!= -1:
                status=True
                log_thread = Thread(target=logger,args=(packets,))
                log_thread.start()
                log_thread.join()
                break
    if status==True:
        print "Suspicious Packets sniffed!!"

    user_ip = raw_input("Do you want to continue sniffing???(y/n)")
    while 1:
        if user_ip=="y" or user_ip=="Y":
            new_thread = Thread(target=sniffer, args=(ip,))
            new_thread.start()
            new_thread.join()
        else:
            #need somthing to quit the program
   return  

ここでは、私のスニファーは一度に 20 個のパケットをスニッフィングし、さらにスニッフィングするためにユーザー入力を待ちます。ただし、ユーザーが入力として「n」を入力すると、プログラムがハングします。理想的には、ユーザーが「n」を入力した場合にプログラムを終了したいと思います。ここで私が間違っていることを知ることができますか??

4

1 に答える 1