antnxv/port-scanner

GitHub: antnxv/port-scanner

基于 C 语言和 Linux epoll 机制实现的轻量级 TCP 端口扫描器,支持批量非阻塞并发探测和常见服务名映射。

Stars: 0 | Forks: 0

# port-scanner Anthony Nosaryev ECE-303 项目 1 2025年3月2日 ## 依赖项 - C 环境。 - GNU Make,`gcc` 用于编译项目。 - 以下依赖于平台的 C 库: - `arpa/inet.h` - `netinet/in.h` - `sys/socket.h` - `netdb.h` - `sys/epoll.h` (仅限 Linux) - `sys/types.h` ## 文件 - `Makefile`:使用以下文件构建 portscan 可执行文件。 - `portscan.c/h`:提供包含高级解析和扫描逻辑的 main() 函数。 - `parse.c/h`:命令行和输入文件的输入解析。 - `scan.c/h`:端口批处理、连接建立/处理和输出。 - `service.h`:将端口号映射到知名服务。 ## 构建与使用 - 运行 `make` 将编译 portscan 二进制可执行文件,随后可按照下述方式使用。同时也指定了 `make clean`,用于删除生成的可执行文件及构建期间产生的所有目标文件。 ``` Usage: portscan OPTIONS --ports (-p) START[-END] Port (range) to scan. Default 1-1024, valid 1-65535. Do not supply an input file. --ip (-i) IP_ADDR IP Address to scan. Default localhost. Do not supply an input file. --input (--list, -l) FILENAME List of IP Addresses and ports to iteratively scan. Entries must be of the format IP_ADDR\tPORT_START\tPORT_END. Do not supply IP or port(s) to command line. --output (-o) FILENAME Optional output file. --help (-h) Print this information and discard other arguments. ``` ## 功能/说明 操作: - 指定目标 IP 地址时,'localhost' 会被理解为 '127.0.0.1'。 - 上述指定格式的输入文件条目之间可以用任意数量的换行符分隔。 - 连接以批处理方式并发建立,且非阻塞,以避免超时延迟的大量累积。 - 超时时间通过 `TIMEOUT` 预处理宏固定为 750 毫秒。 - 系统中打开文件描述符/socket 的最大数量因系统而异。为了避免出错,本实现通过 `MAX_EVENTS` 预处理宏将任何时刻打开的 socket 最大数量限制为 256 个。 - 减小 `TIMEOUT` 或增大 `MAX_EVENTS` 会分别带来端口扫描器速度的提升,但也可能导致精度降低或引发潜在错误。 - 此方法在 [connect(2) Linux 手册页](https://www.man7.org/linux/man-pages/man2/connect.2.html) 的 `EINPROGRESS` 部分有相关讨论。 输出: - 指定输出文件时,错误和程序进度信息将不会写入输出文件,而是报告到 stderr。 - 开放的端口将按连续端口批次打印(例如,如果端口 12000 到 12005 开放,输出将包含端口 12000-12005),或者在连续端口关闭或该端口关联的典型协议已知时单独打印。 - 已知协议取自 [RFC 1700](https://www.rfc-editor.org/rfc/rfc1700)。 - 请注意,RFC 1700 已过时,并且未与 [Internet Assigned Numbers Authority (IANA)](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) 维护的端口号服务注册信息保持同步。此处引用 RFC 1700 仅为了方便起见。
标签:DNS解析, epoll, GCC, GNU Make, Port Scanner, Socket编程, TCP/IP, 客户端加密, 并发扫描, 开源项目, 插件系统, 攻击路径可视化, 数据统计, 端口扫描, 网络安全, 网络工具, 网络服务识别, 网络编程, 隐私保护, 黑客工具