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, 客户端加密, 并发扫描, 开源项目, 插件系统, 攻击路径可视化, 数据统计, 端口扫描, 网络安全, 网络工具, 网络服务识别, 网络编程, 隐私保护, 黑客工具