"スニッフィングを開始する"を押すとパケットをスニッフィングしてコンソールに出力し、スニッフィングを停止するとスニッフィングを停止するプログラムを作成しようとしています。相続人は、私が書いたコード:私はscapyでスニッフィングを開始するとTkinterがクラッシュする
from tkinter import *
from scapy.all import *
from scapy.arch.windows.compa import * """Adds stop_filter to sniff because
its not in scapy-python3"""
root = Tk()
Switch = False
def stopbutton():
global Switch
Switch = True
def stopsniffing(x):
global Switch
return Switch
def action(packet):
try:
print ("%s went to %s"%(packet[IP].src, packet[IP].dst))
except:
pass
def startsniffing():
sniff(filter="host 192.168.0.48", prn=action, stop_filter=stopsniffing)
button = Button(text="Start sniffing", command=startsniffing).pack()
button2 = Button(text="Stop sniffing", command=stopbutton).pack()
root.mainloop()
私の問題は、私が押したときにスタートがそれを盗聴ということですが盗聴を開始するために開始されますが、他のすべてが応答しなくなります。
でそれをしなければならない
それをスキップすることができます - カント:システムからキー/マウスイベントを取得し、ウィジェットにイベントを送信し、ウィジェットを再描画するので、フリーズするように見えます。スニッフィングコードを実行するにはトレッドを使用する必要があります。 – furas
btw:エラーが発生していないので、「except:pass」は使用しないでください。少なくともメッセージを表示する。 '例外をe:print(e)'とする以外は – furas