Raffy01/nettool

GitHub: Raffy01/nettool

这是一个基于 C 语言的高性能网络扫描与侦察工具,利用 Raw Sockets 实现多线程主机发现、端口扫描及操作系统指纹识别。

Stars: 0 | Forks: 0

# C 网络侦察实用工具 (Nettool) ### 技术栈 ![C](https://img.shields.io/badge/c-%2300599C.svg?style=for-the-badge&logo=c&logoColor=white) ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge&logo=linux&logoColor=black) ![Raw Sockets](https://img.shields.io/badge/Raw_Sockets-FF6C37?style=for-the-badge&logo=gnutls&logoColor=white) ![Pthreads](https://img.shields.io/badge/POSIX_Threads-8E75B2?style=for-the-badge&logo=cplusplus&logoColor=white) ### 核心功能 ![ICMP Ping](https://img.shields.io/badge/ICMP_Ping-04414D?style=for-the-badge&logo=wireshark&logoColor=white) ![Traceroute](https://img.shields.io/badge/Traceroute-1F222E?style=for-the-badge&logo=gnu-bash&logoColor=white) ![TCP/UDP Scan](https://img.shields.io/badge/TCP%2FUDP_Scan-b51829?style=for-the-badge&logo=kalilinux&logoColor=white) 本仓库提供了一个基于 C 语言、多线程的网络扫描与侦察工具。通过利用 POSIX Raw Socket 直接操作 IP、ICMP 和 TCP 报头,该实用工具绕过了标准的操作系统网络层。它支持高速异步 ICMP Ping 扫描、隐秘 TCP SYN 扫描、网络路由跟踪(Traceroute),以及通过 TTL 和 TCP Window Size 分析进行的操作系统(OS)指纹识别。 ## 仓库结构 ``` . ├── Makefile ├── nettool.h ├── main.c ├── utils.c ├── ping.c ├── trace.c └── scan.c ``` - **nettool.h** 核心头文件,定义了跨所有模块使用的共享全局变量、宏、数据结构(如 TCP 伪首部)和函数原型。 - **main.c** CLI 入口点。初始化全局状态,使用 getopt_long 解析用户命令行选项,强制执行 root 权限要求,并处理目标字符串(解析域名或计算 CIDR 子网范围)。 - **utils.c** 包含通用的网络实用工具函数,包括校验和计算、主机名到 IP 的解析、本地 IP 发现,以及基于 IP/TCP 报头的核心 OS 指纹识别逻辑。 - **ping.c** 实现 ICMP Echo Request/Reply 操作。包含带有 RTT 统计信息的标准 Ping 测试器,以及一个高度优化的异步 Ping Sweep (-n),可在 1.5 秒内发现整个子网中的活动主机。 - **trace.c** 通过递增 IP Time-To-Live (TTL) 字段来实现 Traceroute 功能,以映射网络跳数并测量到目标的传输延迟。 - **scan.c** 多线程端口扫描引擎。调度工作线程执行标准 TCP Connect 扫描 (--st)、UDP 扫描 (--su) 和自定义制作的 TCP SYN 隐秘扫描 (--ss),这些扫描无需完成三次握手即可提取详细的 OS 指纹和 Banner 字符串。 ## 前置条件 1. **Linux 操作系统**(需要 POSIX 系统调用和 Raw Socket 支持,这在 Windows/macOS 上受到严格限制或实现方式不同)。 2. **GCC**(版本 >= 7.0)。 3. **Pthread 库**(多线程端口扫描所必需)。 4. **Root 权限**(执行必须严格使用 `sudo` 来打开 `SOCK_RAW` Socket)。 ## 安装与设置 1. **安装依赖项**(基本构建工具): sudo apt update sudo apt install -y build-essential 2. **克隆或复制**此仓库到您的本地机器。 3. **编译程序**: make 这将生成可执行二进制文件:`nettool`。 **注意**:程序执行时,会自动将开放端口和发现的主机记录到当前目录下的 `nettool_result.log` 文件中。它会智能地将文件所有权转回调用用户(通过 `SUDO_UID` 和 `SUDO_GID`),以防止日志文件被 root 锁定。 4. **清理构建文件**(可选): make clean ## 使用方法 该工具必须使用 root 权限运行。 ``` sudo ./nettool [OPTIONS] [TARGET IP/DOMAIN or CIDR] ``` **目标指定**: - 支持单个 IP 地址(例如 192.168.0.1)、域名(例如 google.com)和 CIDR 子网表示法(例如 192.168.0.0/24)。 **模式选项**: - `-s ` :对指定范围执行端口扫描(例如 `-s 80` 或 `-s 1-1024`)。 - `--st` :TCP Connect 扫描(默认模式。高度可靠,但在目标上会留下日志)。 - `--ss` :TCP SYN 隐秘扫描(绕过日志,高度并发,并执行 OS 指纹识别)。 - `--su` :UDP 端口扫描。 - `-n`, `--sn` :高速 Ping Sweep。发现子网中的活动主机而不扫描端口。 - `-p` :标准 Ping 模式。 - `--infinite` :持续 Ping 直到手动停止(Ctrl+C)。 - `-t` :Traceroute 模式。映射到目标的网络跳数。 **调优选项**: - `-W ` :端口扫描的并发线程数(默认:50)。 - `-T ` :数据包响应的超时阈值,以毫秒为单位(默认:500)。 - `-f ` :从文本文件读取目标(每行一个 IP/域名)。 ## 示例工作流 1. **发现本地子网中的活动主机**: sudo ./nettool -n 192.168.0.0/24 输出: [안내] 고속 Ping Sweep 시작 (대상 호스트: 254개)... [Alive] 살아있는 호스트 발견: 192.168.0.1 [TTL: 64, OS: Linux/Unix/Mac] [Alive] 살아있는 호스트 발견: 192.168.0.5 [TTL: 128, OS: Windows] Sweep 완료! 총 2개의 호스트 발견. 2. **对特定目标执行带 OS 指纹识别的隐秘 SYN 扫描**: sudo ./nettool -s 1-1000 --ss -W 100 scanme.nmap.org 输出: [scanme.nmap.org (45.33.32.156)] 멀티스레드 TCP(SYN) 포트 스캔 시작 (범위: 1-1000, 스레드: 100개)... [열림] 포트 22 /tcp - (응답 없음, 추측: ssh) [OS: Linux (커널 2.4~2.6+) | TTL:53, Win:29200] [열림] 포트 80 /tcp - (응답 없음, 추측: http) [OS: Linux (커널 2.4~2.6+) | TTL:53, Win:29200] 스캔 완료! 총 2개의 포트 발견. ## 故障排除 - **"오류: 명령을 실행하려면 루트(sudo) 권한이 필요합니다."** :您必须使用 sudo 运行程序。Raw Sockets 在 Linux 上需要 root 权限。 - **扫描默认为 Connect 扫描而非 SYN 扫描** :确保您对长选项使用双横线(`--ss`)。使用 `-ss` 会被选项解析器误解。 - **端口不可达/主机宕机但您知道其存活** :如果针对高延迟 WAN 上的目标进行测试,请使用 `-T 1000`(1 秒)增加超时阈值。 ## 自定义 - **线程数与超时**:如果您经常扫描大型网络,可以修改 `main.c` 中的默认 `max_threads` (50) 和 `timeout_ms` (500) 变量,以更好地适应您的硬件和网络环境。 - **Banner 获取扩展**:当前的 TCP 扫描例程发送基本的 `HEAD / HTTP/1.0` 载荷以探测 HTTP Banner。您可以轻松地在 `scan.c` 中扩展此功能,为 FTP、SMTP 或自定义应用协议发送自定义探测。 ## 许可证 此源代码根据 MIT 许可证获得许可。有关详细信息,请参阅 `LICENSE` 文件。 _最后更新时间:2026 年 3 月 29 日_
标签:ICMP Ping, OS指纹识别, POSIX Threads, Raw Sockets, TCP SYN扫描, Traceroute, TTL分析, 云存储安全, 客户端加密, 开源安全工具, 插件系统, 数据统计, 端口扫描, 网络安全, 网络工具, 网络扫描, 逆向工程平台, 隐私保护, 隐蔽扫描