Jamalludeen/python-port-scanner-app
GitHub: Jamalludeen/python-port-scanner-app
一个基于 Tkinter 的轻量级 GUI 端口扫描器,用于快速检测目标主机的开放端口及可选的横幅信息。
Stars: 1 | Forks: 0
# Python 端口扫描应用
基于 Tkinter 实现的轻量级 GUI 端口扫描器。代码组织为一个小型包,将扫描逻辑、验证、工具函数和 GUI 分离。
## 运行
通过以下命令启动 GUI:
```
python main.py
```
显示启动器版本:
```
python main.py --version
```
或使用旧版包装器:
```
python portScanner.py
```
## 项目结构
- `portscanner/` - 包模块
- `gui.py` - Tkinter 界面 (`PortScannerApp`)
- `scanner.py` - 扫描逻辑 (`PortScanner`, `scan_single_port`)
- `validators.py` - 主机/IP 验证辅助函数
- `utils.py` - 小工具函数(导出、剪贴板)
- `tests/` - 使用 Python `unittest` 的单元测试
- `run_tests.py` - 便捷测试运行器
- `main.py` - 现代入口点
- `portScanner.py` - 旧版兼容包装器
## 测试
运行单元测试:
```
python run_tests.py
```
在迭代过程中也可以针对特定测试文件运行:
```
python run_tests.py tests/test_banner.py
```
有用的标志:
```
python run_tests.py --failfast
python run_tests.py -q
python run_tests.py --pattern=banner
```
GUI 帮助对话框中也提到了启动器版本标志和针对性的测试运行模式,以便从应用内部快速找到它们。
CI 通过 GitHub Actions 配置,运行共享的 `run_tests.py` 入口点。
## 横幅检测
GUI 提供了一个“检测横幅”复选框,它会尝试从扫描过程中发现的任何开放 TCP 服务读取一小段横幅。这是一个尽力而为的操作,超时时间较短,可能不适用于所有服务。
当你希望快速获取服务横幅(例如 HTTP、SMTP、FTP 或自定义文本横幅)并在 UI 中与结果一起显示时,请启用此选项。
## 开发说明
- 扫描逻辑暴露了基于回调的 API (`PortScanner.scan_range`),因此 GUI 可以保持响应;回调应将 UI 更新调度到 Tk 主线程(GUI 当前使用 `root.after` 实现)。
- GUI 标题在扫描期间反映当前活动目标,扫描完成后显示开放端口数量。
- 拒绝非常大的扫描范围以减少意外过载。
- 测试使用本地临时服务器来验证端口检测和回调行为。
## 许可证
MIT
# 端口扫描器
一个基于 Tkinter 构建的简单 GUI 端口扫描器。
使用方式:
- 运行 `python3 portScanner.py`。
- 输入目标主机/IP 并调整设置。
- 使用 `扫描`、`停止`、`导出` 和 `复制` 按钮。
注意:
- 本项目仅用于学习和小规模扫描。请负责任地使用。
标签:Banner抓取, GUI工具, IP扫描, Python, TCP扫描, Tkinter, URL发现, 主机探测, 二进制发布, 云存储安全, 安全检测, 开源工具, 情报分析, 插件系统, 数据统计, 无后门, 端口扫描, 系统独立性, 网络安全, 网络扫描, 网络诊断, 辅助工具, 逆向工具, 隐私保护