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 ` 工作线程数量(0 => 单线程) - `--scan ` 扫描类型(SYN NULL ACK FIN XMAS UDP)。可用空格或逗号分隔。 - `--json ` 将结果以 JSON 格式写入文件 - `--save-pcap ` 将捕获的数据包写入 pcap 文件 - `--top-ports ` 扫描内置的前 N 个常用端口 - `--decoy ` 逗号分隔的诱饵 IP(仅限 raw 模式,尽力而为) - `--evade` 在探测之间添加微小的定时抖动 运行 `./ft_nmap --help` 获取完整的帮助文本和示例。 ## 示例 - 使用 50 个线程进行 SYN 扫描端口 20–80: ``` ./ft_nmap --ip 192.168.1.1 --ports 20-80 --scan SYN --speedup 50 ``` - 使用默认的所有扫描类型扫描端口 1–1024: ``` ./ft_nmap --ip 192.168.1.1 --ports 1-1024 ``` - 从文件扫描目标并保存 pcap/JSON 输出: ``` ./ft_nmap --file targets.txt --ports 80,443 --scan SYN --save-pcap out.pcap --json out.json ``` ## 测试 本仓库包含一个小型测试工具。运行测试: ``` make test ``` 在开发过程中,我们在 AddressSanitizer 下运行测试套件以捕获内存泄漏和内存错误(参见构建部分)。 ## 注意事项与限制 - 诱饵源 IP 欺骗需要原始套接字和适当的网络设置;当没有权限时,程序使用 connect-scan 回退模式,并且不使用诱饵。 - Pcap 转储和精确的响应关联取决于捕获设备和内核栈;结果可能因环境而异。 - 该实现侧重于作为学术项目的正确性和可读性,并非旨在替代生产环境工具。 ## 作者 - Mohammed Annahri ## 许可证 / 免责声明 本项目是作为学术练习开发的(1337 School)。请负责任地使用,并且仅在您拥有权限的网络上使用。
标签:API安全, Banner抓取, JSON输出, Libpcap, Linux工具, Nmap替代, SYN扫描, 协议分析, 原始套接字, 域名解析, 套接字编程, 安全工具开发, 客户端加密, 密码管理, 插件系统, 教育项目, 数据包构造, 数据统计, 服务器安全, 服务指纹, 权限提升, 欺骗技术, 漏洞赏金平台, 端口扫描, 端口探测, 系统分析, 网络分析, 网络安全, 规避检测, 隐私保护