打造你的网络安全卫士:Python实现ARP、ICMP、TCP攻击检测及网络扫描
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()
原文地址: https://www.cveoy.top/t/topic/jnWz 著作权归作者所有。请勿转载和采集!