sxlmwn/network-scanner

GitHub: sxlmwn/network-scanner

一款基于Nmap的全栈WiFi网络扫描仪表盘,可实时发现并展示局域网设备信息、端口状态和地理位置,适合网络资产可视化监控。

Stars: 0 | Forks: 0

# 🛡️ 网络扫描仪仪表盘 一款全栈网络安全工具,可扫描您的本地 WiFi 网络,显示连接的设备、开放的端口,并在交互式地图上绘制地理位置数据。 ## 🚀 功能 - **真实网络扫描**:使用 Nmap 发现网络上的所有连接设备 - **设备详情**:显示 IP、MAC 地址、主机名、制造商和设备类型 - **端口扫描**:扫描任何设备上的开放端口并进行风险评估 - **地理位置映射**:在交互式世界地图上标绘设备 - **实时终端日志**:实时显示扫描活动的黑客风格终端 - **设备警报**:当新设备或未知设备加入网络时即时发出通知 - **事件历史**:记录所有设备连接和断开连接的完整日志 - **暗色黑客主题**:带有霓虹绿色点缀的专业网络安全美学界面 ## 🗂️ 项目结构 ``` network-scanner/ ├── backend/ # Python FastAPI backend │ ├── main.py # FastAPI app with WebSocket support │ ├── scanner.py # Nmap scanning logic & device detection │ ├── geolocation.py # IP geolocation service │ ├── monitor.py # Background monitoring thread │ ├── database.py # SQLite database manager │ ├── models.py # Pydantic data models │ └── requirements.txt # Python dependencies │ └── frontend/ # React + Vite frontend ├── src/ │ ├── App.jsx # Main app component │ ├── main.jsx # React entry point │ ├── components/ │ │ ├── Dashboard.jsx # Main layout │ │ ├── DeviceGrid.jsx # Device list │ │ ├── DeviceCard.jsx # Individual device │ │ ├── PortScanner.jsx # Port scan modal │ │ ├── TerminalLog.jsx # Live terminal │ │ ├── AlertBanner.jsx # New device alerts │ │ ├── HistoryLog.jsx # Event history │ │ └── GeoMap.jsx # Leaflet map │ └── styles/ │ └── globals.css # Tailwind + custom styles ├── index.html ├── vite.config.js ├── tailwind.config.js ├── postcss.config.js └── package.json ``` ## ⚙️ 技术栈 | 组件 | 技术 | |-----------|-----------| | 后端 | Python, FastAPI, Uvicorn | | 网络扫描 | python-nmap (Nmap 封装库) | | 地理位置 | ip-api.com (免费,无需 API 密钥) | | 数据库 | SQLite3 | | 实时通信 | WebSockets | | 前端 | React 18, Vite | | 样式 | Tailwind CSS 3 | | 地图 | Leaflet.js + React-Leaflet | | 图标 | Lucide React | ## 📋 系统要求 ### 系统要求 - **Nmap**:必须安装在您的系统上 - **Windows**:从 [nmap.org](https://nmap.org/download.html) 下载 - **macOS**:`brew install nmap` - **Linux**:`sudo apt install nmap` (Ubuntu/Debian) 或等效命令 - **Python 3.8+** - **Node.js 16+** 和 npm ### 权限 - **需要管理员/Sudo 权限**才能进行网络扫描(Nmap 需要提升的权限) ## 🚀 安装与设置 ### 1. 安装 Nmap (系统级) **Windows:** - 从 https://nmap.org/download.html 下载安装程序 - 运行安装程序并按照提示操作 **macOS:** ``` brew install nmap ``` **Linux (Ubuntu/Debian):** ``` sudo apt update sudo apt install nmap ``` **Linux (Fedora/RHEL):** ``` sudo dnf install nmap ``` 验证安装: ``` nmap --version ``` ### 2. 后端设置 ``` # 导航到 backend 目录 cd backend # 创建 virtual environment(推荐) python -m venv venv # 激活 virtual environment # 在 macOS/Linux 上: source venv/bin/activate # 在 Windows 上: venv\Scripts\activate # 安装 Python 依赖 pip install -r requirements.txt ``` ### 3. 前端设置 ``` # 导航到 frontend 目录 cd frontend # 安装 Node 依赖 npm install # 构建或运行 development server npm run dev # Development mode with hot reload # 或 npm run build # Production build ``` ## 🎯 运行应用程序 ### 终端 1:启动后端 (使用 sudo) ``` cd backend # 激活 virtual environment(如果尚未激活) source venv/bin/activate # or venv\Scripts\activate on Windows # 使用 sudo 运行(Nmap 获取 MAC 地址需要) sudo python main.py # 或者如果 python 不在 PATH 中 sudo python3 main.py ``` 您应该会看到: ``` ╔════════════════════════════════════╗ ║ Network Scanner Dashboard API ║ ║ FastAPI Server ║ ╚════════════════════════════════════╝ Starting server on http://0.0.0.0:8000 WebSocket: ws://localhost:8000/ws/live ``` ### 终端 2:启动前端 ``` cd frontend npm run dev ``` 您应该会看到: ``` VITE v5.0.0 ready in 123 ms ➜ Local: http://localhost:5173/ ➜ press h to show help ``` ### 3. 在浏览器中打开 打开浏览器并访问: ``` http://localhost:5173 ``` 仪表盘将显示您网络上已连接的设备! ## 📡 API 接口 ### REST 接口 ``` GET /api/devices - Get all connected devices GET /api/devices/{ip}/ports - Scan open ports on device GET /api/history - Get connection history GET /api/logs - Get terminal logs GET /api/stats - Get network statistics GET /api/rescan - Manually trigger network scan ``` ### WebSocket 接口 ``` WS /ws/live - Real-time updates and alerts ``` ## 🔒 安全说明 - ✅ **100% 本地化**:所有扫描均在您的机器上进行。除了地理位置查询外,不会向外部服务器发送任何数据。 - ✅ **免费**:无需 API 密钥,无需订阅,无需云服务。 - ✅ **开源**:完全透明的源代码。 - ⚠️ **需要管理员权限**:网络扫描需要管理员/sudo 权限(MAC 地址检测所必需)。 - ⚠️ **仅扫描您拥有的网络**:未经授权的网络扫描可能是非法的。 ## 🔧 故障排除 ### "Nmap not found" 错误 - **解决方法**:在您的系统上安装 Nmap(参见上文的安装部分) - 验证:在终端中运行 `nmap --version` ### "Permission denied" 错误 - **解决方法**:使用 sudo 运行后端:`sudo python main.py` - Nmap 执行 ARP 扫描和 MAC 地址检测需要提升的权限 ### "Port 8000 already in use" (端口 8000 已被占用) - **解决方法**:更改 `backend/main.py` 中的端口或终止占用 8000 端口的进程 - 或者编辑 main.py 文件中的端口 ### "Port 5173 already in use" (端口 5173 已被占用) - **解决方法**:更改 `frontend/vite.config.js` 中的端口 - 或者终止占用 5173 端口的进程 ### WebSocket 连接失败 - **解决方法**:确保后端以正确的 URL 运行 - 如果在不同域上运行,请检查 CORS 设置 - 验证防火墙没有阻止 WebSocket 连接 ### 未发现设备 - **解决方法**: - 确保您的设备已连接到同一 WiFi 网络 - 点击刷新按钮进行手动重新扫描 - 检查您的 WiFi 网络是否支持 ARP 扫描 - 尝试使用不同的网络接口运行 ## 📊 数据库 该应用程序创建一个 SQLite 数据库 (`backend/network_scanner.db`),包含: - **devices** 表:网络上的所有已知设备 - **history** 表:连接/断开连接事件 - **logs** 表:终端日志条目 - **geo_cache** 表:缓存的地理位置数据 数据库将在首次运行时自动创建。 ## 🎨 自定义 ### 更改扫描间隔 编辑 `backend/monitor.py`,在 `monitor = NetworkMonitor(scan_interval=30)` 行 ### 更改要扫描的端口 编辑 `backend/scanner.py`,在 `scan_ports()` 方法中: ``` arguments='-p 20-23,25,53,80,110,143,443...' ``` ### 自定义主题 编辑 `frontend/tailwind.config.js` 以更改颜色、字体、动画 ### 更改地图图块 编辑 `frontend/src/components/GeoMap.jsx`,修改 TileLayer URL 以使用不同的地图提供商 ## 🐛 已知限制 1. **MAC 地址检测**:仅在具有管理员/sudo 权限时可用 2. **端口扫描速度**:根据网络情况,完整的端口扫描可能需要 30 秒以上 3. **地理位置**:准确性取决于 IP 地理位置数据库(通常为城市级别) 4. **私有 IP**:本地网络设备在地图上显示为“Local Network” 5. **扫描间隔**:默认为 30 秒(可在代码中调整) ## 📝 许可证 本项目为开源项目,可免费用于教育和个人用途。 ## ⚡ 性能提示 - 如果希望更快地检测到变化,可以缩短扫描间隔 - 限制端口范围以加快端口扫描速度 - 扫描仪机器使用有线连接以获得最佳效果 - 关闭不必要的浏览器标签页以提高 UI 响应速度 - 保持 Nmap 更新以获得最佳网络覆盖 ## 🆘 获取帮助 如果您遇到问题: 1. 检查终端输出中的错误消息 2. 验证 Nmap 是否已安装:`nmap --version` 3. 确保您拥有管理员权限 4. 尝试通过仪表盘进行手动重新扫描 5. 检查防火墙设置 ## 🚀 未来增强功能 未来版本的潜在功能: - 设备认证与封锁 - 网络流量分析 - 设备漏洞扫描 - 自定义警报和通知 - 导出扫描报告 - 多子网扫描 - Wake-on-LAN 功能 - 网络拓扑可视化 - 设备分组和标记 **用 ❤️ 为网络安全爱好者构建**
标签:AMSI绕过, AV绕过, FastAPI, MAC地址扫描, Nmap, Python, React, SQLite, Syscalls, Vite, WebSocket, Web安全, WiFi扫描, 仪表盘, 依赖分析, 前后端分离, 可视化大屏, 地理定位, 威胁检测, 局域网扫描, 开源安全工具, 插件系统, 攻击路径可视化, 数据统计, 无后门, 无线安全, 检测规则, 端口扫描, 网络安全, 网络资产发现, 蓝队分析, 虚拟驱动器, 设备发现, 逆向工具, 逆向工程平台, 隐私保护, 黑客工具