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枚举, 插件系统, 数据擦除, 数据统计, 端口扫描, 系统编程, 网络安全工具, 网络编程