Jaival01/network-intelligence-scanner

GitHub: Jaival01/network-intelligence-scanner

一款轻量级网络侦察工具,通过 Web 仪表板或 CLI 提供主机发现、端口扫描、服务识别和风险评估功能。

Stars: 0 | Forks: 0

# 网络智能扫描器 🌐 一款使用 Python、Scapy 和 Flask 构建的强大且轻量级的网络侦察工具。通过直观的 Web 仪表板或命令行界面,发现活跃主机、扫描端口并分析您的网络基础设施。 [![Python](https://img.shields.io/badge/Python-3.7+-blue.svg)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-2.3+-green.svg)](https://flask.palletsprojects.com/) [![Scapy](https://img.shields.io/badge/Scapy-2.5+-orange.svg)](https://scapy.net/) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ## ✨ 功能特性 ### 🔍 网络发现 - 自动检测本地网络(支持 CIDR 表示法) - 基于 ARP 的主机发现,带有基于 Ping 的备用检测 - MAC 地址厂商识别 - 反向 DNS 主机名解析 ### 🔌 端口扫描 - 快速多线程端口扫描 - 默认扫描 15 个常用端口 - 服务识别与风险分类 - 开放端口枚举及详细信息 ### 🎯 高级分析 - 设备类型检测(工作站、服务器、网络设备等) - 通过 TTL 分析检测操作系统家族 - 安全风险评分 - 漏洞警报(暴露的端口、弱协议) - 用于服务版本检测的 Banner 抓取 ### 🎨 双重用户界面 - **Web 仪表板**:现代化、响应式的 UI,支持实时更新 - **CLI 工具**:为高级用户提供全面的命令行界面 - 支持导出 JSON、CSV 和 HTML 格式的结果 ### 📊 结果管理 - 扫描历史跟踪 - 网络拓扑可视化 - 详细的主机独立报告 - 多格式导出功能 ## 📷 截图 ### Web 仪表板 用于网络扫描的现代化、响应式 Web 界面: ![网络智能扫描器 Web 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d46f59fb30040710.png) ### CLI 界面 面向高级用户和自动化的命令行工具: ![CLI 网络扫描器](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/80a948ae46040711.png) ## 🚀 快速开始 ### 前置条件 - **Python 3.7+** - **Windows/Linux/macOS**,需具备管理员/Root 权限 - **Npcap**(仅限 Windows)- [下载](https://nmap.org/npcap/) ### 安装说明 #### 1. 克隆仓库 ``` git clone https://github.com/your-username/network-intelligence-scanner.git cd network-intelligence-scanner ``` #### 2. 创建虚拟环境 ``` # Windows python -m venv venv venv\Scripts\activate # Linux/macOS python3 -m venv venv source venv/bin/activate ``` #### 3. 安装依赖 ``` pip install -r requirements.txt ``` ### 运行应用程序 #### Web 仪表板(推荐) ``` cd app python app.py ``` 然后在浏览器中打开 **http://localhost:5000**。 #### CLI 模式 ``` python cli_dashboard.py ``` ## 📋 使用指南 ### Web 仪表板 1. **自动检测网络**:点击“Auto-Detect”按钮自动查找您的本地网络 2. **手动输入**:以 CIDR 格式输入网络范围(例如 `192.168.1.0/24`) 3. **开始扫描**:点击“Start Scan”开始主机发现和端口枚举 4. **查看结果**: - **统计仪表板**:已发现主机、开放端口和风险等级的概览 - **主机列表**:每个被发现主机的详细视图 - **端口分析**:点击主机查看检测到的开放端口和服务 5. **导出结果**:将扫描结果下载为 JSON、CSV 或 HTML ### CLI 模式 ``` Network Scanner - Standalone Demo ================================================ Local IP: 192.168.1.100 Network Range: 192.168.1.0/24 Select mode: 1. Quick Scan 2. Full Report 3. Exit ``` ## 📁 项目结构 ``` network-intelligence-scanner/ ├── README.md # This file ├── LICENSE # MIT License ├── requirements.txt # Python dependencies ├── config.ini # Configuration settings ├── cli_dashboard.py # CLI interface ├── run.sh # Linux/macOS startup script ├── run.bat # Windows startup script │ └── app/ ├── app.py # Flask web server ├── scanner.py # Core scanning engine │ ├── templates/ │ └── index.html # Web UI template │ └── static/ ├── style.css # Dashboard styling └── script.js # Frontend logic ``` ## ⚙️ 配置 编辑 `config.ini` 以自定义行为: ``` # Network scanning 超时 SCAN_TIMEOUT=2 PORT_SCAN_TIMEOUT=1 # Performance 设置 MAX_PARALLEL_SCANS=1 THREAD_POOL_SIZE=4 MAX_SCAN_RESULTS=1000 # Port 配置 COMMON_PORTS=21,22,23,25,53,80,110,143,443,445,3306,5432,8080,8443 # Web server 设置 APP_HOST=127.0.0.1 APP_PORT=5000 ALLOW_REMOTE_CONNECTIONS=False ``` ## 🔒 安全警报 扫描器检测并警告以下内容: - **Telnet(端口 23)**:未加密协议 - 请改用 SSH - **FTP(端口 21)**:未加密数据传输 - 请使用 SFTP - **SMB(端口 445)**:非 Windows 系统上的 Windows 文件共享 - **暴露的数据库**:位于可访问端口上的 MySQL/PostgreSQL - **未加密的 HTTP**:不支持 HTTPS 的 HTTP ## 🛠️ API 端点 | Endpoint | Method | Description | |----------|--------|-------------| | `/api/network-info` | GET | 获取本地网络信息 | | `/api/start-scan` | POST | 开始新的网络扫描 | | `/api/scan-status` | GET | 获取当前扫描状态 | | `/api/port-scan/` | GET | 扫描特定主机端口 | | `/api/scan-history` | GET | 获取扫描历史 | | `/api/topology` | GET | 获取网络拓扑 | | `/api/dashboard` | GET | 获取仪表板数据 | | `/api/export/csv` | GET | 导出为 CSV | | `/api/export/html` | GET | 导出为 HTML | | `/api/export/json` | GET | 导出为 JSON | ## ⚠️ 重要提示 ### Windows 兼容性 - ARP 扫描**需要管理员权限** - 从 https://nmap.org/npcap/ 安装 **Npcap** 以进行数据包捕获 - 确保安装 Npcap 时启用了“WinPcap API-compatible mode” ### Linux/macOS - 原始套接字操作**需要 Root/Sudo 权限** - 使用 `sudo python cli_dashboard.py` 或 `sudo python app/app.py` ### 网络要求 - 扫描器必须位于同一网段(第 2 层) - 防火墙可能会阻止 ICMP/ARP - 基于 Ping 的备用检测是自动的 - 最多同时扫描 64 台主机(可配置) ## 🔄 工作原理 ### 发现阶段 1. **ARP Boost**:发送 ARP 数据包以发现主动响应的主机 2. **备用检测**:如果 ARP 不可用,则使用 ICMP Ping 3. **DNS 解析**:尝试反向 DNS 查找以获取主机名 4. **厂商查询**:识别 MAC 地址厂商 ### 分析阶段 1. **端口枚举**:测试每台主机的 15 个常用端口 2. **服务检测**:从开放端口识别服务 3. **OS 检测**:分析 TTL 值和端口签名 4. **风险评估**:计算主机风险评分 5. **警报生成**:标记安全问题 ## 🐛 故障排除 ### 未发现主机 - **解决方案**:以管理员/Root 权限运行 - 检查是否安装了 Npcap(Windows) - 验证正确的网络范围(例如 `192.168.1.0/24`) ### 扫描挂起 - **解决方案**:关闭应用程序并使用管理员权限重启 - 检查 Windows 防火墙是否阻止了网络操作 - 在 config.ini 中减少 `THREAD_POOL_SIZE` ### 端口扫描超时 - 在 config.ini 中增加 `PORT_SCAN_TIMEOUT` - 检查目标主机是否可达(首先进行 Ping 测试) ### Scapy 无法工作 - 重新安装:`pip install --force-reinstall scapy==2.5.0` - 确保安装了 Npcap(Windows) - 检查 Python 版本 >= 3.7 ## 📝 日志记录 日志存储在 `logs/` 目录中。在 `config.ini` 中启用详细日志记录: ``` LOG_LEVEL=DEBUG LOG_FILE=logs/scanner.log ``` ## ⚖️ 许可证 本项目采用 MIT 许可证授权 - 详见 [LICENSE](LICENSE) 文件。 ## ⚠️ 免责声明 **本工具旨在用于您拥有或有权扫描的网络上的网络管理和安全测试。** 未经授权的网络扫描在您所在的司法管辖区可能是非法的。作者不对本工具的滥用或造成的损害承担任何责任。 ## 📞 支持 如有问题、疑问或建议: - 提交一个 [Issue](https://github.com/your-username/network-intelligence-scanner/issues) - 联系维护者 **为系统管理员和安全爱好者用 ❤️ 制作**
标签:Banner抓取, Facebook API, Flask, HTTP/HTTPS抓包, MIT协议, Python, Qt框架, Scapy, Web仪表盘, 多模态安全, 实时处理, 密码管理, 开源, 态势感知, 插件系统, 数据可视化, 数据统计, 无后门, 服务识别, 流量捕获, 漏洞分析, 端口扫描, 系统检测, 网络安全, 网络扫描器, 网络拓扑, 路径探测, 逆向工具, 隐私保护, 风险评分