stev-gif/network-scanner
GitHub: stev-gif/network-scanner
这是一个基于 Bash 和 Nmap 的本地网络扫描工具,旨在通过分阶段扫描简化主机发现、端口枚举及服务版本识别的过程。
Stars: 0 | Forks: 0
# 🔍 网络扫描器




一个基于 Bash 的本地网络扫描器,用于发现活动主机、枚举开放的 TCP 端口并识别运行的服务版本——这是一个作为实践网络安全作品集项目构建的工具。
## 📸 预览
```
[+] Detected network: 192.168.1.0/24 (interface: eth0)
══════════════════════════════════════════
Phase 1 — Host Discovery
══════════════════════════════════════════
[+] Found 4 live host(s):
● 192.168.1.1 router.local
● 192.168.1.5 desktop.local
● 192.168.1.12 N/A
● 192.168.1.20 raspberrypi.local
══════════════════════════════════════════
Phase 2 — Port & Version Scan
══════════════════════════════════════════
[1/4] Scanning: 192.168.1.1
PORT STATE SERVICE VERSION
────────────────────────────────────────────────────────
22/tcp open ssh OpenSSH 8.9p1
80/tcp open http lighttpd 1.4.59
443/tcp open https lighttpd 1.4.59
```
## ✨ 功能
- **主机发现** — 快速 ping 扫描以查找网络上的所有活动主机
- **端口扫描** — 扫描常用端口(1–1024)或自定义范围
- **版本检测** — 使用 `nmap -sV` 识别服务名称和版本横幅
- **操作系统检测** — 检测每台主机的操作系统(需要 root 权限)
- **自动网络检测** — 如果未指定目标,则自动检测本地子网
- **保存结果** — 使用 `-o` 将完整扫描输出导出到带时间戳的 `.txt` 文件
- **彩色输出** — 干净、可读的终端输出,带有阶段分隔符
- **灵活选项** — 可自定义端口、时序、详细程度和目标范围
## 🛠️ 要求
| 工具 | 安装方式 |
|------|---------|
| `nmap` | `sudo apt install nmap` / `brew install nmap` |
| `bash` | Linux 和 macOS 上预装 |
| `ip` / `ifconfig` | 大多数系统上预装 |
## 🚀 用法
```
# Clone the repo
git clone https://github.com/YOUR_USERNAME/network-scanner.git
cd network-scanner
# Make the script executable
chmod +x network_scanner.sh
# Auto-detect your network and scan
sudo ./network_scanner.sh
# Scan a specific CIDR range
sudo ./network_scanner.sh -t 192.168.1.0/24
# Scan specific ports only
sudo ./network_scanner.sh -t 192.168.1.0/24 -p "22,80,443,3306,8080"
# Save results to a file
sudo ./network_scanner.sh -t 192.168.1.0/24 -o
# Scan all 65535 ports (thorough but slower)
sudo ./network_scanner.sh -t 192.168.1.0/24 -p "1-65535"
# Verbose output
sudo ./network_scanner.sh -t 192.168.1.0/24 -v
```
### 选项
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `-t ` | 目标 IP、范围或 CIDR | 自动检测 |
| `-p ` | 端口范围或逗号分隔的列表 | `1-1024` |
| `-o` | 将输出保存到带时间戳的 `.txt` 文件 | 关闭 |
| `-T <0-5>` | nmap 时序模板(0=最慢,5=最快) | `3` |
| `-v` | 详细模式 — 显示每个主机的原始 nmap 输出 | 关闭 |
| `-h` | 显示帮助信息 | — |
## 📁 项目结构
```
network-scanner/
├── network_scanner.sh # Main scanner script
├── README.md # Project documentation
└── LICENSE # MIT License
```
## 🔬 工作原理
该脚本分三个阶段运行:
**阶段 1 — 主机发现**
使用 `nmap -sn`(ping 扫描)扫描目标范围并识别哪些主机在线,而不触碰任何端口。
**阶段 2 — 端口与版本扫描**
对于每个活动主机,运行 `nmap -sV` 并可选择使用 `-O`(操作系统检测)来枚举开放端口并提取服务版本横幅。
**阶段 3 — 摘要**
打印一个清晰的摘要,包括发现的主机总数、扫描的端口数和扫描持续时间。可选择将结果写入磁盘。
## ⚠️ 法律免责声明
本工具仅用于**教育目的**和**经授权的网络测试**。
## 👤 作者
**Stephen Mungai Muchiri**
- TryHackMe:初级渗透测试师路径毕业生
- 网络安全证书 — Afrihackon Academy
- GitHub: https://github.com/stev-gif
## 📄 许可证
本项目根据 [MIT 许可证](LICENSE) 获得许可。
标签:Awesome, CTI, Facebook API, MIT许可, Qt框架, 二进制发布, 云存储安全, 应用安全, 开源工具, 插件系统, 数据统计, 服务识别, 端口扫描, 系统独立性, 系统管理, 网络安全, 网络扫描, 隐私保护