agoc812/Network-Scanner-Tool
GitHub: agoc812/Network-Scanner-Tool
基于Python的多线程TCP端口扫描器,用于网络安全审计和系统管理。
Stars: 0 | Forks: 0
# 🔍 网络发现与审计工具
[](https://www.python.org/downloads/)
[](https://github.com)
[](LICENSE)
[](https://github.com)
一个适用于生产的、基于 Python 的 **多线程 TCP 端口扫描器**,用于网络安全审计和系统管理。此工具旨在进行内部网络侦察、漏洞评估准备和学习网络编程概念。
## 📋 目录
- [功能](#-features)
- [技术规格](#-technical-specifications)
- [安装](#-installation)
- [快速入门](#-quick-start)
- [使用指南](#-usage-guide)
- [示例输出](#-sample-output)
- [项目结构](#-project-structure)
- [技术深入](#-technical-deep-dive)
- [免责声明](#-disclaimer)
## 🚀 功能
| 功能 | 描述 |
|---------|-------------|
| **⚡ 高性能** | 多线程架构每秒扫描数百个端口 |
| **🌐 子网支持** | 使用 CIDR 表示法(例如,192.168.1.0/24)扫描整个网络 |
| **🎯 灵活的端口选择** | 单个端口、逗号分隔的列表、范围或预定义的常用端口 |
| **🔄 智能主机发现** | 在深度扫描之前快速识别活动主机以节省时间 |
| **📊 实时进度** | 带有百分比和经过时间的实时进度跟踪 |
| **💾 导出结果** | 将扫描结果保存到文本文件以供文档使用 |
| **🎨 专业 CLI** | 清洁的命令行界面,带有 argparse |
| **🛡️ 优雅处理** | Ctrl+C 中断、超时管理、全面的错误恢复 |
| **🔍 服务检测** | 识别开放端口的常用服务名称 |
| **📝 详细模式** | 详细输出,用于调试和学习 |
## 📊 技术规格
| 方面 | 详细信息 |
|--------|--------|
| **语言** | Python 3.6+ |
| **依赖项** | 无(仅使用 Python 标准库) |
| **并发模型** | ThreadPoolExecutor,具有可配置的线程池 |
| **协议** | TCP 连接扫描(完整握手) |
| **端口范围** | 1-65535(完全可配置) |
| **超时默认值** | 1.0 秒(可调整) |
| **线程默认值** | 100 个并发线程(可调整) |
## 💻 安装
### 先决条件
- 系统上已安装 Python 3.6 或更高版本
- 无需额外包!
-
### 第 1 步:克隆仓库
```
# 使用 HTTPS 克隆
git clone https://github.com/agoc812/Network-Scanner-Project.git
# 或使用 SSH 克隆
git clone git@github.com:agoc812/Network-Scanner-Project.git
# 进入项目目录
cd Network-Scanner-Project
```
### 第 2 步:验证 Python 安装
```
# 检查 Python 版本(应为 3.6+)
python --version
# 或在某些系统上
python3 --version
```
### 第 3 步:制作可执行文件(Linux/Mac)
```
# 添加执行权限
chmod +x scanner.py
```
### 第 4 步:测试扫描器
```
# 在本地主机上进行快速测试
python scanner.py -t 127.0.0.1 -p 80,443
```
## 快速入门
### 基本扫描
```
# 使用默认端口(1-1024)扫描本地主机
python scanner.py -t 127.0.0.1
# 使用自定义端口扫描特定主机
python scanner.py -t 192.168.1.1 -p 22,80,443
# 扫描子网
python scanner.py -t 192.168.1.0/24 -p common
```
### 性能扫描
```
# 使用更多线程进行快速扫描
python scanner.py -t 192.168.1.1 -p 1-1000 -T 200
# 将结果保存到文件
python scanner.py -t 192.168.1.0/24 -p 1-1024 --output network_audit.txt
```
## 使用指南
```
python scanner.py -t [OPTIONS]
```
### 基本示例
```
1. Scan Single Host
python scanner.py -t 192.168.1.1
2. Scan Specific Ports
python scanner.py -t 192.168.1.1 -p 22,80,443,3306,8080
3. Scan Port Range
python scanner.py -t 192.168.1.1 -p 1-5000
4. Scan Entire Subnet
python scanner.py -t 192.168.1.0/24 -p 80,443
5. Scan with Hostname
python scanner.py -t google.com -p 80,443
6. Full Network Audit
python scanner.py -t 10.0.0.0/24 -p 1-1024 -T 200 --output full_audit.txt
7. Quick Service Discovery
python scanner.py -t 192.168.1.1 -p common -T 150 -tmo 0.5
8. Verbose Debug Mode
python scanner.py -t 127.0.0.1 -p 1-100 -v
9. Subnet Scan Without Discovery
python scanner.py -t 192.168.1.0/24 -p 22 --no-discovery
```
### 示例输出
```
============================================================
Network Discovery & Auditing Tool
Multi-threaded TCP Port Scanner
Started: 2026-05-03 14:30:25
============================================================
[*] Target: 192.168.1.100
[*] Timeout: 1.0s
[*] Max Threads: 100
[*] Ports to scan: 1024 ports
[*] Starting multi-threaded scan on 192.168.1.100
[*] Scanning 1024 ports with 100 threads...
[*] Progress: 100.0% (1024/1024) | Time: 2.3s | Open: 5
[+] Scan completed in 2.35 seconds
============================================================
SCAN RESULTS
============================================================
Target: 192.168.1.100 (192.168.1.100)
[+] Open ports found: 5
----------------------------------------
22/tcp - ssh
80/tcp - http
443/tcp - https
3306/tcp - mysql
8080/tcp - http-alt
[*] Scan finished
```
### 项目结构
Network-Scanner-Project/
│
├── scanner.py # 主应用程序源代码(500+ 行)
├── README.md # 此文档文件
├── requirements.txt # 依赖项(无需依赖项 - 仅标准库)
│
└── .gitignore # Python 特定的 git 忽略规则
### 技术深入
用户命令
│
▼
┌─────────────────────────────────────────────────────────┐
│ 1. 解析 CLI 参数(argparse) │
│ - 提取目标、端口、线程、超时 │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 2. 解析端口字符串 │
│ "1-1000" → [1,2,3,...,1000] │
│ "22,80,443" → [22,80,443] │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 3. 确定扫描类型 │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │ 单个主机? │ │ 子网(CIDR)? │ │
│ │ 192.168.1.1 │ │ 192.168.1.0/24 │ │
│ └──────────────┘ └──────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────────────────┐
│ 直接扫描 │ │ 子网扫描 │
│ │ │ 1. 生成所有主机 IP │
│ 线程池 │ │ 2. 发现活动主机 │
│ (100 工作者) │ │ 3. 扫描每个活动主机 │
└──────────────────┘ └──────────────────────────────┘
│ │
└────────────┬─────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ 对于每个端口:socket.connect_ex((ip, port)) │
│ 返回 0 → 打开 │
│ 返回其他 → 关闭/过滤 │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 收集结果并向用户显示 │
└─────────────────────────────────────────────────────────┘
### 免责声明
重要 - 请仔细阅读
此工具旨在用于教育目的和授权的网络审计。
## 合法使用:
✅ 扫描您自己的系统和网络
✅ 扫描您有权测试的系统
✅ 您组织内的内部安全审计
✅ 在受控环境中进行的教育练习
## 非法使用:
❌ 未授权扫描网络
❌ 将此工具用于恶意目的
❌ 尝试绕过安全控制
❌ 未经授权访问计算机系统
## 合规性:
用户有责任遵守所有适用的法律和法规,包括:
美国计算机欺诈和滥用法案(CFAA)
英国计算机滥用法
您所在司法区的类似立法
使用此工具表示您拥有适当的授权并接受您行为的所有责任。
标签:AES-256, Awesome, CIDR, Python开发, 云存储安全, 实时进度, 数据统计, 服务检测, 漏洞评估, 生产级工具, 端口扫描, 系统管理, 网络安全, 网络扫描, 网络编程, 逆向工具, 隐私保护