simopoza/Ft_nmap
GitHub: simopoza/Ft_nmap
基于 C 语言和原始套接字的教育性网络端口扫描器,支持 SYN、UDP 等多种扫描类型与多线程并行探测。
Stars: 0 | Forks: 0
# ft_nmap
## 概述
`ft_nmap` 是一个用 C 语言实现的紧凑型、教育性网络端口扫描器。它实践了原始数据包构建、基于 libpcap 的响应捕获,以及一个小型线程池,用于使用多种 TCP/UDP 探测类型扫描目标。
本仓库包含扫描器实现、一个小型测试工具,以及开发过程中使用的便捷辅助工具。
## 功能特性
- 支持的扫描类型:SYN、NULL、ACK、FIN、XMAS、UDP
- 多线程扫描(可配置工作线程数,最多 250 个)
- 扫描单个 IP (`--ip`) 或从文件中读取第一个目标 (`--file`)
- 灵活的端口选择:单个端口、范围以及逗号分隔的列表
- 可选附加功能:JSON 输出、pcap 转储、top-ports 模式、诱饵欺骗、定时规避
- 对开放的 TCP 服务进行尽力而为的 Banner 抓取
## 平台与权限
- 需要 Linux 以支持包含的测试和 pcap 设备使用。
- 原始 SYN 扫描和 IP 欺骗需要 root 权限。在非 root 权限下运行时,程序会回退到非特权 connect-scan 模式。
- 使用 libpcap 进行捕获可能需要适当的权限(或以 root 身份运行)。
## 构建
安装依赖项(libpcap 开发头文件)并使用 make 构建:
```
# Debian/Ubuntu 示例
sudo apt-get install build-essential libpcap-dev
make
```
开发者提示:要在启用 AddressSanitizer 的情况下运行测试套件:
```
make clean
make CFLAGS="-g -O0 -fsanitize=address -fno-omit-frame-pointer -Wall -Wextra -Werror" test
```
## 用法
```
./ft_nmap [OPTIONS]
```
关键选项:
- `--help` 显示帮助
- `--ip ` 目标 IPv4 地址(点分十进制)
- `--file ` 包含目标的文件(使用第一个非空行)
- `--ports
- ` 端口(例如 `1-1024`、`22,80,443`)
- `--speedup
标签:API安全, Banner抓取, JSON输出, Libpcap, Linux工具, Nmap替代, SYN扫描, 协议分析, 原始套接字, 域名解析, 套接字编程, 安全工具开发, 客户端加密, 密码管理, 插件系统, 教育项目, 数据包构造, 数据统计, 服务器安全, 服务指纹, 权限提升, 欺骗技术, 漏洞赏金平台, 端口扫描, 端口探测, 系统分析, 网络分析, 网络安全, 规避检测, 隐私保护