MariumWarraich/port-scanner

GitHub: MariumWarraich/port-scanner

一款基于 Python 标准库和 Tkinter 构建的教育用途 TCP 端口扫描器,支持多线程扫描和 banner grabbing,帮助用户学习和审计网络开放端口。

Stars: 0 | Forks: 0

# 网络端口扫描器(教育安全工具) 一款基于 Python + Tkinter 的桌面应用,用于扫描目标主机的开放 TCP 端口, 采用多线程提升速度,并尽力进行 banner grabbing 以识别 每个开放端口上运行的服务。 ## 功能 - 扫描任意 IP 地址或主机名 - 自定义端口范围(如 1-1024)或通过“常用端口”进行快速扫描 - 多线程扫描(速度快,使用有界线程池) - 在开放端口上进行 banner grabbing - 实时进度条和结果表格 - 将结果导出为 `.txt` 报告 - **无需数据库** - 会话期间的所有操作均在内存中运行。 - **无需第三方库** - 仅使用 Python 标准库 (`socket`、`threading`、`queue`、`tkinter`)。 ## 环境要求 - Python 3.8+(Tkinter 随标准的 Windows/macOS 安装程序提供; 在 Linux 上,您可能需要执行 `sudo apt install python3-tk`) ## 如何在 Visual Studio / VS Code 中运行 1. 在 Visual Studio(文件 -> 打开 -> 文件夹)或 VS Code 中打开此文件夹。 2. 确保选择了 Python 解释器(Python 3.8+)。 3. 打开 `port_scanner.py` 并按 **运行**(或 `F5` / `Ctrl+F5`)。 - 无需 `pip install` - 它仅使用标准库。 4. GUI 窗口将会打开。输入目标(默认为 `127.0.0.1`),选择 端口范围或“仅常用端口”,然后点击 **开始扫描**。 ## 可安全尝试的示例目标 - `127.0.0.1`(您自己的机器 / localhost) - `scanme.nmap.org` - 由 Nmap 项目明确提供用于 学习/测试端口扫描器的主机(仍需保持扫描轻量化,勿滥用) ## ⚠️ 法律 / 道德声明 仅扫描您拥有或获得明确书面许可进行测试的系统。 未经授权扫描网络或主机在许多国家/地区可能属于违法行为, 并且违反了大多数互联网服务的可接受使用政策。 本项目纯粹用于学习网络和防御性安全概念 (例如,审核您自己的家庭网络)。 ## 项目结构 ``` project1_port_scanner/ |- port_scanner.py # single-file app: scanning engine + Tkinter GUI |- README.md ``` ## 工作原理(简述) 1. `PortScanner` 通过 `socket.gethostbyname` 将目标主机名解析为 IP。 2. 待扫描的端口被放入 `queue.Queue` 中。 3. 工作线程池从队列中拉取端口并尝试进行 TCP `connect_ex()` - 返回代码 `0` 表示该端口开放。 4. 对于开放端口,扫描器会尝试读取 banner(如果服务未发送任何内容, 它会礼貌地发送一个最小的 HTTP HEAD 请求进行询问)。 5. 结果通过 `root.after(...)` 安全地流式传输回 GUI 线程。
标签:Python, Tkinter, 插件系统, 数据统计, 无后门, 桌面应用, 端口扫描, 系统独立性, 网络安全, 逆向工具, 隐私保护