Jaival01/network-intelligence-scanner
GitHub: Jaival01/network-intelligence-scanner
一款轻量级网络侦察工具,通过 Web 仪表板或 CLI 提供主机发现、端口扫描、服务识别和风险评估功能。
Stars: 0 | Forks: 0
# 网络智能扫描器 🌐
一款使用 Python、Scapy 和 Flask 构建的强大且轻量级的网络侦察工具。通过直观的 Web 仪表板或命令行界面,发现活跃主机、扫描端口并分析您的网络基础设施。
[](https://www.python.org/)
[](https://flask.palletsprojects.com/)
[](https://scapy.net/)
[](LICENSE)
## ✨ 功能特性
### 🔍 网络发现
- 自动检测本地网络(支持 CIDR 表示法)
- 基于 ARP 的主机发现,带有基于 Ping 的备用检测
- MAC 地址厂商识别
- 反向 DNS 主机名解析
### 🔌 端口扫描
- 快速多线程端口扫描
- 默认扫描 15 个常用端口
- 服务识别与风险分类
- 开放端口枚举及详细信息
### 🎯 高级分析
- 设备类型检测(工作站、服务器、网络设备等)
- 通过 TTL 分析检测操作系统家族
- 安全风险评分
- 漏洞警报(暴露的端口、弱协议)
- 用于服务版本检测的 Banner 抓取
### 🎨 双重用户界面
- **Web 仪表板**:现代化、响应式的 UI,支持实时更新
- **CLI 工具**:为高级用户提供全面的命令行界面
- 支持导出 JSON、CSV 和 HTML 格式的结果
### 📊 结果管理
- 扫描历史跟踪
- 网络拓扑可视化
- 详细的主机独立报告
- 多格式导出功能
## 📷 截图
### Web 仪表板
用于网络扫描的现代化、响应式 Web 界面:

### CLI 界面
面向高级用户和自动化的命令行工具:

## 🚀 快速开始
### 前置条件
- **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仪表盘, 多模态安全, 实时处理, 密码管理, 开源, 态势感知, 插件系统, 数据可视化, 数据统计, 无后门, 服务识别, 流量捕获, 漏洞分析, 端口扫描, 系统检测, 网络安全, 网络扫描器, 网络拓扑, 路径探测, 逆向工具, 隐私保护, 风险评分