import tkinter as tk
from tkinter import messagebox

# 假设ArpDetectorPage, IcmpFloodDetectorPage, TcpAttackDetectorPage, NetworkScannerPage
# 已经定义了, 而且他们都有start方法

class MainWindow:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('网络安全工具箱')
        self.root.geometry('400x350')

        self.arp_button = tk.Button(self.root, text='ARP 检测', command=self.show_arp_page)
        self.arp_button.pack()

        self.icmp_button = tk.Button(self.root, text='ICMP 泛洪检测', command=self.show_icmp_detector_page)
        self.icmp_button.pack()

        self.tcp_button = tk.Button(self.root, text='TCP 攻击检测', command=self.show_tcp_detector_page)
        self.tcp_button.pack()

        self.network_button = tk.Button(self.root, text='网络扫描', command=self.network_scanner_page)
        self.network_button.pack()

        # 初始化timeout
        self.timeout = 10

        self.timeout_label = tk.Label(self.root, text='检测时间 (秒)')
        self.timeout_label.pack()
        self.timeout_entry = tk.Entry(self.root)
        self.timeout_entry.insert(0, str(self.timeout))
        self.timeout_entry.pack()

        self.set_timeout_button = tk.Button(self.root, text='设置超时', command=self.set_timeout)
        self.set_timeout_button.pack()

        self.status_label = tk.Label(self.root, text='准备就绪')
        self.status_label.pack()

        self.start_button = tk.Button(self.root, text='开始检测', command=self.start_detection)
        self.start_button.pack()

        self.stop_button = tk.Button(self.root, text='停止检测', command=self.stop_detection, state=tk.DISABLED)
        self.stop_button.pack()

        self.root.mainloop()

    def show_arp_page(self):
        self.arp_page = tk.Toplevel(self.root)
        ArpDetectorPage(self.arp_page)

    def show_icmp_detector_page(self):
        self.icmp_page = tk.Toplevel(self.root)
        IcmpFloodDetectorPage(self.icmp_page)

    def show_tcp_detector_page(self):
        self.tcp_page = tk.Toplevel(self.root)
        TcpAttackDetectorPage(self.tcp_page)

    def network_scanner_page(self):
        self.network_page = tk.Toplevel(self.root)
        NetworkScannerPage(self.network_page)

    def set_timeout(self):
        try:
            self.timeout = int(self.timeout_entry.get())
            messagebox.showinfo('提示', f'检测时间已设置为 {self.timeout} 秒')
        except ValueError:
            messagebox.showerror('错误', '请输入有效的数字')

    def start_detection(self):
        self.status_label.config(text='运行中')
        self.start_button.config(state=tk.DISABLED)
        self.stop_button.config(state=tk.NORMAL)
        self.arp_button.config(state=tk.DISABLED)
        self.icmp_button.config(state=tk.DISABLED)
        self.tcp_button.config(state=tk.DISABLED)
        self.network_button.config(state=tk.DISABLED)

        self.arp_detector = ArpDetectorPage('ens33', self.timeout)
        self.arp_detector.start()

        self.icmp_flood_detector = IcmpFloodDetectorPage('ens33', self.timeout)
        self.icmp_flood_detector.start()

        self.tcp_attack_detector = TcpAttackDetectorPage('ens33', self.timeout)
        self.tcp_attack_detector.start()

        self.network_scanner = NetworkScannerPage('ens33', self.timeout)
        self.network_scanner.start()

    def stop_detection(self):
        self.status_label.config(text='准备就绪')
        self.start_button.config(state=tk.NORMAL)
        self.stop_button.config(state=tk.DISABLED)
        self.arp_button.config(state=tk.NORMAL)
        self.icmp_button.config(state=tk.NORMAL)
        self.tcp_button.config(state=tk.NORMAL)
        self.network_button.config(state=tk.NORMAL)

        # 停止各个检测模块
        # ...

if __name__ == '__main__':
    MainWindow()
打造你的网络安全卫士:Python实现ARP、ICMP、TCP攻击检测及网络扫描

原文地址: https://www.cveoy.top/t/topic/jnWz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录