ezequielranieri/recon-tool

GitHub: ezequielranieri/recon-tool

一款基于 Python Asyncio 的高性能网络侦察 CLI 工具,用于并发端口扫描、Banner 抓取和服务识别。

Stars: 0 | Forks: 0

# 🚀 recon-tool ![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg) ![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json) ![Checked with mypy](https://img.shields.io/badge/mypy-checked-2a6db2) ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![Tests](https://img.shields.io/badge/tests-passing-brightgreen) **使用 Python 和 Asyncio 构建的专业网络侦察工具。** `recon-tool` 是一款高性能 CLI 实用工具,专为快速、安全且可靠的网络扫描而设计。它利用异步 I/O 执行并发的端口发现、Banner 抓取和服务识别,并以人类可读和机器可互操作的格式提供详细的报告。 ## 🛡️ 为什么开发这个项目? 开发此工具旨在展示对 Python 生态系统的资深掌握程度,特别是专注于**安全**和**后端工程**领域。它作为一个实用的展示项目,体现了以下方面: - **异步并发**:使用 `asyncio` 和信号量处理海量网络 I/O 而不发生阻塞。 - **安全第一的理念**:实现健壮的输入验证,阻止对保留/私有 IP 范围的扫描,并清理不受信任的数据。 - **整洁的架构**:遵循 SOLID 原则和 Google 风格文档的模块化、高度类型化且经过测试的代码库。 - **专业的用户体验**:使用 `Typer` 和 `Rich` 打造精致的 CLI 体验,提供实时反馈和结构化输出。 ## ✨ 特性 - **并发 TCP 扫描**:使用非阻塞套接字实现极速端口发现。 - **智能服务识别**:端口到服务的映射,以及使用捕获的 Banner 进行基于启发式的检测。 - **高级 Banner 抓取**:安全地捕获服务 Banner,并自动进行清理以防止终端注入。 - **智能输入解析**:支持复杂的端口规范(例如,`80,443,1-1024,8080`)。 - **可导出的报告**:以结构化的 `JSON` 或格式化的 `TXT` 生成详细的扫描结果。 - **安全边界**:内置防止扫描本地/保留网络的保护机制(符合 RFC 规范)。 ## 🛠️ 技术 - **Python 3.12+** - **Asyncio**:主要的并发引擎。 - **Typer**:专业的 CLI 框架。 - **Rich**:终端格式化、表格和进度条。 - **Pydantic v2**:数据建模和严格验证。 - **Pydantic Settings**:基于环境的配置。 - **Pytest**:全面的单元测试和集成测试。 - **Ruff & Mypy**:行业标准的代码检查和严格类型检查。 ## 📦 安装 克隆仓库并以可编辑模式安装包: ``` git clone https://github.com/ezequielranieri/recon-tool.git cd recon-tool pip install -e . ``` 安装开发依赖: ``` pip install -e ".[dev]" ``` ## 🚀 使用 ### 基本扫描 扫描目标主机的常用前 1000 个端口: ``` python -m recon scan google.com ``` ### 高级端口选择 扫描特定端口和范围: ``` python -m recon scan 8.8.8.8 --ports 22,80,443,8000-9000 ``` ### 高性能扫描 调整并发数和工作超时时间: ``` python -m recon scan example.com --workers 500 --timeout 0.5 ``` ### 导出报告 将扫描结果保存为 JSON 格式的文件: ``` python -m recon scan scanme.nmap.org -o results.json -f json ``` ## 📊 预期输出 ``` ╭─────────────────────────────────────╮ │ recon-tool v0.1.0 │ │ Network Reconnaissance Tool │ ╰─────────────────────────────────────╯ Target: scanme.nmap.org Ports: 22,80,443 (3 ports) Workers: 100 | 1.0s Scanning scanme.nmap.org... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% Results for scanme.nmap.org ┏━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Port ┃ State ┃ Service ┃ Banner ┃ ┡━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ │ 22 │ open │ SSH │ SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 │ │ 80 │ open │ HTTP │ - │ └────────┴─────────┴─────────────────┴─────────────────────────────────────────┘ Completed in 1.42s Open: 2 ``` ## 🏗️ 架构 项目遵循为可维护性和可测试性而设计的模块化结构: - **`core/`**:核心引擎。处理套接字连接(`scanner.py`)、Banner 获取(`banner.py`)和服务逻辑(`service.py`)。 - **`utils/`**:共享逻辑。包含严格的安全验证器和网络解析器。 - **`reports/`**:数据持久化。针对不同导出格式的解耦逻辑。 - **`models/`**:Pydantic 模型,确保整个数据流水线中的数据完整性。 - **`cli.py`**:接口层。编排流程并处理 UI。 ## 🧪 质量与测试 项目通过自动化检查维持高标准: - **单元测试**:覆盖所有核心逻辑、验证器和报告生成器。 - **集成测试**:端到端的 CLI 流程验证。 - **静态分析**:100% 类型安全(Mypy strict)且无代码规范问题。 运行测试: ``` pytest ``` 运行代码检查: ``` ruff check . mypy src/ ``` ## 👨‍💻 关于作者 专注于 Python、后端工程和网络安全的自学开发者。 没有正式的计算机科学学位或证书——只有持续的学习、构建真实项目, 以及对底层系统运作方式的浓厚兴趣。 构建此项目是为了展示实用的 Python 技能:异步编程、 安全第一的思维方式以及专业的代码质量——这些都是在生产环境中至关重要的能力,而非仅仅为了应付考试。 如果您是招聘人员或开发者,希望与我取得联系: [LinkedIn](https://linkedin.com/in/ezequielranieri) · [GitHub](https://github.com/ezequielranieri)
标签:Asyncio, CLI, mypy, Python, Qt框架, Rich, Ruff, SOLID原则, TCP扫描, Typer, WiFi技术, 后端工程, 异步编程, 抓取, 插件系统, 数据统计, 无后门, 服务器安全, 服务识别, 端口扫描, 网络安全, 网络调试, 自动化, 逆向工具, 隐私保护