sumwolf01/NetWolf-Scanner

GitHub: sumwolf01/NetWolf-Scanner

一款基于 FastAPI 与 Next.js 的自托管跨平台网络发现与安全扫描器,提供实时可视化扫描进度、主机发现、端口检测与 OS 指纹识别功能。

Stars: 0 | Forks: 0

# NetWolf Scanner **专业的跨平台网络发现与安全扫描器** NetWolf Scanner 是一个自托管的网络扫描平台:后端采用 FastAPI, 可进行真实的 ARP/ICMP/TCP-connect 主机发现、带有 banner grabbing 的异步 TCP/UDP 端口 扫描,以及基于 TTL 的 OS 指纹识别;前端搭配 Next.js 控制台,提供实时的 WebSocket 扫描进度。 ## 功能 - **主机发现** — ARP 扫描、ICMP ping,以及在没有 raw-socket 权限的环境下的 TCP-connect 回退机制;支持反向 DNS 和 MAC 供应商信息 丰富化 - **端口扫描** — 具有可配置线程数和超时的异步 TCP/UDP 扫描,支持 top-100/top-1000/all-65535/自定义端口预设,banner grabbing,以及内置服务名映射(HTTP, SSH, RDP, SMB, MySQL, PostgreSQL, Redis, MongoDB, Docker, Kubernetes 等) - **OS 指纹识别** — 带有置信度分数的基于 TTL 的启发式算法, 通过开放端口信号(例如 3389 → Windows)进行精细化调整 - **实时进度** — 基于 WebSocket 的进度条、日志尾部追踪,以及 对每个正在运行的扫描的暂停/恢复/取消控制 - **扫描历史** — 每次扫描都会将主机 + 端口持久化到 SQLite(或 Postgres),并具有收藏、删除和专用的历史记录视图 - **网络工具** — ping、traceroute、DNS/反向 DNS 查询、WHOIS、 Wake-on-LAN,以及本地网络接口/网关列表 - **身份验证** — 基于 JWT 的注册/登录;首个注册的账号将成为 工作区管理员 - **暗黑霓虹网络安全 UI** — 玻璃拟态面板,蓝/绿/紫 信号颜色系统,使用 Next.js 15 + React 19 + Tailwind 构建 ## 截图 _在你针对自己的网络运行该应用后,将截图添加到 `assets/screenshots/` 目录并在此处引用它们——这是一个入门套件,而不是托管的演示,因此目前尚未提交任何截图。_ ## 技术栈 | 层级 | 技术 | |-----------|------| | 前端 | Next.js 15, React 19, TypeScript (strict), TailwindCSS, Framer Motion, Chart.js, React Query, React Hook Form, Lucide Icons | | 后端 | Python 3.12, FastAPI, Scapy, asyncio, SQLAlchemy (async), SQLite (支持 Postgres), WebSockets, JWT | | 基础设施 | Docker, Docker Compose, GitHub Actions CI | ## 项目结构 ``` NetWolf-Scanner/ ├── backend/ │ ├── app/ │ │ ├── api/ # FastAPI routers (auth, scans, tools, websocket) │ │ ├── core/ # config, security (JWT, password hashing) │ │ ├── db/ # async SQLAlchemy session/engine │ │ ├── models/ # ORM models: User, Scan, Host, Port │ │ ├── schemas/ # Pydantic request/response schemas │ │ └── services/ # discovery, port_scanner, os_fingerprint, │ │ scan_orchestrator, net_tools, ws_manager │ ├── tests/ # pytest suite (auth, scans, scanning logic) │ ├── requirements.txt │ └── pytest.ini ├── frontend/ │ ├── src/ │ │ ├── app/ # Next.js App Router pages │ │ ├── components/ # AppShell, StatCard │ │ ├── hooks/ # useScanProgress (WebSocket) │ │ └── lib/ # typed API client, auth context │ ├── package.json │ └── tailwind.config.ts ├── docker/ # Dockerfiles + docker-compose (prod + dev) ├── .github/workflows/ci.yml # pytest + typecheck/lint/build + audit ├── SECURITY.md ├── CONTRIBUTING.md └── CHANGELOG.md ``` ## 安装说明 ### 前置条件 - Python 3.12+ - Node.js 20+ -(可选但推荐)root/Administrator 权限或 用于 ARP/ICMP 扫描的 `CAP_NET_RAW`/`CAP_NET_ADMIN` —— 如果没有这些权限,发现过程将 自动回退到 TCP-connect 探测。 ### Linux / macOS 设置 ``` # 后端 cd backend python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp .env.example .env # edit JWT_SECRET_KEY before deploying anywhere real uvicorn app.main:app --reload # 在第二个终端中 — frontend cd frontend npm install cp .env.local.example .env.local npm run dev ``` 访问 `http://localhost:3000`,注册第一个账号(将成为管理员), 然后开始扫描。 要在不以 root 身份运行整个进程的情况下授予 raw-socket 权限: ``` sudo setcap cap_net_raw,cap_net_admin=eip $(readlink -f .venv/bin/python3) ``` ### Windows 设置 1. 安装 [Python 3.12+](https://www.python.org/downloads/) 和 [Node.js 20+](https://nodejs.org/)。 2. 安装 [Npcap](https://npcap.com/#download)(Scapy 在 Windows 上进行原始数据包访问时需要)。 3. 打开一个 **Administrator** PowerShell: cd backend python -m venv .venv .venv\Scripts\activate pip install -r requirements.txt copy .env.example .env uvicorn app.main:app --reload 4. 在第二个终端中: cd frontend npm install copy .env.local.example .env.local npm run dev 如果没有 Administrator 权限,ARP/ICMP 扫描将不可用,并且 扫描器会自动回退到 TCP-connect 发现。 ### Docker ``` cd docker cp ../backend/.env.example ../backend/.env # set a real JWT_SECRET_KEY docker compose up --build ``` 这将在 `:8000` 上启动后端,并在 `:3000` 上启动前端。 `docker-compose.yml` 中的 `cap_add: [NET_RAW, NET_ADMIN]` 启用了容器内的 ARP/ICMP 扫描;如果你在权限更严格的环境中只需要 TCP-connect 发现,请将其移除。 要在本地开发中实现热重载: ``` docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build ``` ## 使用说明 1. 注册第一个账号(自动成为管理员)。 2. 点击 **New Scan**,以 CIDR 表示法输入目标(例如 `192.168.1.0/24`),选择 **Host Discovery**、**Port Scan** 或 **Full Scan**,然后启动。 3. 观察实时进度 —— WebSocket 会流式传输发现/端口扫描进度, 带有滚动日志,并允许你暂停、恢复或取消。 4. 发现的主机和开放端口会实时显示在扫描详情 页面上;所有内容都会持久化到扫描列表和历史记录中。 5. 在不启动完整扫描的情况下,使用 **Tools** 页面进行一次性的 ping/DNS/WHOIS/接口查询。 ## API FastAPI 会自动生成交互式 OpenAPI 文档: - Swagger UI: `http://localhost:8000/docs` - ReDoc: `http://localhost:8000/redoc` - OpenAPI schema: `http://localhost:8000/openapi.json` 关键 endpoint:`POST /api/auth/register`、`POST /api/auth/login`、 `POST /api/scans`、`GET /api/scans/{id}`、`POST /api/scans/{id}/pause`、 `GET /api/scans/dashboard/stats`、`GET /api/tools/ping`,以及 `WS /ws/scans/{id}` 实时进度 socket。 ## 测试 ``` # 后端 — 24 个通过的测试,覆盖 auth、scan 创建/授权、 # port-list 解析,以及 OS-fingerprint 启发式算法 cd backend && pytest -v # 前端 — 严格的 TypeScript 检查、lint,以及 production build cd frontend && npx tsc --noEmit && npm run lint && npm run build ``` ## 路线图 有关计划的工作,请参阅 [CHANGELOG.md](./CHANGELOG.md#unreleased):交互式 网络拓扑图,PDF/CSV/HTML 报告导出,持久化的用户设置,更完善的 CI pipeline,以及 Postgres/Alembic 迁移文档。 ## 贡献 请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md)。 ## 许可证 [MIT](./LICENSE)
标签:AV绕过, FastAPI, 云存储安全, 插件系统, 操作系统指纹识别, 数据统计, 服务器安全, 测试用例, 端口扫描, 网络扫描, 计算机取证, 请求拦截, 逆向工具