Derek-Wegerbauer/simple-port-scanner

GitHub: Derek-Wegerbauer/simple-port-scanner

一个仅使用 Python 标准库的轻量级 TCP 端口扫描器,面向教育和授权测试场景,帮助初学者学习网络扫描原理与道德安全测试实践。

Stars: 0 | Forks: 1

# 简易端口扫描器 一个用于教育和授权网络测试的 Python TCP connect 扫描器。 ## 概述 本项目是一个用 Python 编写的命令行 TCP 端口扫描器。它会扫描单个目标(例如 IPv4 地址或主机名),并检查选定的 TCP 端口是开放的还是已关闭/被过滤的。 该扫描器是作为一个学习项目创建的,旨在练习 Python 脚本编写、网络基础知识、命令行工具开发以及道德安全测试。 `docs/` 文件夹中提供了完整的项目说明,包含测试记录、设计决策、截图和未来改进计划。 ## 功能 - 扫描目标主机名或 IPv4 地址 - 扫描内置的常用端口列表 - 扫描用户指定的端口范围 - 配置 socket 超时值 - 显示所有结果或仅显示开放的端口 - 基本的输入验证和错误处理 - 清晰的命令行输出 ## 展示的技能 - Python 脚本编写 - Socket 编程 - 使用 `argparse` 进行命令行参数解析 - TCP 网络基础知识 - 错误处理和验证 - 道德测试边界 - 项目文档编写 ## 用法 在项目根目录下运行扫描器: ``` python src/port_scanner.py TARGET --common ``` 使用常用端口列表的示例: ``` python src/port_scanner.py 127.0.0.1 --common ``` 使用端口范围的示例: ``` python src/port_scanner.py 127.0.0.1 --ports 20-100 ``` 仅显示开放端口的示例: ``` python src/port_scanner.py 127.0.0.1 --common --open-only ``` 使用自定义超时的示例: ``` python src/port_scanner.py 127.0.0.1 --ports 1-1024 --timeout 1 ``` ## 示例输出 ``` Scan Target: 127.0.0.1 (127.0.0.1) Ports: common list Timeout: 0.5 seconds Display mode: all ports Notice: Only scan systems you own or have permission to test. Port 20: Closed/Filtered Port 21: Closed/Filtered Port 22: Open Port 23: Closed/Filtered Scan completed in 0.12 seconds ``` ## 截图 `screenshots/` 文件夹中提供了从受控实验室测试中选取的截图。 示例包括: - Localhost 仅开放端口扫描 - 无效端口范围验证 - 远程 Windows HTTP 服务检测 - Raspberry Pi SSH 检测 ## 项目结构 ``` simple-port-scanner/ ├── README.md ├── requirements.txt ├── .gitignore ├── src/ │ └── port_scanner.py ├── docs/ │ └── project-writeup.md └── screenshots/ ``` ## 环境要求 本项目仅使用 Python 标准库。 不需要任何外部 Python 包。 ## 道德声明 本工具仅供教育和授权测试使用。请仅扫描您拥有或获得明确测试许可的系统。 ## 局限性 - 仅支持 IPv4 - 仅支持 TCP connect 扫描 - 不执行服务检测 - 不执行 banner grabbing - 不直接识别防火墙规则 - 当端口被阻止、过滤、超时或关闭时,结果可能会显示为 `Closed/Filtered` ## 未来改进 - 添加 IPv6 支持 - 添加 banner grabbing - 添加 CSV 或 JSON 输出 - 添加日志记录到文件的功能 - 添加单元测试 - 添加多线程以实现更快的扫描 - 添加更详细的文档和截图 ## 作者 Derek Wegerbauer
标签:Python, Socket编程, 安全测试, 插件系统, 攻击性安全, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具