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探测, 二进制发布, 作品集展示, 安全学习, 并发扫描, 开源工具, 彩色终端, 操作系统指纹识别, 数据泄露防护, 数据统计, 无后门, 横幅抓取, 端口扫描, 端口扫描器, 线程池, 网络安全, 网络工具, 网络探测, 逆向工具, 速度配置, 隐私保护