毕业设计基于python的漏洞扫描系统的毕业设计和代码
摘 要
在当今数字化时代,网络安全问题备受关注。本研究旨在设计和实现基于端口的漏洞扫描系统,以提升网站安全性。结合Python技术和数据爬取功能,实现自动化漏洞检测,应对不断增加的网络安全挑战。传统安全手段日益力不从心,基于端口的漏洞扫描系统成为刚需,为用户提供全面高效的安全检测解决方案。
本研究将从研究背景和研究内容入手,探讨安全漏洞检测的理论基础,包括网络安全概述、安全漏洞以及安全检测技术。进而详细介绍漏洞扫描系统的设计,包括设计目标、原则、总体设计以及设计可行性分析,涵盖技术、经济、发展和操作可行性。设计成果展示部分将展示测试系统的搭建技术、用户登录界面实现、漏洞扫描系统首页、端口扫描模块以及扫描列表模块。通过这些设计成果,演示系统的功能和实用性。总体而言,本研究的目的在于为用户提供一种高效、全面的漏洞扫描系统,以帮助应对不断演变的网络安全威胁。通过技术方法、架构设计和结果分析,展示系统的有效性和实用性,强调其在安全领域的重要性和实际应用前景。
关键词:web端口测试;渗透测试;python
4.2用户登录界面的实现
此次设计的漏洞扫描系统的登录页面展示如下,登录中会有直接登录和注册的选项,第一次使用该系统的管理员用户需要进行系统的注册操作。此次设计的网站登录页面如下所示:
图4.1登录页面的实现
核心代码
import tkinter as tk
def login():
username = entry_username.get()
password = entry_password.get()
# 进行用户名和密码验证的逻辑,这里只是简单示例
if username == "admin" and password == "admin123":
print("登录成功!")
else:
print("用户名或密码错误!")
# 创建主窗口
root = tk.Tk()
root.title("用户登录")
# 用户名标签和输入框
label_username = tk.Label(root, text="用户名:")
label_username.pack()
entry_username = tk.Entry(root)
entry_username.pack()
# 密码标签和输入框
label_password = tk.Label(root, text="密码:")
label_password.pack()
entry_password = tk.Entry(root, show="*")
entry_password.pack()
# 登录按钮
btn_login = tk.Button(root, text="登录", command=login)
btn_login.pack()
root.mainloop()
4.2漏洞扫描系统首页
漏洞扫描系统的首页中,会有大量的不同的可视化方式对于所检测的端口情况进行表述。在首页中有该系统的用户数量,信息的数量、端口的检测数量等等内容,对于检测的内容也通过曲线图和环比图的方式来进行检查结果的统计分析显示。如下图所示:
图4.2 漏洞扫描系统首页
核心代码
import matplotlib.pyplot as plt
# 模拟数据
days = [1, 2, 3, 4, 5]
data = [10, 15, 13, 18, 20]
# 创建曲线图
plt.figure(figsize=(8, 4))
plt.plot(days, data, marker='o')
plt.title('漏洞扫描系统漏洞检测结果')
plt.xlabel('日期')
plt.ylabel('漏洞数量')
plt.grid(True)
plt.show()
# 创建环比图
labels = ['用户A', '用户B', '用户C', '用户D']
sizes = [20, 30, 25, 25]
plt.figure(figsize=(6, 6))
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.title('用户分布比例')
plt.show()
4.3端口扫描模块
在端口扫描中,需要输入IP地址以及端口的信息,点击开始扫描,系统会进行扫描内容的判断,显示出扫描的结果,如下图所示:
图4.3 端口扫描模块
核心代码
import tkinter as tk
import socket
def scan_ports():
ip = entry_ip.get()
port = int(entry_port.get())
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
result = s.connect_ex((ip, port))
s.close()
if result == 0:
result_label.config(text=f"端口 {port} 开放")
else:
result_label.config(text=f"端口 {port} 关闭")
except Exception as e:
result_label.config(text="扫描出现错误")
# 创建主窗口
root = tk.Tk()
root.title("端口扫描模块")
# IP地址输入框
label_ip = tk.Label(root, text="IP地址:")
label_ip.pack()
entry_ip = tk.Entry(root)
entry_ip.pack()
# 端口输入框
label_port = tk.Label(root, text="端口:")
label_port.pack()
entry_port = tk.Entry(root)
entry_port.pack()
# 开始扫描按钮
btn_scan = tk.Button(root, text="开始扫描", command=scan_ports)
btn_scan.pack()
# 显示扫描结果
result_label = tk.Label(root, text="")
result_label.pack()
root.mainloop()
4.4扫描列表模块
扫描列表中,也有已经扫描过的ip、端口的内容列示,用户可以通过点击查看详情来进行详细的详细结果。如下图所示:
图4.4 扫描列表模块
核心代码
import tkinter as tk
def show_details():
selected_item = listbox.curselection()
if selected_item:
ip_port = listbox.get(selected_item[0])
# 在这里可以添加显示详细结果的逻辑
print(f"显示详细结果: {ip_port}")
# 创建主窗口
root = tk.Tk()
root.title("扫描列表模块")
# 扫描列表
scan_results = [
"192.168.1.1:80",
"192.168.1.2:443",
"192.168.1.3:22"
]
listbox = tk.Listbox(root)
for item in scan_results:
listbox.insert(tk.END, item)
listbox.pack()
# 查看详情按钮
btn_details = tk.Button(root, text="查看详情", command=show_details)
btn_details.pack()
root.mainloop()
作者:卧龙文化工作室