Azilbelaid/Network-Scanner

GitHub: Azilbelaid/Network-Scanner

一款基于Python标准库开发的多线程网络扫描器,支持主机发现、端口扫描和服务识别,并能生成结构化的TXT/JSON报告。

Stars: 0 | Forks: 0

# 🔍 Network Scanner - 网络分析与安全工具 ![Python](https://img.shields.io/badge/Python-3.8+-blue.svg) ![License](https://img.shields.io/badge/License-MIT-green.svg) ![Status](https://img.shields.io/badge/Status-Active-success.svg) ## 📋 描述 **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编程, 对称加密, 插件系统, 数据统计, 无后门, 服务识别, 漏洞评估, 端口扫描, 端口探测, 系统分析, 网络分析, 网络安全, 网络扫描器, 自动化审计, 逆向工具, 隐私保护