在网络运维和安全中,网络扫描工具能帮助管理员快速发现网络问题、检测设备连通性和安全漏洞。今天将介绍如何用Python创建一个简易的图形界面网络扫描器,该工具结合了ping命令、nmap扫描以及ARP协议,用于扫描目标IP,收集如MAC地址和操作系统类型等信息。
之前我们已经分享过一篇关于如何使用Python脚本扫描局域网IP并获取在线设备MAC地址的文章。为了让大家日后使用起来更加方便,这次我们将这个脚本通过Python的第三方库Tkinter封装成了一个简单易用的小软件。
一、项目概述
本项目创建了一个图形化界面的网络扫描工具,用户可以输入目标IP或网段,点击开始扫描按钮,程序会自动扫描指定的IP地址,检测哪些主机在线,并展示其MAC地址和操作系统信息。工具使用了Python中的tkinter库创建GUI界面,并通过多线程提高扫描效率。
二、关键模块与库
- tkinter:用于创建图形界面,包括文本框、按钮、标签、进度条等控件。
- subprocess:用于执行系统命令(如ping、arp、nmap),并获取命令的输出。
- re:用于正则表达式匹配,提取IP地址、MAC地址和操作系统信息。
- concurrent.futures:通过线程池执行并发任务,提高扫描效率。
三、代码实现
1. 初始化GUI界面
首先,我们通过tkinter创建一个窗口,窗口中包括输入框、按钮和一个表格来显示扫描结果:
2. 验证输入和生成扫描目标
我们添加了输入验证功能,确保用户输入的是有效的IP或网段格式,并根据输入生成需要扫描的IP地址列表:
3. 开始扫描
点击开始扫描按钮后,我们创建一个新的线程来执行扫描任务,避免阻塞主线程。扫描过程中,程序会启动进度条,提示用户扫描进度:
4. 执行单个IP的扫描
通过ping命令检查IP是否在线,如果在线,再通过arp获取MAC地址,并通过nmap获取操作系统信息:
5. 扫描完成
当扫描完成后,我们停止进度条,并显示完成信息:
四、打包exe软件包
将Python脚本打包成.exe可执行文件,可以使用多种工具,其中最常用的工具是PyInstaller。下面是使用PyInstaller将Python脚本打包成Windows可执行文件的步骤。
1. 安装PyInstaller
首先,确保你已安装了PyInstaller。你可以通过pip来安装:
2. 打包Python脚本
假设你的Python脚本名为network_scanner.py,你可以通过以下命令将其打包成.exe文件:
- --onefile:表示将所有内容打包成一个单独的.exe文件。
- network_scanner.py:是你的Python脚本文件。
如果你不使用--onefile,PyInstaller会创建一个文件夹,其中包含多个文件和依赖库,而不是一个单独的可执行文件。
3. 生成的可执行文件
在打包完成后,你可以在当前目录下找到一个dist文件夹,里面会包含你打包的network_scanner.exe文件。
- 默认情况下,打包后的文件位于 dist/ 文件夹下。
- 你可以在dist文件夹中找到生成的.exe文件。
双击运行.exe文件即可进行局域网扫描,如下图所示:
五、总结
通过本项目,我们成功地创建了一个基于Python的网络扫描器,具备扫描单个IP、IP网段、获取MAC地址、操作系统信息等功能。利用Tkinter打造了简洁的GUI界面,借助多线程技术提高了扫描效率,进度条的加入则大大改善了用户体验。