用 Python 构建网络扫描器

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何使用 Python 构建一个网络扫描器。该网络扫描器将利用 nmap 命令行工具扫描指定的 IP 地址,并使用 Tkinter 库在图形用户界面(GUI)中显示结果。

网络扫描器 GUI 示例

🎯 任务

在这个项目中,你将学习:

  • 如何设置项目并安装必要的库
  • 如何导入用于 GUI 和执行 nmap 命令行工具的必要库
  • 如何定义一个扫描函数来获取用户输入的 IP 地址并扫描网络
  • 如何创建 GUI 的主窗口
  • 如何添加 IP 地址输入字段和“扫描网络”按钮
  • 如何创建一个文本区域来显示扫描结果
  • 如何运行项目并执行网络扫描

🏆 成果

完成这个项目后,你将能够:

  • 设置一个 Python 项目并安装库
  • 在 Python 脚本中导入库并使用它们
  • 使用 Tkinter 创建一个 GUI
  • 处理用户输入并触发函数
  • 使用 nmap 命令行工具进行网络扫描
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 73%。获得了学习者 100% 的好评率。

设置项目

创建一个新的 Python 文件,并将其命名为 network_scanner.py。在你选择的代码编辑器中打开该文件。

cd ~/project
touch network_scanner.py

然后,使用以下命令安装 nmaptkinterpython-nmap 命令行工具:

sudo apt update
sudo apt-get install nmap -y
sudo apt-get install python3-tk -y
sudo pip install python-nmap
✨ 查看解决方案并练习

导入必要的库

在文件开头,导入所需的库:用于 GUI 的 tkinter 和用于执行 nmap 命令行工具的 subprocess

import tkinter as tk
import subprocess
✨ 查看解决方案并练习

定义扫描函数

定义一个名为 scan_network 的函数,当点击“扫描网络”按钮时将触发该函数。此函数将获取用户输入的 IP 地址,清空结果文本区域,并执行 nmap 命令来扫描网络。

def scan_network():
    ip_address = entry_ip.get()
    result_text.delete(1.0, tk.END)
    result_text.insert(tk.END, f"正在扫描网络:{ip_address}\n\n")

    try:
        output = subprocess.check_output(["nmap", "-F", ip_address])
        result_text.insert(tk.END, output.decode("utf-8"))
    except subprocess.CalledProcessError:
        result_text.insert(tk.END, "扫描网络时发生错误。")
✨ 查看解决方案并练习

创建主窗口

使用 Tkinter 中的 Tk() 类创建 GUI 的主窗口。

window = tk.Tk()
window.title("网络扫描器")
✨ 查看解决方案并练习

添加输入字段和扫描按钮

创建一个标签和一个输入字段,供用户输入 IP 地址。然后,创建一个“扫描网络”按钮,点击时将调用 scan_network 函数。

label_ip = tk.Label(window, text="输入 IP 地址:")
label_ip.pack()
entry_ip = tk.Entry(window)
entry_ip.pack()
scan_button = tk.Button(window, text="扫描网络", command=scan_network)
scan_button.pack()
✨ 查看解决方案并练习

添加结果文本区域

使用 Tkinter 中的 Text() 类创建一个文本区域。此文本区域将显示扫描结果。

result_text = tk.Text(window)
result_text.pack()
✨ 查看解决方案并练习

启动主循环

在文件末尾添加以下代码行以启动 GUI 的主循环:

window.mainloop()
✨ 查看解决方案并练习

运行项目

保存文件并使用 Python 解释器运行它。图形用户界面(GUI)窗口将会出现。

cd ~/project
python network_scanner.py

在输入字段中输入你想要扫描的 IP 地址,然后点击“扫描网络”按钮。将使用 nmap 执行网络扫描,结果将显示在文本区域中。

网络扫描器 GUI 窗口
✨ 查看解决方案并练习

总结

在这个项目中,你已经学习了如何使用 Tkinter 库在 Python 中构建一个网络扫描器。该网络扫描器利用 nmap 命令行工具来扫描指定的 IP 地址。结果显示在图形用户界面中,允许用户轻松地执行网络扫描并查看输出。你可以根据自己的需求通过添加更多功能和改进用户界面来进一步增强网络扫描器。