使用 Tkinter 的 Nmap GUI 客户端
这是一个使用 Python 的 Tkinter 构建的简单图形用户界面 (GUI) Nmap 客户端。它允许用户通过易于使用的界面使用 Nmap 命令执行网络扫描,从而使网络探索和安全审计更加便捷。
我一直认为,强大的工具应该人人都能使用——即使你不是命令行高手。因此,我用 Python 的 Tkinter 为Nmap构建了一个简单而强大的图形用户界面 (GUI)。今天,我很高兴在GitHub上与大家分享我的开源项目。
在本文中,我将带您了解该工具的动机、功能和实现细节,并分享大量资源和示例,以帮助您入门或进一步扩展该工具。
Nmap 是一款业界标准的网络扫描器,用于安全审计和网络探索。尽管它功能强大,但其命令行界面对于初学者甚至经验丰富的专业人士来说都可能令人望而生畏,他们更喜欢简洁的可视化界面。我希望通过创建一个图形用户界面 (GUI) 来消除这一障碍,该 GUI 可以:
最终成果是一款友好易用的工具,它兼具 Nmap 的易用性和强大的功能性。
目标规范:
输入主机名、IP 地址,甚至可以从文件中加载列表。
主机发现选项:
快速切换常用选项,如 Ping 扫描 ( -sn)、列表扫描 ( -sL) 和将所有主机视为在线 ( -Pn)。
扫描技术:
可从常用的扫描类型中进行选择,例如 TCP SYN ( -sS)、TCP Connect ( -sT)、UDP ( -sU) 和 TCP ACK ( -sA) 扫描。
端口规格:
轻松定义端口范围并将其与其他扫描选项结合使用。
服务/版本和操作系统检测:只需单击一下
即可启用服务检测(-sV)和操作系统检测( )。-O
脚本扫描:
使用 Nmap 强大的 NSE 脚本来定制您的扫描。
定时及其他选项:
调整扫描定时模板并切换 IPv6 扫描。
sudo 权限处理:
对于需要提升权限的操作,只需勾选“使用 sudo 运行”选项即可。该工具会安全透明地处理 sudo 提示符。
该项目完全使用 Python 和 Tkinter 构建。以下是主要组件的简要概述:
目标框:
允许您输入目标或选择要扫描的输入文件。
主机发现和扫描技术框架:
复选框和下拉菜单,用于选择主机发现方法和扫描类型。
端口和服务检测帧:
用于定义端口和切换服务/版本和操作系统检测的输入字段。
脚本和自定义选项:
您可以在此输入字段中指定额外的 Nmap 参数或脚本。
sudo 选项:
选中此复选框后,如有必要,将提示用户输入 sudo 密码。
点击“运行 Nmap 扫描”按钮后,应用程序会执行以下操作:
subprocess模块运行 Nmap 扫描,并将输出显示在可滚动的文本区域中。以下是一段精简的代码片段,用于突出 sudo 处理机制:
if self.sudo_var.get():
if os.geteuid() != 0:
sudo_password = simpledialog.askstring("Sudo Password", "Enter sudo password:", show="*")
if sudo_password is None:
messagebox.showerror("Error", "Sudo password is required!")
return
cmd = ["sudo", "-S"] + cmd
use_sudo = True
else:
use_sudo = False
# Run the command with subprocess
if use_sudo:
process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
out, err = process.communicate(sudo_password + "\n")
else:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
out, err = process.communicate()
这种方法使得无需离开图形用户界面即可轻松运行特权扫描。
这里列出了一些资源和示例,可以帮助您入门、了解更多相关技术,甚至为项目做出贡献:
GitHub 仓库:
使用 Tkinter 的 Nmap GUI 客户端– 查看完整代码、提交问题或 fork 它以进行您自己的实验。
Nmap 文档:
Nmap 官方文档– 深入了解 Nmap 提供的丰富功能。
Python Tkinter 文档:
Tkinter 8.5 参考:Python 的 GUI – 了解更多关于在 Python 中构建 GUI 的信息。
Python 子进程模块:
子进程 — 子进程管理— 了解如何从 Python 执行 shell 命令。
社区教程和博客文章:
扩展功能示例:
社区贡献:
如果您有任何扩展工具的想法,欢迎 fork 此仓库并提交 pull request。协作有助于我们共同打造更好的工具!
这个项目的初衷是让网络扫描对每个人都更加友好易用。无论您是经验丰富的网络工程师还是充满好奇心的初学者,我都希望这个工具以及上面分享的资源能够帮助您更高效地探索、学习和保护您的网络。
欢迎查看代码库,分享您的想法,或贡献改进建议。我非常期待看到社区如何将这个项目推向新的高度!
扫描愉快,感谢阅读!
如果您觉得这篇文章对您有所帮助,请考虑将其分享给您的朋友或在 dev.to 上留言。让我们携手共建一个更安全、更紧密的社区!