Python Network Scanner GUI: ARP, ICMP, TCP Detection
class MainWindow: def init(self): self.root = tk.Tk() self.root.title('ARP Detector') self.root.geometry('400x350')
self.arp_button = tk.Button(self.root, text='ARP Detection', command=self.show_arp_page)
self.arp_button.pack()
self.icmp_button = tk.Button(self.root, text='ICMP Flood Detection', command=self.show_icmp_page)
self.icmp_button.pack()
self.tcp_button = tk.Button(self.root, text='TCP Attack Detection', command=self.show_tcp_page)
self.tcp_button.pack()
self.network_button = tk.Button(self.root, text='Network Scanner', command=self.show_network_scanner_page)
self.network_button.pack()
self.root.mainloop()
def show_network_scanner_page(self):
NetworkScannerPageUI(tk.Toplevel(self.root))
class NetworkScannerPage: def init(self, master): self.master = master self.interface = 'ens33' self.ip_mac_map = {}
self.frame = tk.Frame(self.master)
self.frame.pack()
self.scan_button = tk.Button(self.frame, text='Scan', command=self.scan_network)
self.scan_button.pack()
self.result_label = tk.Label(self.frame, text='')
self.result_label.pack()
def scan_network(self):
for ip in netifaces.ifaddresses(self.interface)[netifaces.AF_INET][0]['addr'].split('.')[:-1]:
for i in range(1, 255):
target_ip = f'{ip}.{i}'
arp_request = ARP(pdst=target_ip)
arp_reply = sr1(arp_request, timeout=1, verbose=0)
if arp_reply and arp_reply.hwsrc not in ('00:00:00:00:00:00', get_if_hwaddr(self.interface)):
self.ip_mac_map[target_ip] = arp_reply.hwsrc
result = ''
for ip, mac in self.ip_mac_map.items():
result += f'{ip} ({mac})
' self.result_label.config(text=result)
class NetworkScannerPageUI: def init(self, master): self.master = master self.master.title('Network Scanner') self.master.geometry('400x300')
self.network_scanner_page = NetworkScannerPage(self.master)
def show_network_scanner_page(self):
self.network_scanner_page.frame.pack()
原文地址: https://www.cveoy.top/t/topic/jnWt 著作权归作者所有。请勿转载和采集!