MahinKabir10/Netrecon
GitHub: MahinKabir10/Netrecon
一款面向学习与演示的网络侦察与端口扫描工具,提供主机发现、端口探测、横幅抓取与报告生成。
Stars: 0 | Forks: 0
# NetRecon — 网络侦察与端口扫描器
## ⚠️ 伦理使用免责声明
**本工具仅供授权的安全测试和教育用途。**
- 仅扫描您拥有或已获得**明确书面许可**测试的网络和系统。
- 未经授权的扫描可能违反**计算机欺诈和滥用法案(CFAA)**、**英国计算机滥用法**以及您所在司法管辖区等效力法律。
- 作者不承担误用责任。请负责任地使用。
## 功能特性
| 功能 | 详情 |
|---|---|
| 主机发现 | 子网 ICMP ping 扫描(使用 scapy 或原始套接字) |
| 端口扫描 | 可配置端口范围的 TCP 连接扫描 |
| 横幅抓取 | 从开放端口读取服务横幅 |
| 操作系统指纹识别 | 基于 TTL 的启发式操作系统检测 |
| 速度配置 | `stealth` / `normal` / `aggressive` |
| 输出格式 | 彩色终端(rich)、HTML 报告、JSON 导出 |
| 线程控制 | 可配置工作线程池以实现快速并行扫描 |
## 安装
```
# 克隆仓库
git clone https://github.com/yourusername/netrecon.git
cd netrecon
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
```
## 使用方法
### 基本语法
```
python main.py -t [options]
```
### 参数说明
| 参数 | 描述 |
|---|---|
| `-t`, `--target` | 目标 IP、主机名或 CIDR 子网(必需) |
| `-p`, `--ports` | 要扫描的端口:`80`、`1-1000` 或 `22,80,443` |
| `--common-ports` | 扫描最常见的 22 个端口(默认) |
| `--discover` | 仅执行 ping 扫描,不进行端口扫描 |
| `--speed` | `stealth` / `normal` / `aggressive`(默认:`normal`) |
| `--threads N` | 覆盖速度配置中的线程数 |
| `--output NAME` | 生成 `NAME.html` 和 `NAME.json` 报告 |
| `--no-banner` | 隐藏启动横幅 |
## 示例
**对单个主机使用常用端口进行扫描:**
```
python main.py -t 192.168.1.1 --common-ports
```
**扫描端口范围并保存报告:**
```
python main.py -t 192.168.1.1 -p 1-1000 --speed normal --output reports/host1
```
**子网主机发现(ping 扫描):**
```
python main.py -t 192.168.1.0/24 --discover
```
**激进的全范围扫描:**
```
python main.py -t 10.0.0.5 -p 1-65535 --speed aggressive --output full_scan
```
**隐蔽的特定端口扫描:**
```
python main.py -t 10.0.0.1 -p 22,80,443,3306,3389 --speed stealth --output stealth_report
```
**扫描主机名:**
```
python main.py -t scanme.nmap.org -p 1-1024 --output scanme_results
```
## 速度配置
| 配置 | 超时 | 横幅等待 | 线程数 | 延迟 |
|---|---|---|---|---|
| `stealth` | 2.0s | 3.0s | 10 | 探测间隔 0.5s |
| `normal` | 1.0s | 2.0s | 50 | 无 |
| `aggressive` | 0.3s | 0.5s | 150 | 无 |
在需要最小化网络噪声时使用 `stealth` 配置;在可信网络中追求速度时使用 `aggressive` 配置。
## 输出结果
### 终端输出
带有摘要表格和每个主机开放端口详情的丰富彩色输出。
```
● 192.168.1.1 [UP]
192.168.1.1:22 OPEN
192.168.1.1:80 OPEN
┌─────────────────────────────────────────────────────┐
│ Scan Results Summary │
├────────────────┬──────────┬─────────────┬───────────┤
│ IP Address │ Hostname │ OS Guess │ Open Ports│
├────────────────┼──────────┼─────────────┼───────────┤
│ 192.168.1.1 │ router │ Linux/macOS │ 2 │
└────────────────┴──────────┴─────────────┴───────────┘
```
### HTML 报告
采用 GitHub 风格暗色主题的 HTML 报告,包含:
- 统计信息卡片
- 包含端口、状态、服务和横幅列的主机表格
- 内嵌免责声明
### JSON 导出
可供其他工具或自动化流程使用的机器可读 JSON:
```
{
"scan_time": "2024-01-15T14:32:00",
"host_count": 1,
"hosts": [
{
"ip": "192.168.1.1",
"hostname": "router.local",
"os_guess": "Linux / Android / macOS",
"ttl": 64,
"open_ports": [
{ "port": 22, "state": "open", "service": "SSH", "banner": "SSH-2.0-OpenSSH_8.9" },
{ "port": 80, "state": "open", "service": "HTTP", "banner": "HTTP/1.0 200 OK" }
]
}
]
}
```
## 项目结构
```
netrecon/
├── main.py # CLI entry point (argparse + rich UI)
├── scanner.py # Core scanning logic (discovery, port scan, banners)
├── reporter.py # HTML + JSON report generation
├── utils.py # Helpers: IP parsing, TTL fingerprinting, data classes
├── requirements.txt # Python dependencies
└── README.md # This file
```
## 工作原理
1. **主机发现** — 使用 scapy(若无则回退至原始套接字)发送 ICMP 回显请求,并测量 TTL 以进行操作系统猜测。
2. **端口扫描** — TCP `connect()` 扫描。不依赖原始套接字的 SYN 扫描更快且更可靠,但会在服务器日志中留下连接记录。
3. **横幅抓取** — 对确认开放端口,发送 HTTP `GET` 请求(针对 Web 端口)或直接读取(适用于 SSH、FTP、SMTP 等连接即有横幅的服务)。
4. **操作系统指纹识别** — 将观测到的 TTL 与已知初始 TTL 值对比:≤64 → Linux/macOS,≤128 → Windows,≤255 → Cisco/Solaris。
5. **报告生成** — 生成自包含的 HTML 报告和结构化 JSON 文件以供程序化使用。
## 限制与已知行为
- TCP `connect()` 扫描会在服务器日志中留下记录。建议使用 `stealth` 配置以降低噪声。
- 原始 ICMP 需要提升权限。权限不足时,回退至对 80/443/22 端口的 TCP 存活检测。
- 操作系统指纹识别仅为启发式方法;VPN、代理或 TTL 操纵会导致结果偏差。
- 不执行 UDP 扫描。
## 依赖项
| 包 | 用途 |
|---|---|
| `rich` | 彩色终端输出与表格 |
| `scapy` | ICMP 主机发现(可选,失败时回退至原始套接字) |
## 法律声明
本软件仅提供用于**教育与授权渗透测试**目的。
作者不对任何非法使用负责。执行扫描前请务必获得书面授权。
*基于 Python 3.10+ 构建 · 由 [Your Name] 贡献的项目*
标签:DNS查询工具, Facebook API, HTML报告, ICMP扫描, JSON导出, Python, SEO关键词: Python端口扫描, SEO关键词: 网络侦察工具, SEO关键词: 网络扫描器, TCP连接扫描, TTL探测, 二进制发布, 作品集展示, 安全学习, 并发扫描, 开源工具, 彩色终端, 操作系统指纹识别, 数据泄露防护, 数据统计, 无后门, 横幅抓取, 端口扫描, 端口扫描器, 线程池, 网络安全, 网络工具, 网络探测, 逆向工具, 速度配置, 隐私保护