100arab/PortsScanner

GitHub: 100arab/PortsScanner

一款分离架构的网络端口扫描与攻击检测工具,通过 Go 后端并发扫描与 PyQt5 暗色 GUI 实现可视化端口监控、实时告警和防火墙联动防御。

Stars: 0 | Forks: 0

# Port Guardian — 网络扫描与攻击检测器 一款采用分离架构的安全工具: - **Go backend** — 高性能并发端口扫描器、7 信号攻击检测引擎、OS 防火墙控制器、REST + WebSocket API - **Python GUI** — 高级暗色主题 PyQt5 客户端,配备实时警报控制台、可排序端口表和防火墙控制按钮 ## 环境要求 | 组件 | 版本 | |-----------|---------| | Go | 1.21+ | | Python | 3.9+ | | OS | Windows 10/11 (主要),Linux (次要) | | 权限 | **Administrator / root**(控制防火墙需具备此权限) | ## 快速开始 (Windows) ``` Right-click run.bat → Run as Administrator ``` 此操作将: 1. 构建 Go backend (`go build`) 2. 安装 Python 依赖 (`pip install -r requirements.txt`) 3. 启动 GUI(将自动启动 backend) ## 手动构建 ### Go 后端 ``` cd backend go mod tidy # download dependencies go build -o portscanner.exe . .\portscanner.exe # runs on localhost:8787 ``` ### Python GUI ``` pip install -r requirements.txt python gui\main.py ``` ## 架构 ``` Python GUI (PyQt5) ←──HTTP/WebSocket──→ Go Backend (:8787) │ ┌───────┴────────┐ Port Scanner Firewall Control Attack Detector (netsh / ufw) config.json ``` ## API 参考 | Method | Endpoint | 描述 | |--------|----------|-------------| | GET | `/status` | 主机名、IP、打开/关闭计数、防火墙状态 | | GET | `/ports` | 完整端口表(缓存) | | POST | `/scan/local` | 触发本地端口枚举 | | POST | `/scan/remote` | `{"host":"…","port_range":"1-1024"}` — TCP connect 扫描 | | GET | `/alerts` | 警报历史记录(最近 500 条) | | WS | `/ws/alerts` | 实时警报流 | | POST | `/firewall/disable` | 阻断所有入站流量 | | POST | `/firewall/restore` | 移除阻断所有规则 | | POST | `/firewall/set-default` | 将当前端口保存为受信任的 baseline | | GET/POST | `/settings` | 检测阈值 + 自动响应开关 | | POST | `/consent/remote` | `{"consented":true}` — 启用远程扫描模式 | ## 检测信号 | # | 信号 | 数据来源 | 默认阈值 | |---|--------|-------------|-------------------| | 1 | 水平端口扫描 | 模拟事件流 | 15 端口 / 10 秒 | | 2 | 垂直(子网)扫描 | 模拟 | 10 主机 / 30 秒 | | 3 | 连接洪泛 | 模拟 | 50 连接/秒 | | 4 | Baseline 偏移 | **真实**(端口表轮询) | 任意新端口 | | 5 | 开启可疑端口 | **真实**(端口表轮询) | 预定义列表 | | 6 | 暴力破解模式 | 模拟 | 20 次失败 / 60 秒 | | 7 | 可配置阈值 | 所有信号 | 通过 `/settings` | ## 文件 ``` portscanner/ ├── backend/ │ ├── main.go # entry point, wiring │ ├── go.mod │ ├── store/store.go # types + JSON persistence │ ├── scanner/ │ │ ├── scanner.go # PortEntry, LocalIPs, ParsePortRange │ │ ├── local_windows.go # GetExtendedTcpTable syscall │ │ ├── local_linux.go # /proc/net/tcp parsing │ │ └── remote.go # TCP connect scan (500 goroutines) │ ├── detector/engine.go # 7-signal detection + simulation │ ├── firewall/ │ │ ├── firewall.go # Controller interface │ │ ├── windows.go # netsh implementation │ │ └── linux.go # ufw / iptables implementation │ └── api/ │ ├── rest.go # all HTTP handlers │ └── websocket.go # broadcast hub ├── gui/ │ ├── main.py # entry: splash, backend launch, window │ ├── main_window.py # QMainWindow assembly + refresh timer │ ├── client.py # REST + WebSocket client │ └── widgets/ │ ├── header.py # hostname/IP/scan controls │ ├── summary.py # stat cards + firewall badge │ ├── port_table.py # sortable/filterable QTableView │ ├── alert_console.py # live HTML feed + HIGH banner │ ├── firewall_buttons.py # 3 control buttons │ └── settings_panel.py # thresholds + toggles ├── config.json # auto-created on first run ├── requirements.txt └── run.bat # Windows one-click launcher ```
标签:日志审计, 逆向工具