stev-gif/network-scanner

GitHub: stev-gif/network-scanner

这是一个基于 Bash 和 Nmap 的本地网络扫描工具,旨在通过分阶段扫描简化主机发现、端口枚举及服务版本识别的过程。

Stars: 0 | Forks: 0

# 🔍 网络扫描器 ![Bash](https://img.shields.io/badge/language-Bash-4EAA25?style=flat-square&logo=gnubash&logoColor=white) ![nmap](https://img.shields.io/badge/tool-nmap-0E83CD?style=flat-square) ![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS-lightgrey?style=flat-square) ![License](https://img.shields.io/badge/license-MIT-green?style=flat-square) 一个基于 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框架, 二进制发布, 云存储安全, 应用安全, 开源工具, 插件系统, 数据统计, 服务识别, 端口扫描, 系统独立性, 系统管理, 网络安全, 网络扫描, 隐私保护