cristiensen/portscanner

GitHub: cristiensen/portscanner

基于 Next.js 和 FastAPI 构建的 Web 端口扫描应用,提供可视化操作界面和实时扫描结果推送,让用户在浏览器中即可完成本地网络的端口探测与资产发现。

Stars: 0 | Forks: 0

# PortScanner 一个基于 Web 的网络端口扫描应用,作为网络安全方向的实战作品集项目而构建。扫描主机、检测开放端口并探索你的本地网络——这一切都可以在浏览器中完成。 ## 功能介绍 PortScanner 为你提供了一个用于端口扫描的图形界面,此类操作通常是在命令行中使用 `nmap` 完成的。你只需输入目标(一个 IP、子网或范围),选择要扫描的端口,应用就会返回所有主机及其状态。 主要功能: - 支持扫描单个 IP、逗号分隔的 IP 列表、CIDR 子网(例如 `192.168.1.0/24`)或 IP 范围(例如 `192.168.1.10-192.168.1.50`) - 支持扫描单个端口、端口列表、端口范围或其组合形式(例如 `22,80,443,8000-8100`) - 实时查看扫描结果 - 可随时中止正在运行的扫描 - 按主机、端口、服务或状态对搜索结果进行过滤和排序 - 将结果导出为 CSV 所有操作均在本地运行。无需连接云服务,不依赖外部服务,数据不会离开你的设备。 ## 技术栈 | 层级 | 技术 | | ---------- | -------------------------- | | Frontend | Next.js, React, TypeScript | | 样式 | 原生 CSS + Tailwind | | Backend | Python 3.11, FastAPI | | 扫描引擎 | Python `asyncio` | | 容器化 | Docker + Docker Compose | | 扫描代理 | Python stdlib HTTP server | ## 扫描预设 | 预设 | 端口 | 最适用场景 | | ---------- | ----------------------- | ------------------------------------ | | Quick | 22, 80, 443, 3389, 8080 | 快速检查最常用的服务 | | Common | 前 ~20 个常用端口 | 通用网络资产盘点 | | Discovery | — | 仅检测主机存活状态,不进行端口扫描 | | Custom | 自定义输入 | 完全自主控制 | ## 端口状态 | 状态 | 含义 | | ------------- | ------------------------------------------------------------- | | `open` | TCP 握手成功 — 有服务正在监听 | | `closed` | 连接被拒绝 — 主机存活但该端口无任何服务 | | `timeout` | 在超时时间窗口内未收到响应 — 可能被过滤或主机响应缓慢 | | `unreachable` | 网络层错误 — 主机或路由不存在 | | `reachable` | 探测模式:主机至少响应了一个探测请求 | | `host_down` | 探测模式:所有探测请求均超时 — 主机可能处于离线状态 | ## 输入格式 **目标** — 仅接受 IPv4: ``` 192.168.1.1 single IP 192.168.1.1, 192.168.1.5 comma-separated IPs 192.168.1.0/24 CIDR subnet (max /22 = 1024 hosts) 192.168.1.10-192.168.1.50 full range 192.168.1.10-50 short-form range ``` 不支持主机名。输入框会进行实时校验,如果格式有误会变为红色。 **端口:** ``` 80 single port 22,80,443 comma-separated 1-1024 range 22,80,8000-8100 combination ``` ## 运行方式 ### 前置条件 - [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/) - [Python 3.11+](https://www.python.org/downloads/)(用于运行扫描代理) - Git ### 启动 ``` git clone https://github.com/cristiensen/portscanner.git cd portscanner #Make sure that Docker is running and run the following command ```powershell .\start.bat ``` 在浏览器中打开 **http://localhost:3000**。 ## 项目结构 ``` portscanner/ ├── backend/ │ ├── app/ │ │ ├── main.py FastAPI app, CORS, startup │ │ ├── scanner.py Async scan engine, job management │ │ ├── models.py Pydantic data models │ │ ├── database.py SQLite: presets and history │ │ └── routes/ │ │ ├── scan.py Scan endpoints + WebSocket │ │ ├── presets.py Preset CRUD │ │ └── history.py History endpoints │ ├── requirements.txt │ └── Dockerfile ├── frontend/ │ ├── app/ │ │ ├── page.tsx Entire UI │ │ ├── layout.tsx Root layout │ │ └── globals.css Terminal aesthetic CSS │ ├── lib/ │ │ └── api.ts Typed API client │ ├── next.config.ts API proxy config │ └── Dockerfile ├── scan-agent/ │ └── agent.py Native Windows scan agent ├── docker-compose.yml ├── start.bat One-click start └── README.md ``` ## 道德与法律声明 本工具仅供**教育目的**使用。 仅扫描你拥有或**获得授权**扫描的系统与网络。未经授权的端口扫描在你所在的司法管辖区可能是违法行为,并且违反了大多数网络和托管服务商的服务条款。 作者不对本软件的任何误用,或因使用本软件而可能导致的任何损害、数据丢失或法律后果承担责任。
标签:AV绕过, CIDR扫描, Docker, FastAPI, IP扫描, Nmap替代, Python, React, Syscalls, Tailwind CSS, TypeScript, URL短链接分析, 全栈项目, 后端开发, 安全插件, 安全防御评估, 局域网扫描, 开源安全工具, 异步IO, 恶意行为检测, 插件系统, 攻击路径可视化, 数据统计, 无后门, 服务探测, 本地网络扫描, 漏洞赏金平台, 端口扫描, 网络安全, 网络安全项目作品集, 网络扫描器, 网络盘点, 计算机取证, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护, 黑客工具