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++, 云存储安全, 安全意识培训, 插件系统, 数据擦除, 数据统计, 端口扫描, 网络扫描