tldr-it-stepankutaj/network-scanner

GitHub: tldr-it-stepankutaj/network-scanner

一款基于 C++ 的高性能跨平台网络扫描工具,专注于通过 ICMP 和 TCP 探测快速发现网段中的存活主机,适合安全评估和日常运维使用。

Stars: 1 | Forks: 0

# network-scanner ![GitHub Release](https://img.shields.io/github/v/release/tldr-it-stepankutaj/network-scanner) ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fae588eba6171121.svg) `network-scanner` 是一个用 C++ 编写的极速网络扫描工具,支持 ICMP (ping)、TCP 端口探测和回退模式。它能高效扫描整个 IP 范围,并提供基于 RTT 的彩色输出,非常适合系统管理员、红队或基础设施测试人员使用。 ## 功能 - ICMP 扫描 (原始套接字 ping) - TCP 回退 (例如,如果 ICMP 被阻止,则扫描端口 22/80/443) - 基于 RTT 的彩色输出 - 多线程 (可自定义线程数) - 跨平台:Linux 和 macOS (包括 ARM64) - JSON 输出,用于脚本和自动化 - 可配置的探测超时 - MAC 厂商识别 (通过 nmap-mac-prefixes 数据库) - 优雅的 Ctrl+C 处理并输出部分结果 - 自动子网检测 (支持任何 CIDR 前缀,不仅限于 /24) - 详细和调试日志模式 - 扫描统计信息 (持续时间、主机数量、发现率) - Bash 和 Zsh 的 Shell 自动补全 - Man page 文档 - 通过 Google Test 进行单元测试 ## 使用方法 ``` network-scanner [options] ``` ### 选项 | 选项 | 描述 | |--------|-------------| | `--threads N` | 线程数 (默认值:CPU 核心数) | | `--mode MODE` | 扫描模式:`icmp`、`tcp` 或 `fallback` (默认值:`fallback`) | | `--port PORT` | 用于 TCP 扫描的端口 (默认值:80) | | `--timeout MS` | 探测超时时间 (毫秒) (默认值:1000) | | `--thorough` | 详尽扫描模式 (准确率更高,速度较慢) | | `--json` | 以 JSON 格式输出结果 (非交互式) | | `--no-color` | 禁用彩色输出 (同时遵循 `NO_COLOR` 环境变量) | | `--verbose` | 在 stderr 上显示信息性消息 | | `--debug` | 在 stderr 上显示调试消息 | | `--show-all` | 显示所有主机,包括未确认的主机 | | `--skip-scan` | 跳过网络扫描 | | `--no-banner` | 禁用 ASCII 艺术 Banner | | `--no-clear` | 启动时不清屏 | | `--help` | 显示帮助信息 | | `--version` | 显示版本信息 | ### 示例 ``` # 使用默认参数的交互式扫描 network-scanner # 使用 64 个线程对 443 端口进行 TCP 扫描 network-scanner --mode tcp --port 443 --threads 64 # 用于脚本编写的 JSON 输出 network-scanner --json --no-color | jq . # 具有更长超时时间的彻底扫描 network-scanner --thorough --timeout 3000 # 用于查看运行状况的 Debug 模式 network-scanner --debug --no-banner --no-clear ``` ### Shell 自动补全 该工具附带了对 Bash 和 Zsh 的 Shell 自动补全支持。安装后,以下内容的 Shell 自动补全将自动可用: - 命令选项 (`--threads`、`--mode`、`--port`、`--timeout`、`--json` 等) - 模式值 (`icmp`、`tcp`、`fallback`) ``` # 查看 man page man network-scanner # 查看命令帮助 network-scanner --help ``` ## 依赖项 ### 运行时依赖 - libcurl - libstdc++ (C++ 标准库) — 在发布二进制文件中静态链接 ### 可选依赖 - `fping` - 如果原始套接字不可用,在回退模式下使用 (使用 `apt`、`yum` 或 `brew` 安装) - `nmap-mac-prefixes` - 位于 `/usr/share/nmap/nmap-mac-prefixes` 的 MAC 厂商数据库,用于识别设备厂商 ## 兼容性 ### 已测试的操作系统 - Ubuntu 20.04 LTS 及更新版本 - Debian 10 及更新版本 - CentOS/RHEL 7 及更新版本 (在 v2.0.0 中通过静态链接修复了 GLIBCXX 问题) - Fedora 33 及更新版本 - Oracle Linux 9.5 - macOS 12 (Monterey) 及更新版本 (Intel 和 Apple Silicon) ### 所需权限 - ICMP 模式需要 root 权限才能创建原始套接字 - TCP 模式可以以非特权用户身份运行 ## 下载 Linux 和 macOS 的预编译二进制文件可供下载: ### 最新版本 | 平台 | 包 | 链接 | |----------|---------|------| | Linux (Debian/Ubuntu) | DEB | [network-scanner-latest.deb](https://github.com/tldr-it-stepankutaj/network-scanner/releases/latest) | | Linux (RHEL/CentOS/Fedora) | RPM | [network-scanner-latest.rpm](https://github.com/tldr-it-stepankutaj/network-scanner/releases/latest) | | Linux (通用) | TAR.GZ | [network-scanner-linux.tar.gz](https://github.com/tldr-it-stepankutaj/network-scanner/releases/latest/download/network-scanner-linux.tar.gz) | | macOS (Apple Silicon) | TAR.GZ | [network-scanner-macos-arm64.tar.gz](https://github.com/tldr-it-stepankutaj/network-scanner/releases/latest/download/network-scanner-macos-arm64.tar.gz) | ### 从二进制存档安装 ``` # 下载最新版本 (Linux) curl -LO https://github.com/tldr-it-stepankutaj/network-scanner/releases/latest/download/network-scanner-linux.tar.gz # 解压 tar -xzf network-scanner-linux.tar.gz # 安装 (需要 root 权限) sudo cp -r usr/* /usr/ # 验证安装 network-scanner --version ``` ## 构建 ### 前置条件 - CMake >= 3.10 - C++17 编译器 (GCC / Clang) - libcurl 开发头文件 - macOS 或 Linux ### 构建依赖 - `cmake` (>= 3.10) - 支持C++17的 `g++` 或 `clang++` - `make` - `libcurl-dev` / `libcurl4-openssl-dev` (Debian/Ubuntu) 或 `libcurl-devel` (RHEL/Fedora) - 用于开发/构建 RPM:`rpm-build` - 用于开发/构建 DEB:`dpkg-dev` ### 构建说明 #### 使用 configure 脚本 (推荐大多数用户使用) ``` git clone https://github.com/tldr-it-stepankutaj/network-scanner.git cd network-scanner ./configure make ``` 您可以使用以下选项自定义构建: ``` ./configure --prefix=/usr/local --debug ``` 运行 `./configure --help` 以查看所有可用选项。 #### 直接使用 CMake ``` git clone https://github.com/tldr-it-stepankutaj/network-scanner.git cd network-scanner mkdir build && cd build cmake .. make -j$(nproc) ``` #### 静态链接 (以实现最大兼容性) ``` cmake -B build -DSTATIC_LIBCXX=ON cmake --build build --parallel ``` ### 运行测试 ``` cmake -B build -DBUILD_TESTS=ON cmake --build build --parallel cd build && ctest --output-on-failure ``` ## 安装 ### 从源码安装 如果您使用了 configure 脚本: ``` sudo make install ``` 如果您直接使用了 CMake: ``` # 从 build 目录 sudo make install ``` 您还可以通过以下命令卸载该软件: ``` sudo make uninstall ``` 这将安装: - 主可执行文件到 `/usr/bin/` - Man page 到 `/usr/share/man/man1/` - Bash 补全到 `/usr/share/bash-completion/completions/` - Zsh 补全到 `/usr/share/zsh/site-functions/` 要更改安装前缀,请使用: ``` ./configure --prefix=/usr/local ``` ### 从软件包安装 ``` # Debian/Ubuntu sudo dpkg -i network-scanner-*.deb # RHEL/CentOS/Fedora sudo rpm -i network-scanner-*.rpm ``` ## 更新日志 (v2.0.0) - **JSON 输出** (`--json`),用于脚本和自动化 - **可配置的超时** (`--timeout MS`),适用于缓慢的网络 - **`--no-color` 标志** 和 `NO_COLOR` 环境变量支持 - **`--verbose` / `--debug`** 日志输出到 stderr - **优雅的 Ctrl+C** — 中断扫描并干净地输出部分结果 - **自动子网检测** — 使用实际的子网掩码而不是硬编码的 /24 - **MAC 厂商识别** — 通过 ARP + nmap-mac-prefixes 查找设备制造商 - **扫描统计** — 扫描后显示持续时间、主机数量和发现率 - **macOS 网关检测** — 已修复;以前在 macOS 上返回为空 - **安全修复** — 在 fping 回退中将 `std::system()` 替换为 `fork/exec` (无 Shell 注入) - **静态 libstdc++ 链接** — 修复了在较旧的 Linux 发行版 (RHEL 9、Oracle Linux) 上的 `GLIBCXX_3.4.30` 错误 - **macOS CI 构建** — 发布版中现已包含 ARM64 二进制文件 - **单元测试** — 用于 IP/CIDR 解析、校验和和子网功能的 Google Test 套件 ## 许可证 GPL-3.0 许可证 ## 作者 本工具由 Stepan Kutaj (TLDR-IT) 开发。欲获取更多信息或有任何疑问,请通过 [stepan.kutaj@tldr-it.com](mailto:stepan.kutaj@tldr-it.com) 联系我,或访问我的网站 [www.tldr-it.com](https://www.tldr-it.com)。 [![GitHub](https://img.shields.io/github/followers/tldr-it-stepankutaj?label=Follow%20%40tldr-it-stepankutaj&style=social)](https://github.com/tldr-it-stepankutaj) [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=social&logo=linkedin)](https://www.linkedin.com/in/stepankutaj) [![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-orange?style=social&logo=buy-me-a-coffee)](https://buymeacoffee.com/stepankutae) *仅供教育和合法的安全研究目的使用。在对任何系统执行侦察之前,请务必获得适当的授权。*
标签:API安全, Awesome, Bash脚本, C++, CIDR, ICMP Ping, JSON输出, Linux工具, MAC地址厂商识别, Maven构建, Shell自动补全, TCP扫描, 基础设施测试, 存活探测, 插件系统, 数字取证, 数据擦除, 数据泄露防护, 无线安全, 端口探测, 系统管理, 网络发现, 网络安全, 网络工程, 网络扫描器, 网络探测, 自动化脚本, 隐私保护