SanghaviSegver/network-scanner

GitHub: SanghaviSegver/network-scanner

基于 Python 的命令行子网扫描工具,能够发现存活主机、解析主机名并识别常见开放端口。

Stars: 0 | Forks: 0

# 🔍 Python 网络扫描器 一款使用 Python 构建的命令行网络扫描工具,能够发现存活主机、解析主机名,并识别子网中的开放端口——类似于基础的 Nmap 功能。 ## 📌 功能 - ✅ 通过 Ping 扫描检测任意子网中的存活主机 - ✅ 通过反向 DNS 查询解析主机名 - ✅ 扫描 13 种常见服务端口(SSH、HTTP、FTP、MySQL、RDP 等) - ✅ 多线程扫描,实现快速获取结果(50 个线程) - ✅ 终端实时进度条 - ✅ 导出带时间戳的 JSON 报告 - ✅ 兼容 Windows、Linux 和 macOS ## 🛠️ 使用的技术 - Python 3.x - `socket` — TCP 端口扫描和主机名解析 - `subprocess` — 跨平台执行 ping 命令 - `ipaddress` — 子网解析与 IP 遍历 - `concurrent.futures` — 多线程扫描 - `json` — 生成报告 ## 🚀 如何运行 ### 1. 克隆仓库 ``` git clone https://github.com/SanghaviSegver/network-scanner.git cd network-scanner ``` ### 2. 运行扫描器 ``` python network_scanner.py ``` ### 3. 根据提示输入子网 ``` Enter subnet to scan (e.g. 192.168.1.0/24): 192.168.1.0/24 ``` ## 📊 示例输出 ``` ======================================================= Network Scanner - Scanning: 192.168.1.0/24 Started: 2025-06-01 10:30:00 ======================================================= [*] Scanning 254 hosts... [+] HOST UP 192.168.1.1 router.local Ports : 80/HTTP, 443/HTTPS [+] HOST UP 192.168.1.5 desktop-pc Ports : 22/SSH, 3389/RDP ======================================================= Scan Complete! Total Hosts UP : 2 Finished: 2025-06-01 10:30:45 ======================================================= ``` ## 📁 报告导出 (JSON) ``` { "scan_time": "20250601_103045", "subnet": "192.168.1.0/24", "total_hosts_up": 2, "hosts": [ { "ip": "192.168.1.1", "status": "UP", "hostname": "router.local", "open_ports": [ {"port": 80, "service": "HTTP"}, {"port": 443, "service": "HTTPS"} ] } ] } ``` ## 📡 扫描的端口 | 端口 | 服务 | |------|---------| | 21 | FTP | | 22 | SSH | | 23 | Telnet | | 25 | SMTP | | 53 | DNS | | 80 | HTTP | | 110 | POP3 | | 143 | IMAP | | 443 | HTTPS | | 3306 | MySQL | | 3389 | RDP | | 8080 | HTTP-Alt| | 8443 | HTTPS-Alt| ## 🔧 涉及的网络概念 - **TCP/IP** — 理解 IP 寻址和用于端口扫描的 TCP 握手 - **Subnetting** — 解析 CIDR 表示法以遍历有效的主机 IP - **DNS** — 通过反向查询解析 IP → 主机名 - **Socket Programming** — 底层 TCP 连接尝试,用于检测开放端口 - **ICMP** — Ping (ICMP Echo Request) 用于检查主机可用性 ## 📌 使用场景 - 网络清单和资产发现 - 家庭实验室网络监控 - 学习 TCP/IP 和 socket 编程 - 审计前侦察(仅限您拥有的网络) ## ⚠️ 免责声明 本工具仅供教育目的使用,且仅适用于您拥有或获得明确授权进行扫描的网络。未经授权的扫描是非法行为。 ## 👤 作者 **Sanghavi S** 计算机科学工程学士 感兴趣领域:Network Engineering | Python | Linux | MERN Stack [LinkedIn](https://www.linkedin.com/in/sanghavi-s-721416215/) | [GitHub](https://github.com/SanghaviSegver)
标签:Python, Socket编程, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络扫描, 逆向工具