import tkinter as tk
import random
import scapy.all as scapy
result = ""
def getmac(ip):
arplayer = scapy.ARP(pdst=ip)
etherlayer = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
packet = etherlayer/arplayer
answeredList = scapy.srp(packet, timeout=2, verbose = False)[0]
return answeredList[0][1].hwsrc
def sniff():
scapy.sniff(store=False, prn=checkattack)
def checkattack(packet):
try:
if packet.haslayer(scapy.ARP) and packet[scapy.ARP].op == 2:
realmac = getmac(packet[scapy.ARP].psrc)
rspmac = packet[scapy.ARP].hwsrc
if realmac != rspmac:
result = "WARNING"
except IndexError:
pass
GUI = tk.Tk()
GUI.title("NETWORK GUARDIAN")
GUI.geometry("600x500")
# === labels ===
label1 = tk.Label(text="> Welcome to the NETWORK GUARDIAN !", font=("Times", 11))
label1.grid(column = 0, row = 0)
label2 = tk.Label(text = result, font=("Arial Black", 15))
label2.grid(column = 0, row = 3)
# === buttons ===
button1 = tk.Button(text="Scan for attacks", command = sniff)
button1.grid(column = 0, row = 2)
GUI.mainloop()
У меня есть этот инструмент спуфинга arp, созданный с помощью scapy, но я пытаюсь красиво отобразить результаты с помощью tkinter.Проблема в том, что когда я нажимаю кнопку для сканирования возможных атак, окно зависает.Я предполагаю, что это происходит потому, что функция sniff () является долговременной функцией.Может ли кто-нибудь помочь мне сделать это правильно?