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编程, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络扫描, 逆向工具