MadhuriN-369/port-scanner

GitHub: MadhuriN-369/port-scanner

一个使用 C++ 和 POSIX 线程在 Linux 上实现的简单多线程 TCP 端口扫描器,帮助用户快速探测目标主机端口的开放状态。

Stars: 2 | Forks: 0

# 端口扫描器 一个使用 C++ 编写的、适用于 Linux 系统的简单多线程 TCP 端口扫描器。 这个项目最初是我探索 C++ 网络编程和底层系统编程的一种方式。在开发过程中,我遇到了一些挑战,特别是在使用 Linux socket 编程以及 `sys/socket.h`、`arpa/inet.h` 和 POSIX 线程 (`pthread`) 等系统库时,这些在当时对我来说都是全新的领域。 除了让扫描器能够正常运行之外,我还想重点关注的一件事是编写干净且易于维护的代码。我尝试以一种使逻辑易于理解的方式来构建项目结构,以便阅读代码的人能够快速了解每个组件的作用。做这个项目让我体会到了可读性和代码组织的重要性,尤其是在多个开发人员共同开发同一代码库的协作环境中。 ## 功能 - 多线程扫描,执行速度更快 - 扫描用户指定的端口范围 - 对开放和关闭的端口进行彩色终端输出 - 显示知名端口的常见服务名称 - 使用 C++ socket 和 POSIX 线程的轻量级实现 ## 环境要求 - Linux - `g++` - POSIX 线程库 (`pthread`) ## 构建 ``` g++ portScanner.cpp -o portscanner -pthread ``` ## 用法 ``` sudo ./portscanner ``` 根据提示输入目标 IP 地址和端口范围。 示例: ``` Target IP: 192.168.1.1 Start Port: 1 End Port: 1024 ``` ## 输出示例 ``` [OPEN] 22 -> SSH [OPEN] 80 -> HTTP [OPEN] 443 -> HTTPS ``` ## 我的收获 * C++ 中 Linux socket 编程的基础知识 * 使用 POSIX 线程进行并发执行 * 为了可读性和可维护性构建代码结构 * 处理同步和线程管理 * 编写让后续可能接手代码的其他开发人员也能轻松理解的项目 ## 未来改进 * IPv6 支持 * 服务 banner 检测 * SYN 扫描 * 将扫描结果导出到文件 * 自定义线程池实现 ## 免责声明 本项目仅供教育目的和授权的安全测试使用。请勿在未经明确许可的情况下扫描网络或系统。 ## 许可证 本项目基于 MIT License 授权。
标签:C++, DNS枚举, 插件系统, 数据擦除, 数据统计, 端口扫描, 系统编程, 网络安全工具, 网络编程