D4nny40/Simple-Port-Scanner
GitHub: D4nny40/Simple-Port-Scanner
一个用 C++ 编写的 Windows 命令行 TCP 端口扫描器,支持端口状态检测、banner 抓取和 CSV 结果导出,适合安全学习与作品集展示。
Stars: 0 | Forks: 0
# Simple-Port-Scanner
本程序是一个用 C++ 编写的 Windows 命令行 TCP 端口扫描器。它的工作是检查目标机器并识别选定的 TCP 端口状态。它还会尝试对开放的服务进行基本的 banner grabbing。此版本专为作品集设计,不应用于攻击目的。
## 当前版本
V2.0.0 - CSV 输出版本
版本 2 添加了使用 `-o output.csv` 的 CSV 输出功能。
## 使用此项目的前提条件/要求及其必要性
| 要求 | 为什么需要它 |
|---|---|
| Windows 10 或 Windows 11 | 使用 WinSock,即 Windows socket API |
| CMake 3.16 或更高版本 | 用于配置和生成构建文件 |
| Visual Studio C++ Build Tools | 提供 MSVC C++ 编译器 |
| Windows SDK | 提供 Windows 网络头文件和库 |
| PowerShell 或 Command Prompt | 用于运行构建和扫描器命令 |
| 兼容 C++20 的编译器 | 此项目配置为使用 C++20 |
## 如何使用
### 1. 构建项目
使用 PowerShell,你需要进入代码所在的目录,并以以下内容为示例构建应用程序。
```
cd C:\Users\Whatever your username is\Downloads\Simple-Port-Scanner-main\Simple-Port-Scanner-main
```
然后你需要使用这些命令来构建应用程序。
```
mkdir build
cd build
cmake ..
cmake --build . --config Debug
```
构建完成后,它应该位于 Build/debug/simplePortScanner.exe 中。要开始使用,只需输入
```
.\Debug\simplePortScanner.exe --help
```
这将为您提供使用该扫描器所需的所有帮助信息。
要利用 V2.0.0 的功能,您可以使用此命令(根据 IP 的不同进行更改):
```
.\Debug\simplePortScanner.exe -i 127.0.0.1 -p 1-100 -o results.csv
```
这将会在构建目录中生成一个包含结果的 csv 文件。
## 版本历史
### V1.0.0 - 初始工作版本
- 添加了目标选择
- 添加了端口范围解析
- 添加了开放、关闭和过滤状态的检测
- 添加了基本的服务名识别
- 添加了被动的 banner grabbing
- 添加了多线程扫描
### V2.0.0 - CSV 输出版本
- 添加了 `-o output.csv`,允许将扫描结果输出到构建目录下的 `.csv` 文件中。
- 添加了用于长格式选项的 `--output output.csv`
- 添加了 CSV 输出格式:`port,state,service,banner`
- 添加了对 banner 文本中逗号、引号和换行符的 CSV 转义
- 更新了帮助菜单示例
- 更新了 README 使用说明
## 未来潜在的改进
- 输出改进及用于后续分析的潜在导出功能。 - 部分完成(将在 JSON 导出功能发布后完全完成)
- 使用 Boost 来实现最初想法中的设计。
- 使用 async 实现更好的扫描器行为
- 进度指示
- 多主机扫描功能
- 服务版本检测
- 潜在的 GUI 实现
## 感谢 https://github.com/topics/cybersecurity-projects 提供的灵感
在最初的想法中,建议使用 Boost.Asio 结合异步 socket 操作、定时器和基于事件循环的架构,后来改为使用原生的 Windows WinSock API。这样做是因为最初的开发环境在配置 Boost 和 vcpkg 依赖时遇到了问题。与其在依赖阶段就卡住整个项目,第一版选择优先构建和测试核心扫描器行为。
## 许可证
本项目基于 MIT 许可证授权。详情请参阅 `LICENSE` 文件。
标签:Banner抓取, Bash脚本, C++, 云存储安全, 安全意识培训, 插件系统, 数据擦除, 数据统计, 端口扫描, 网络扫描