mikey1045/Scanner-Port-Tool-
GitHub: mikey1045/Scanner-Port-Tool-
一款集多线程端口扫描、内网设备发现、历史对比及AI漏洞分析于一体的网络信息安全评估桌面工具。
Stars: 1 | Forks: 0
# 🔍 Port Scanner Pro v2.0 - 网络扫描器与 AI 安全分析工具
这是一款高性能的多线程网络端口扫描工具,集成了网络发现、配置对比以及基于人工智能的安全漏洞分析功能。
本项目旨在展示在**网络编程**、**并发优化**、**数据库设计**以及现代桌面应用程序中**云 API 集成**方面的扎实技能。
## 🎯 简历技术亮点
在申请实习(软件工程师 / 安全工程师 / 网络管理员)时可将此项目写入简历:
### 1. 网络与 Socket 编程
* **底层 Socket API 交互**:通过 `socket.connect_ex` 方法执行 TCP 握手机制,以最优方式确定网络端口的开放/关闭状态,避免进程阻塞。
* **Banner Grabbing 技术**:发送握手字节串 (`\r\n`) 并直接从 socket 读取原始响应数据流,以提取服务的数字签名,从而准确识别目标上正在运行的软件版本。
### 2. 并发与性能优化
* **基于 ThreadPoolExecutor 的并行处理**:利用多线程机制并行执行数千个 socket 连接。允许在极短的时间内扫描大型端口范围(最多 65,535 个端口)或整个子网(将等待时间从数小时缩短至数十秒)。
* **事件驱动与回调架构**:通过回调函数(`on_progress`、`on_port_scanned`、`on_complete`)设计在核心扫描器(后台运行)与 GUI(主线程运行)之间的异步数据流。完全杜绝了在高负载扫描时出现的界面卡死现象。
### 3. 内部网络发现与数据包分析
* **Ping Sweep 机制**:使用针对各操作系统优化的子进程 (`subprocess`),并发 ping 整个 IP 子网范围(扫描 CIDR `/24` 或自定义 IP 范围)。
* **操作系统指纹识别**:利用启发式技术分析 ICMP Echo Reply 响应数据包中的 TTL (Time To Live) 指标,以推测目标设备的操作系统(`TTL <= 64`: Linux/macOS,`TTL <= 128`: Windows,`TTL <= 255`: 网络设备/路由器)。
* **反向 DNS 解析**:使用 `socket.gethostbyaddr` 方法自动查询设备的主机名。
### 4. 历史数据库设计与优化
* **SQLite Schema 设计**:结构化地存储端口扫描历史。
* **数据库索引优化**:创建 `idx_scan_id` 和 `idx_host_port` 索引,以在大型扫描会话之间进行数据对比时加快搜索和数据匹配速度。
* **扫描差异比对算法**:实现比对两套数据集的算法,以指出两个时间点之间网络安全配置的变更情况:新开放的端口(🟢)、已关闭的端口(🔴)以及保持不变的端口(⚪)。
### 5. AI API 集成与故障恢复机制设计
* **云端 RESTful API 集成**:通过 `requests` 库直接连接 Google Gemini 和 OpenAI 的 API,发送静态分析报告并接收深入的信息安全风险评估。
* **离线 Fallback 机制**:为 17 个以上的核心服务端口设计本地安全知识库,确保即使在断网或没有 API Key 的情况下,应用程序仍能正常进行漏洞分析并给出修复建议。
### 6. 软件设计与架构思维
* **分层/模块化架构**:清晰分离表现层 (`tabs/`)、配置管理层 (`config.py`)、数据库层 (`db.py`) 以及核心业务模块 (`scanner.py`, `network_discovery.py`, `ai_analyzer.py`)。
* **可视化报告**:自动生成包含安全风险分级表(Critical、High、Medium、Low)的动态 HTML 报告,采用直观的 CSS 颜色编码,同时支持导出原始的 CSV 格式数据文件。
## 📐 系统架构
下图展示了从用户界面到后台并行处理进程以及外部 API/数据库连接的工作流程:
```
graph TD
AppShell[App Shell: ModernPortScanner - app.py] --> Sidebar[Sidebar Navigation]
AppShell --> TabManager[Tab Manager / Switcher]
TabManager --> ScannerTab[Scanner Tab: scanner_tab.py]
TabManager --> DiscoveryTab[Discovery Tab: discovery_tab.py]
TabManager --> HistoryTab[History Tab: history_tab.py]
TabManager --> CompareTab[Compare Tab: compare_tab.py]
TabManager --> AITab[AI Analysis Tab: ai_tab.py]
TabManager --> SettingsTab[Settings Tab: settings_tab.py]
ScannerTab --> PortScanner[Core: PortScanner - Multi-threading]
DiscoveryTab --> NetDiscovery[Core: NetworkDiscovery - Ping Sweep]
HistoryTab --> SQLite[(SQLite Database - port_scanner.db)]
CompareTab --> SQLite
AITab --> AIAnalyzer[Core: AIAnalyzer - ai_analyzer.py]
PortScanner --> SQLite
PortScanner --> Utils[Utilities - utils.py]
NetDiscovery --> Utils
AIAnalyzer --> Gemini[Google Gemini API]
AIAnalyzer --> OpenAI[OpenAI API]
AIAnalyzer --> LocalKB[Local Knowledge Base - Offline]
SettingsTab --> Config[Config Manager - config.py]
```
## 🛠️ 技术栈与依赖库
| 分类 | 库 | 用途 |
|---|---|---|
| **Core & UI** | `customtkinter` | 构建扁平化、圆角的现代桌面 UI,支持自动切换 Dark/Light 模式 |
| | `tkinter.ttk` | 使用高级组件 显示扫描结果表格 |
| **Networking** | `socket` | 建立 TCP socket 连接、获取服务 banner、反向解析域名 |
| | `subprocess` | 使用操作系统命令执行系统 Ping sweep |
| | `ipaddress` | 从输入字符串中处理、计算和拆分 IP 范围 (CIDR, IP Range) |
| **Database** | `sqlite3` | 管理和查询系统的端口扫描历史 |
| **AI Integration** | `requests` | 发起 HTTP/REST API 请求,与云端 AI 模型进行通信 |
| **OS & Helpers** | `pystray` & `Pillow` | 在最小化时将应用程序驻留在系统托盘 |
| | `pathlib` | 以跨操作系统的方式管理配置文件和数据库的文件路径 |
## ⚙️ 核心功能
### 1. 🔍 端口扫描器
* **灵活的目标输入**:支持输入单个 IP、主机名 (`google.com`)、CIDR 范围 (`192.168.1.0/24`) 或 IP 区间 (`192.168.1.1-192.168.1.50`)。
* **多样化的扫描模式**:
* `Quick`:快速扫描前 15 个最常用的端口(FTP, SSH, Web, DB, RDP...)。
* `Range`:按自定义端口区间扫描(例如:1 - 1024)。
* `Full`:扫描全部 65,535 个端口。
* `Custom`:输入用逗号分隔的自定义端口列表(例如:`80,443,8080,9000-9005`)。
* **便捷的右键菜单**:
* 通过 AI 快速分析开放端口的风险。
* 对于 Web 服务端口,支持在浏览器中快速打开。
* 复制对应的 Nmap 命令,方便在 Terminal 中继续进行高级测试。
* 快速复制 `IP:Port` 格式的地址。
* **多格式报告导出**:CSV(用于数据分析)和 HTML(直观的色彩化安全报告)。
### 2. 🌐 网络发现
* **自动识别子网**:检测本机当前 IP 并自动填入内网网段以开始扫描。
* **并行 Ping Sweep**:在几秒钟内发现内网中所有在线的设备。
* **基于 TTL 猜测操作系统**:分析 TTL 以提供对设备类型的初步识别。
* **无缝交互**:双击刚发现的设备,即可自动将其信息转入扫描器选项卡,开始扫描该设备的端口服务。
### 3. 📜 历史与扫描对比
* **长期历史存储**:如果开启了自动保存 选项,所有成功的扫描结果都会被自动记录到 SQLite 中。
* **扫描差异比对**:帮助管理员立即发现网络/防火墙策略的变更:
* 哪些端口刚刚暴露在外(新开放 - 绿色)。
* 哪些端口已被修补/关闭(已关闭 - 红色)。
### 4. 🤖 AI 安全分析
* 提供深入的安全报告(纯中文),明确指出:风险等级、服务描述、潜在漏洞(如果有的话还会包含著名的 CVE)以及针对系统上发现的每个开放端口服务的具体修复措施。
## 📂 代码结构
```
Scanner-port-tool/
├── launcher.py # Script khởi chạy nhanh ứng dụng
├── README.md # Tài liệu giới thiệu dự án (bản CV Portfolio)
│
└── port_scanner_gui/ # Thư mục chứa gói mã nguồn chính
├── __init__.py # Khởi tạo package và export các class cốt lõi
├── __main__.py # Điểm vào ứng dụng khi chạy qua python -m
├── app.py # Khung cửa sổ chính, Sidebar điều hướng & System Tray
├── scanner.py # Lớp logic quét cổng TCP đa luồng (Threaded Port Scanner)
├── network_discovery.py # Lớp logic ping sweep dải IP mạng & OS detection
├── ai_analyzer.py # Logic tích hợp API AI (Gemini/OpenAI) & Local KB
├── db.py # Module giao tiếp SQLite DB, xuất CSV/HTML
├── config.py # Module lưu trữ cấu hình người dùng dạng JSON
├── theme.py # Định nghĩa bảng màu UI và Font hệ thống
├── utils.py # Các hàm bổ trợ (Banner grab, Validate IP/Host, Parse port)
│
└── tabs/ # Thư mục chứa giao diện các tab chức năng
├── __init__.py # Export toàn bộ các tab giao diện
├── scanner_tab.py # Giao diện tab quét cổng & Xử lý xuất báo cáo
├── discovery_tab.py # Giao diện tab khám phá thiết bị mạng nội bộ
├── history_tab.py # Giao diện tab duyệt và xóa lịch sử quét
├── compare_tab.py # Giao diện tab so sánh thay đổi cổng (Diff-scan)
├── ai_tab.py # Giao diện tab phân tích lỗ hổng AI
└── settings_tab.py # Giao diện tab cấu hình hệ thống & API Key
```
## 🚀 安装与使用指南
### 1. 系统要求
* Python 3.8 或更高版本。
* Administrator/Root 权限(为了执行某些设备必需的 Ping Sweep 命令)。
### 2. 安装依赖库
进入项目目录并安装必要的库:
```
# 从 GitHub clone 项目
git clone
cd Scanner-port-tool
# 创建虚拟环境(推荐)
python -m venv .venv
source .venv/bin/activate # Trên Linux/macOS
.venv\Scripts\activate # Trên Windows
# 安装 các thư viện
pip install customtkinter Pillow pystray requests
```
### 3. 启动应用程序
使用以下命令直接运行主模块:
```
python launcher.py
# 或者作为 python package 运行
python -m port_scanner_gui
```
## ⚠️ 法律与道德免责声明
本项目完全出于学习、学术研究及内部信息安全评估的目的而开发。
* **严禁在未获得系统所有者明确书面授权的情况下**扫描任何系统。
* 作者不对任何滥用此工具或对第三方系统造成损害的行为承担任何责任。
* 未经授权的网络扫描在许多国家可能会被视为违反网络安全法的违法行为。
*本项目由 Quốc Việt (Mikey Nguyen) 开发与优化 - 越南潘切大学 (UPT) 信息技术专业学生*
标签:AI漏洞分析, Maven构建, Petitpotam, Python, Socket编程, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络发现, 网络扫描, 逆向工具