sajinbarnaba/port-scanner-web

GitHub: sajinbarnaba/port-scanner-web

一个基于 Python Flask 和原生前端技术构建的 Web 端口扫描应用,通过浏览器界面提供多线程 TCP 连接扫描和 Banner 抓取功能。

Stars: 1 | Forks: 0

# 端口扫描器 — Web 应用 使用 Python (Flask) 后端和轻量级 HTML/CSS/JS 前端构建。 ## 功能 - Web UI — 在输入框中输入目标,点击扫描,立即查看结果 - 接受 IP 地址、主机名或完整的 URL (`http://example.com`) - 灵活的端口输入:范围 (`1-1024`)、列表 (`22,80,443`) 或混合输入 - 可选的 banner grabbing 以识别正在运行的服务 - 后端多线程扫描以提高速度 - 清除按钮可重置并扫描新目标 - 基本的安全限制(每次扫描的最大端口数)以防止意外滥用 ## 项目结构 ``` port-scanner-web/ ├── app.py # Flask routes (/ and /scan) ├── scan_core.py # Scanning logic (reusable, no Flask dependency) ├── templates/ │ └── index.html # Frontend UI ├── static/ │ └── style.css # Styling ├── requirements.txt └── README.md ``` ## 设置(在 VS Code / 终端中) 1. 如果您尚未安装,请**安装 Python 3.7+**。 2. **创建虚拟环境**(推荐,可保持环境整洁): python3 -m venv venv source venv/bin/activate # 在 Windows 上:venv\Scripts\activate 3. **安装依赖项** — 此项目只需要一个包,即 Flask: pip install -r requirements.txt (或直接使用 `pip install flask`) 4. **运行应用程序**: python3 app.py 5. **在浏览器中打开**: http://127.0.0.1:5000 ## 如何使用 1. 在输入框中输入 IP、主机名或 URL(例如 `scanme.nmap.org`) 2. (可选)调整端口范围 — 默认为 `1-1024` 3. (可选)勾选“Grab banners”以尝试识别服务 4. 点击 **Scan** 5. 结果显示在下方 — 开放的端口、其服务名称以及 banner(如果已抓取) 6. 点击 **Clear** 以重置表单并扫描不同的目标 ## 工作原理 - 前端向 `/scan` 发送一个 `POST` 请求,以 JSON 格式包含目标和选项。 - Flask 后端将主机名解析为 IP,启动一个线程池,并在请求的端口上执行 TCP `connect()` 扫描(与 `nmap -sT` 使用的技术相同)。 - 结果以 JSON 格式返回,并使用 JavaScript 动态渲染到表格中 — 无需重新加载页面。 ## 安全限制 为了防止该工具被误用作针对您自己机器的 DoS 工具(或意外扫描过多内容): - 每次扫描请求最多 **5,000 个端口** - 服务器端最多使用 **300 个线程** ## ⚠️ 免责声明 此工具仅供**教育目的和授权测试使用**。仅扫描您拥有或获得明确书面测试许可的主机和网络。未经授权的扫描可能会违反相关法律,例如《计算机欺诈和滥用法》(美国)、《计算机滥用法》(英国)、《2000 年信息技术法》(印度)或其他地区的同等立法。 ## 未来改进想法 - [ ] 扫描历史 / 先前结果日志 - [ ] 将结果导出为 CSV/JSON 下载 - [ ] 支持 UDP 扫描 - [ ] 长时间扫描期间的进度指示器(通过 WebSockets) - [ ] 用于轻松部署的 Dockerfile - [ ] 深色/浅色主题切换 ## 许可证 请参阅 [LICENSE](LICENSE)。
标签:Flask, Python, 多模态安全, 插件系统, 数据可视化, 数据统计, 无后门, 服务器安全, 端口扫描, 网络安全, 逆向工具, 隐私保护