Janiru-Sudasinghe/Network-Scanner-Project

GitHub: Janiru-Sudasinghe/Network-Scanner-Project

基于 Python 标准库构建的多线程 TCP 端口扫描器,支持 CIDR 子网解析,专为内网审计场景下的快速端口发现而设计。

Stars: 0 | Forks: 0

# 🔍 网络发现与审计工具 ![Python](https://img.shields.io/badge/Python-3.x-blue?style=flat-square&logo=python) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![Threading](https://img.shields.io/badge/Threading-concurrent.futures-orange?style=flat-square) ![CLI](https://img.shields.io/badge/CLI-argparse-purple?style=flat-square) ## 📋 目录 - [项目概述](#project-overview) - [小组成员](#group-members) - [技术架构](#technical-architecture) - [核心特性](#key-features) - [环境要求](#requirements) - [安装与设置](#installation--setup) - [使用方法](#usage) - [CLI 参考](#cli-reference) - [开发阶段](#development-phases) - [项目结构](#project-structure) - [致谢](#acknowledgements) ## 项目概述 **背景:** 作为网络安全公司模拟初级安全工程师职责的一部分,开发此工具是为了满足对专业级网络扫描器的需求,该扫描器能够在企业子网中进行内部审计。 该扫描器通过利用并发的多线程、强大的错误处理和结构化的命令行界面,旨在超越基础的脚本解决方案。它能够识别单个主机或整个 CIDR 块上的开放 TCP 端口,使其既适用于针对性审计,也适用于广泛的审计任务。 本项目展示了任务说明书中概述的对 **Socket 编程**、**并发** 和 **输入解析** 的熟练掌握。 ## 小组成员 | 学号 | 贡献 | |--------------------|--------------| | COHNDNE251F-035 | 核心网络与 Socket 实现 | | COHNDNE251F-038 | 子网解析与 IP 地址模块集成 | | COHNDNE251F-043 | 多线程架构与性能优化 | | COHNDNE251F-045 | CLI 界面、参数解析与文档编写 | ## 技术架构 该工具围绕四个核心开发阶段构建,每个阶段都在前一个阶段的基础上构建,以提供生产级质量的扫描解决方案: ``` User Input (argparse) │ ▼ IP / CIDR Parsing (ipaddress module) │ ▼ ThreadPoolExecutor (concurrent.futures) ┌───┴───────────────────┐ │ Thread 1 │ Thread N │ socket.connect() │ socket.connect() │ → Port Result │ → Port Result └───────────────────────┘ │ ▼ Aggregated Results → Terminal Output ``` ## 核心特性 | 特性 | 描述 | 使用的模块 | |---|---|---| | **核心网络** | 尝试建立具有可配置超时的 TCP 连接,以防止在过滤端口上挂起 | `socket` | | **子网解析** | 支持扫描单个 IP 或完整的 CIDR 块(例如 `192.168.1.0/24`) | `ipaddress` | | **高性能** | 多线程架构显著减少了扫描时间,优于顺序扫描方法 | `concurrent.futures.ThreadPoolExecutor` | | **CLI 界面** | 灵活的终端界面,支持目标、端口范围和线程数配置 | `argparse` | | **错误处理** | 优雅地管理无法访问的主机、拒绝连接和网络超时 | `socket`, `try/except` | ## 环境要求 - **Python 3.x**(由于依赖 `ipaddress` 和 `concurrent.futures`,不支持低于 3.4 的版本) - **无外部依赖** — 该工具完全基于 Python 标准库构建 ``` socket ipaddress concurrent.futures argparse ``` ## 安装与设置 **步骤 1 — 克隆仓库** ``` git clone https://github.com/Janiru-Sudasinghe/Network-Scanner-Project cd Network-Scanner-Project ``` **步骤 2 — 验证 Python 版本** ``` python --version # 预期要求:Python 3.x ``` **步骤 3 — 确认无需外部包** ``` # 无需 pip install。所有模块均来自 Python Standard Library。 ``` ## 使用方法 ### 基本扫描 — 单个主机(默认端口) 使用一组默认的常用审计端口扫描单个 IP 地址。 ``` py scanner.py -t 192.168.120.131 ``` **默认扫描端口:** `21, 22, 23, 80, 139, 443, 445, 3306, 8080` ### 子网扫描 — 指定端口的 CIDR 块 扫描 `/24` 子网中的所有主机的指定端口,适用于广泛的内部审计。 ``` py scanner.py -t 192.168.120.0/24 -p 22,80,443 ``` ### 端口范围扫描 — 增加线程数的自定义范围 使用 100 个并发线程扫描单个主机上的端口范围,以实现最大吞吐量。 ``` py scanner.py -t 192.168.120.131 -p 1-1000 -w 100 ``` ### 混合格式 — 单个端口与范围组合 将单个端口声明与连字符范围相结合。 ``` py scanner.py -t 192.168.120.131 -p 21,22,80,8000-8010 -w 75 ``` ### 错误用例 — 格式错误的目标 通过提供无效的 IP 地址来测试错误处理(优雅地打印清晰的错误信息而不会崩溃)。 ``` python scanner.py -t not-an-ip -p 80 ``` ### 示例输出 ``` py scanner.py -t 192.168.120.131 -p 1-1000 -w 100 ``` ``` ======================================================== Network Discovery & Auditing Tool — Group 08 ======================================================== Target : 192.168.120.131 Ports : 1000 port(s) queued Threads : 100 concurrent workers ======================================================== [OPEN] 192.168.120.131 Port 53 (DNS) [OPEN] 192.168.120.131 Port 23 (Telnet) [OPEN] 192.168.120.131 Port 25 (SMTP) [OPEN] 192.168.120.131 Port 80 (HTTP) [OPEN] 192.168.120.131 Port 22 (SSH) [OPEN] 192.168.120.131 Port 21 (FTP) [OPEN] 192.168.120.131 Port 139 (NetBIOS) [OPEN] 192.168.120.131 Port 111 [OPEN] 192.168.120.131 Port 445 (SMB) [OPEN] 192.168.120.131 Port 513 [OPEN] 192.168.120.131 Port 512 [OPEN] 192.168.120.131 Port 514 ======================================================== Scan complete. Open ports found : 12 Total checks : 1000 Time elapsed : 10.16 seconds ======================================================== ``` ## CLI 参考 | 参数 | 长格式 | 类型 | 必填 | 默认值 | 描述 | |---|---|---|---|---|---| | `-t` | `--target` | `str` | ✅ 是 | — | 目标 IP 地址或 CIDR 子网块 | | `-p` | `--ports` | `str` | ❌ 否 | `21,22,23,80,139,443,445,3306,8080` | 逗号分隔的端口或范围(例如 `1-1024`) | | `-w` | `--workers` | `int` | ❌ 否 | `50` | 扫描期间使用的并发线程数 | **完整帮助输出:** ``` py scanner.py --help ``` ``` usage: scanner.py [-h] -t TARGET [-p PORTS] [-w WORKERS] Network Discovery & Auditing Tool — Group 08 Performs multi-threaded TCP port scanning across single hosts or CIDR subnets. options: -h, --help show this help message and exit -t, --target TARGET Target IPv4 address or CIDR block (e.g., 192.168.1.1 or 192.168.1.0/24) -p, --ports PORTS Ports to scan. Accepts comma-separated values or ranges (default: 21,22,23,80,139,443,445,3306,8080) -w, --workers WORKERS Number of concurrent threads (default: 50) Examples: python scanner.py -t 192.168.1.1 python scanner.py -t 192.168.1.0/24 -p 22,80,443 python scanner.py -t 192.168.1.1 -p 1-1000 -w 100 Disclaimer: Use only on networks for which you have explicit authorisation. ``` ## 开发阶段 本项目按照任务说明书分五个结构化阶段进行开发: ### 阶段 1 — 核心网络 使用 `socket` 模块实现 TCP 连接尝试。每个连接都受可配置超时的限制,以确保扫描器不会在已过滤或无响应的端口上无限期挂起。 ### 阶段 2 — 子网解析 集成了 `ipaddress` 模块,允许工具接受单个 IP 地址和 CIDR 表示法。给定块内的所有主机地址都会被枚举并系统地扫描。 ### 阶段 3 — 高性能多线程 用 `concurrent.futures.ThreadPoolExecutor` 替换了最初的同步扫描循环。这使得数百个端口检查可以同时进行,与顺序执行相比,扫描时间减少了数个数量级。 ### 阶段 4 — CLI 界面 使用 `argparse` 构建了专业的命令行界面。用户可以直接在终端指定所有扫描参数,而无需修改源代码,从而支持灵活且可重复的审计工作流。 ### 阶段 5 — 版本控制与协作 该项目通过名为 **Network-Scanner-Project** 的 GitHub 仓库进行管理。所有小组成员均通过各自的提交进行贡献,确保了具有可追溯性和可验证性的开发历史。该仓库包含完整的文档和设置说明。 - 🔗 **仓库:** [Network-Scanner-Project](https://github.com/Janiru-Sudasinghe/Network-Scanner-Project) ## 项目结构 ``` Network-Scanner-Project/ │ ├── scanner.py # Main source file — all scanning logic ├── README.md # Project documentation (this file) └── requirements.txt # Dependency declaration (standard library only) ``` ## 道德与法律免责声明 ## 致谢 - 作为 **Python 编程 - 网络编程设计** 的提交作品开发 - 课程机构:*National Institute of Business Management (NIBM)* - 提交者:**第 08 小组** - 截止日期:2026 年 5 月 3 日,星期日
标签:argparse, CIDR解析, Maven构建, Python, Socket编程, TCP端口扫描, 企业网络安全, 内部审计, 子网扫描, 安全工程, 并发执行, 插件系统, 数据泄露防护, 无后门, 漏洞评估准备, 网络发现, 网络安全, 网络扫描器, 网络探测, 逆向工具, 隐私保护