最全端口服務掃描工具推薦_助你精準掃描網絡安全漏洞

圖片[1]-最全端口服務掃描工具推薦_助你精準掃描網絡安全漏洞

鏈接: https://pan.baidu.com/s/1VEMilBASXqCSa81DxQcEtQ?pwd=hzhz 提取碼: hzhz

import tkinter as tk
from tkinter import ttk
import socket
import threading
import queue
import time
 
class PortScannerGUI:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("端口掃描工具")
        self.root.geometry("600x400")
         
        # 掃描狀態
        self.scanning = False
        self.paused = False
        self.ports_queue = queue.Queue()
        self.current_port_range = ""
         
        self._create_widgets()
         
    def _create_widgets(self):
        # 控制按鈕區域
        control_frame = ttk.Frame(self.root)
        control_frame.pack(pady=10)
         
        self.start_btn = ttk.Button(control_frame, text="開始掃描", command=self.start_scan)
        self.start_btn.pack(side=tk.LEFT, padx=5)
         
        self.pause_btn = ttk.Button(control_frame, text="暫停掃描", command=self.pause_scan, state=tk.DISABLED)
        self.pause_btn.pack(side=tk.LEFT, padx=5)
         
        self.stop_btn = ttk.Button(control_frame, text="停止掃描", command=self.stop_scan, state=tk.DISABLED)
        self.stop_btn.pack(side=tk.LEFT, padx=5)
         
        self.clear_btn = ttk.Button(control_frame, text="清空控制臺", command=self.clear_console)
        self.clear_btn.pack(side=tk.LEFT, padx=5)
         
        # 進度顯示區域
        progress_frame = ttk.Frame(self.root)
        progress_frame.pack(pady=10)
        self.progress = ttk.Progressbar(progress_frame, length=500, mode='determinate')
        self.progress.pack()
        self.progress_label = ttk.Label(progress_frame, text="當前段進度: 0%")
        self.progress_label.pack()
         
        # 控制臺輸出區域
        console_frame = ttk.LabelFrame(self.root, text="掃描控制臺")
        console_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=5)
         
        self.console = tk.Text(console_frame, height=10)
        self.console.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
         
        # 掃描結果區域
        result_frame = ttk.LabelFrame(self.root, text="掃描結果")
        result_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=5)
         
        self.result_tree = ttk.Treeview(result_frame, columns=("端口", "狀態", "服務"), show="headings")
        self.result_tree.heading("端口", text="端口")
        self.result_tree.heading("狀態", text="狀態")
        self.result_tree.heading("服務", text="服務")
        self.result_tree.pack(fill=tk.BOTH, expand=True, padx=5, pady=5)
         
    def scan_port(self, port):
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.settimeout(1)
            result = sock.connect_ex(('127.0.0.1', port))
            if result == 0:
                try:
                    service = socket.getservbyport(port)
                except:
                    service = "未知"
                self.ports_queue.put((port, "開放", service))
            sock.close()
        except:
            pass
             
    def update_gui(self):
        while not self.ports_queue.empty():
            port, status, service = self.ports_queue.get()
            self.result_tree.insert("", tk.END, values=(port, status, service))
            self.console.insert(tk.END, f"端口 {port} 是 {status} 的,運行服務: {service}\n")
            self.console.see(tk.END)
         
        if self.scanning and not self.paused:
            self.root.after(100, self.update_gui)
             
    def start_scan(self):
        if not self.scanning:
            self.scanning = True
            self.paused = False
            self.start_btn.config(state=tk.DISABLED)
            self.pause_btn.config(state=tk.NORMAL)
            self.stop_btn.config(state=tk.NORMAL)
             
            self.progress["value"] = 0
            self.console.insert(tk.END, "開始掃描...\n")
             
            def scan_thread():
                total_ports = 65535  # 掃描全部端口
                chunk_size = 500  # 每個端口段大小
                 
                for start_port in range(1, total_ports + 1, chunk_size):
                    if not self.scanning:
                        break
                         
                    end_port = min(start_port + chunk_size - 1, total_ports)
                    self.current_port_range = f"正在掃描端口段: {start_port}-{end_port}"
                    self.console.insert(tk.END, f"{self.current_port_range}\n")
                    self.console.see(tk.END)
                     
                    for port in range(start_port, end_port + 1):
                        if not self.scanning:
                            break
                        while self.paused:
                            time.sleep(0.1)
                        self.scan_port(port)
                        # 計算當前段的進度
                        current_progress = ((port - start_port + 1) / chunk_size) * 100
                        self.progress["value"] = current_progress
                        self.progress_label.config(text=f"當前段進度: {int(current_progress)}%")
                 
                if self.scanning:
                    self.scanning = False
                    self.console.insert(tk.END, "掃描完成!\n")
                    self.start_btn.config(state=tk.NORMAL)
                    self.pause_btn.config(state=tk.DISABLED)
                    self.stop_btn.config(state=tk.DISABLED)
                    self.progress_label.config(text="當前段進度: 100%")
             
            threading.Thread(target=scan_thread, daemon=True).start()
            self.update_gui()
             
    def pause_scan(self):
        self.paused = not self.paused
        self.pause_btn.config(text="繼續掃描" if self.paused else "暫停掃描")
        status = "暫停" if self.paused else "繼續"
        self.console.insert(tk.END, f"掃描{status}...\n")
        if not self.paused:
            self.console.insert(tk.END, f"繼續{self.current_port_range}\n")
         
    def stop_scan(self):
        self.scanning = False
        self.paused = False
        self.start_btn.config(state=tk.NORMAL)
        self.pause_btn.config(state=tk.DISABLED)
        self.stop_btn.config(state=tk.DISABLED)
        self.console.insert(tk.END, "掃描已停止!\n")
        self.progress_label.config(text="當前段進度: 0%")
         
    def clear_console(self):
        self.console.delete(1.0, tk.END)
        self.result_tree.delete(*self.result_tree.get_children())
        self.progress["value"] = 0
        self.progress_label.config(text="當前段進度: 0%")
         
    def run(self):
        self.root.mainloop()
 
if __name__ == "__main__":
    app = PortScannerGUI()
    app.run()
圖片[2]-最全端口服務掃描工具推薦_助你精準掃描網絡安全漏洞
------本頁內容已結束,喜歡請分享------
溫馨提示:由于項目或工具都有失效性,如遇到不能做的項目或不能使用的工具,可以根據關鍵詞在站點搜索相關內容,查看最近更新的或者在網頁底部給我們留言反饋。
? 版權聲明
THE END
喜歡就支持一下吧
點贊1286 分享