Python 端口扫描器的 GUI 界面实现方法
Python 端口扫描器的 GUI 界面可以使用 Tkinter 模块来实现。
首先,需要创建一个窗口,使用 Tkinter 的 Tk() 方法创建:
import tkinter as tk root = tk.Tk() root.title("端口扫描器") root.geometry("400x300")
然后,可以在窗口中添加控件,例如标签、输入框、按钮等,使用 Tkinter 的 Label()、Entry()、Button() 等方法来创建:
label_target = tk.Label(root, text="目标地址:") label_target.grid(row=0, column=0, padx=10, pady=10) entry_target = tk.Entry(root) entry_target.grid(row=0, column=1, padx=10, pady=10) button_scan = tk.Button(root, text="扫描", command=scan_ports) button_scan.grid(row=1, column=0, columnspan=2, padx=10, pady=10)
其中,使用 grid() 方法将控件定位到指定的行列位置,并设置布局参数,如 padx 和 pady 表示控件的水平和垂直方向的间距。
最后,需要实现扫描端口的函数并与按钮的执行命令关联起来,例如:
import socket def scan_ports(): target = entry_target.get() for port in range(1, 1025): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((target, port)) print("Port %d is open" % port) except: pass s.close()
完整的代码如下:
import tkinter as tk import socket root = tk.Tk() root.title("端口扫描器") root.geometry("400x300") label_target = tk.Label(root, text="目标地址:") label_target.grid(row=0, column=0, padx=10, pady=10) entry_target = tk.Entry(root) entry_target.grid(row=0, column=1, padx=10, pady=10) button_scan = tk.Button(root, text="扫描", command=scan_ports) button_scan.grid(row=1, column=0, columnspan=2, padx=10, pady=10) def scan_ports(): target = entry_target.get() for port in range(1, 1025): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((target, port)) print("Port %d is open" % port) except: pass s.close() root.mainloop()
在命令行中执行该脚本,就可以看到 GUI 界面,并在扫描端口时输出开启的端口号。需要注意的是,在 GUI 界面中,控件的操作需要放在主循环中执行,因此需要在最后添加 root.mainloop() 语句。
相关文章