Azilbelaid/Network-Scanner
GitHub: Azilbelaid/Network-Scanner
一款基于Python标准库开发的多线程网络扫描器,支持主机发现、端口扫描和服务识别,并能生成结构化的TXT/JSON报告。
Stars: 0 | Forks: 0
# 🔍 Network Scanner - 网络分析与安全工具



## 📋 描述
**Network Scanner** 是一个用 Python 开发的网络分析工具,可以实现:
- 🔍 发现网络中的活跃主机
- 🔓 扫描特定目标的开放端口
- 🏷️ 识别监听中的服务
- 📊 生成详细报告(TXT 和 JSON)
本项目作为我网络安全培训的一部分开发,旨在展示我在系统编程、网络和安全方面的技能。
## 🎯 项目目标
创建此项目的目的是:
- 理解网络扫描的基础知识
- 掌握 Python 网络编程(socket、threading)
- 实践网络安全分析
- 开发一个可用于渗透测试/审计的工具
## ✨ 功能特性
### 🔍 端口扫描
- 快速多线程扫描
- 支持单个端口或端口范围(例如:`80,443` 或 `1-1000`)
- 自动识别服务(HTTP、SSH、FTP 等)
- 可配置超时时间
### 🌐 主机发现
- 支持 CIDR 表示法(例如:`192.168.1.0/24`)
- 自动检测活跃主机
- 反向 DNS 解析以识别主机名
### 📊 报告生成
- **TXT 格式**:人类可读的报告
- **JSON 格式**:用于自动化处理的结构化数据
- 详细信息:IP、主机名、端口、服务、时间戳
### ⚡ 性能
- 多线程并行扫描(最多支持 50 个并发线程)
- 针对快速扫描优化超时设置
- 高效的资源管理
## 🛠️ 使用的技术
- **Python 3.8+**
- **标准库**:
- `socket`:底层网络通信
- `concurrent.futures`:用于并行化的线程库
- `ipaddress`:IP 地址和网络操作
- `json`:报告序列化
- `argparse`:命令行接口
**无需任何外部依赖!** ✅
## 📦 安装
### 前置条件
- Python 3.8 或更高版本
- Linux/macOS/Windows 系统
### 下载
```
# 克隆或下载项目
git clone https://github.com/votre-username/network-scanner.git
cd network-scanner
# 使脚本可执行 (Linux/macOS)
chmod +x scanner.py
```
## 🚀 使用说明
### 基本语法
```
python3 scanner.py -t -p [OPTIONS]
```
### 使用示例
#### 1️⃣ 使用常用端口扫描单个 IP
```
python3 scanner.py -t 192.168.1.1 -p 80,443,22,21,25
```
#### 2️⃣ 扫描整个网络 (CIDR)
```
python3 scanner.py -t 192.168.1.0/24 -p 80,443
```
#### 3️⃣ 扫描端口范围
```
python3 scanner.py -t scanme.nmap.org -p 1-1000
```
#### 4️⃣ 使用自定义超时时间扫描
```
python3 scanner.py -t 192.168.1.100 -p 1-65535 --timeout 2 --threads 100
```
#### 5️⃣ 使用自定义报告名称扫描
```
python3 scanner.py -t 10.0.0.0/24 -p 80,443,22 -o mon_scan_reseau
```
### 可用选项
| 选项 | 描述 | 默认值 |
|--------|-------------|--------|
| `-t, --target` | 要扫描的目标(IP、主机名、CIDR) | **必需** |
| `-p, --ports` | 要扫描的端口(例如:`80,443` 或 `1-1000`) | `21,22,23,25,80,443,3306,3389,8080` |
| `--timeout` | 连接超时时间(秒) | `1` |
| `--threads` | 并行线程数 | `50` |
| `-o, --output` | 输出文件的基本名称 | `scan_report` |
## 📊 输出示例
### 控制台
```
============================================================
NETWORK SCANNER - Analyse de Sécurité Réseau
Auteur: Belaid AZIL
============================================================
[*] Scan de 192.168.1.1 en cours...
[+] Port 22 ouvert - Service: ssh
[+] Port 80 ouvert - Service: http
[+] Port 443 ouvert - Service: https
============================================================
Scan terminé en 3.45 secondes
Hôtes avec ports ouverts: 1
Total ports ouverts: 3
============================================================
[+] Rapport TXT généré: scan_report.txt
[+] Rapport JSON généré: scan_report.json
```
### TXT 报告 (`scan_report.txt`)
```
======================================================================
RAPPORT D'ANALYSE RÉSEAU
======================================================================
INFORMATIONS DU SCAN:
----------------------------------------------------------------------
date: 2026-03-07 14:30:22
scanner: Network Scanner v1.0
author: Belaid AZIL
targets: ['192.168.1.1']
ports_scanned: 9
RÉSULTATS PAR HÔTE:
----------------------------------------------------------------------
Hôte: 192.168.1.1
Nom d'hôte: router.local
Heure du scan: 2026-03-07 14:30:25
Ports ouverts (3):
- Port 22/tcp (open) - Service: ssh
- Port 80/tcp (open) - Service: http
- Port 443/tcp (open) - Service: https
======================================================================
RÉSUMÉ:
----------------------------------------------------------------------
total_hosts_scanned: 1
total_open_ports: 3
scan_duration_seconds: 3.45
======================================================================
```
### JSON 报告 (`scan_report.json`)
```
{
"scan_info": {
"date": "2026-03-07 14:30:22",
"scanner": "Network Scanner v1.0",
"author": "Belaid AZIL",
"targets": ["192.168.1.1"],
"ports_scanned": 9
},
"hosts": {
"192.168.1.1": {
"ip": "192.168.1.1",
"hostname": "router.local",
"scan_time": "2026-03-07 14:30:25",
"open_ports": [
{"port": 22, "state": "open", "service": "ssh"},
{"port": 80, "state": "open", "service": "http"},
{"port": 443, "state": "open", "service": "https"}
]
}
},
"summary": {
"total_hosts_scanned": 1,
"total_open_ports": 3,
"scan_duration_seconds": 3.45
}
}
```
## 🔒 安全注意事项
### ⚠️ 仅限合法使用
- **仅扫描您自己的网络,或您已获得明确授权的网络**
- 未经许可扫描第三方网络在大多数国家都是**违法的**
- 本工具仅用于教育目的和经授权的安全审计
### 🛡️ 最佳实践
- 在测试/实验环境中使用
- 在对生产环境进行任何扫描之前获得书面授权
- 遵守您组织的安全策略
- 不得用于恶意活动
## 🎓 展示的技能
本项目突出了我在以下方面的技能:
- ✅ **Python 编程**:OOP、异常处理、threading
- ✅ **网络**:TCP/IP Socket、网络协议、IP 寻址
- ✅ **安全**:端口扫描、服务枚举
- ✅ **优化**:并行编程、性能管理
- ✅ **文档**:注释代码、专业的 README
## 🚧 未来改进
- [ ] 支持 UDP 协议
- [ ] 服务版本检测(Banner Grabbing)
- [ ] 导出为 CSV 和 HTML 格式
- [ ] 图形用户界面 (GUI)
- [ ] 操作系统检测(OS Fingerprinting)
- [ ] 集成 NSE 脚本(Nmap Scripting Engine)
## 📚 资源与学习
### 涵盖的概念
- **TCP 三次握手**:理解 SYN/SYN-ACK/ACK
- **端口扫描技术**:TCP Connect 扫描
- **服务枚举**:识别常见服务
- **Python 线程**:使用 `ThreadPoolExecutor`
- **网络编程**:Python 中的 `socket` 模块
### 参考资料
- [Python Socket 文档](https://docs.python.org/3/library/socket.html)
- [OWASP 测试指南 - 端口扫描](https://owasp.org/)
- [Nmap 文档](https://nmap.org/book/man.html)
## 👨💻 作者
**Belaid AZIL**
- 📧 邮箱: belaidazil48@gmail.com
- 🔗 LinkedIn: [linkedin.com/in/belaid-azil-42b30a2ba](https://linkedin.com/in/belaid-azil-42b30a2ba)
- 💻 GitHub: [github.com/Azilbelaid](https://github.com/Azilbelaid)
- 🎓 L3 计算机科学学生 - 卡昂诺曼底大学
## 📄 许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 `LICENSE` 文件。
**⭐ 如果这个项目对您有用,请不要犹豫分享它! ⭐**
标签:AES-256, CIDR, Facebook API, JSON报告, Linux工具, Python, Qt框架, Socket编程, 对称加密, 插件系统, 数据统计, 无后门, 服务识别, 漏洞评估, 端口扫描, 端口探测, 系统分析, 网络分析, 网络安全, 网络扫描器, 自动化审计, 逆向工具, 隐私保护