cristobalmaier/port-scanner

GitHub: cristobalmaier/port-scanner

基于Python标准库的轻量级端口扫描器,支持开放端口检测、服务识别和高危服务自动告警。

Stars: 0 | Forks: 0

# 🔍 NETSCOPE — 端口扫描器 ``` ███╗ ██╗███████╗████████╗███████╗ ██████╗ ██████╗ ██████╗ ███████╗ ████╗ ██║██╔════╝╚══██╔══╝██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██╔██╗ ██║█████╗ ██║ ███████╗██║ ██║ ██║██████╔╝█████╗ ██║╚██╗██║██╔══╝ ██║ ╚════██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║ ╚████║███████╗ ██║ ███████║╚██████╗╚██████╔╝██║ ███████╗ ╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ ``` 纯 Python 编写的端口扫描器。检测开放端口,识别服务并针对危险配置发出警报 —— 风格类似 nmap。 ## 系统要求 - Python 3.6 或更高版本 - 无需外部依赖 —— 仅使用标准库 ## ▶使用方法 ``` python3 netscope.py [puerto_inicio] [puerto_fin] ``` ### 示例 ``` # 扫描本地 IP 的 1-1024 端口 python3 netscope.py 192.168.1.1 # 扫描自定义范围 python3 netscope.py 192.168.1.1 1 500 # 扫描单个端口 python3 netscope.py 192.168.1.1 80 80 # 通过 hostname 扫描 (nmap 官方测试服务器) python3 netscope.py scanme.nmap.org 1 1024 ``` ### 预期输出 ``` Nmap scan report for scanme.nmap.org (45.33.32.156) Host is up. Not shown: 1021 closed ports PORT STATE SERVICE ────────────────────────────────────────────────── 22/tcp open ssh 80/tcp open http 3389/tcp open rdp |_ [HIGH] RDP — riesgo de fuerza bruta Netscope done: scanned in 4.21s — 3 open / 1024 total ``` ## 颜色系统 | 颜色 | 含义 | |-------|-------------| | 🟢 绿色 | 安全服务 (SSH, HTTPS, HTTP) | | 🟡 黄色 | 需注意 (FTP, MySQL, PostgreSQL) | | 🔴 红色 | 高风险 (Telnet, SMB, RDP, Redis, MongoDB) | | ⚪ 白色 | 未知服务 | ## 风险警报 Netscope 针对以下端口显示自动警告: | 端口 | 服务 | 级别 | 原因 | |--------|----------|-------|-------| | 23 | Telnet | CRITICAL | 明文传输密码 | | 445 | SMB | CRITICAL | 易受 EternalBlue / 勒索软件攻击 | | 6379 | Redis | CRITICAL | 默认无认证 | | 27017 | MongoDB | CRITICAL | 默认无认证 | | 3389 | RDP | HIGH | 易受暴力破解攻击 | | 5900 | VNC | HIGH | 认证机制薄弱 | ## 工作原理(核心概念) ### 1. TCP Connect Scan Netscope 尝试使用 `socket.connect_ex()` 与每个端口建立完整的 TCP 连接。如果连接成功(返回 `0`),则该端口为 **开放** 状态。 ``` sock.connect_ex((ip, port)) == 0 # True = puerto abierto ``` ### 2. 多线程并行扫描 与其逐个扫描端口(速度慢),不如使用 `ThreadPoolExecutor` 同时扫描多达 200 个端口。 ``` with ThreadPoolExecutor(max_workers=200) as executor: futures = {executor.submit(scan_port, ip, p): p for p in ports} ``` ### 3. 服务识别 每个已知端口都在 `SERVICES` 字典中进行了映射。如果不在列表中,则显示 `unknown`。 ## 项目结构 ``` netscope/ │ ├── netscope.py # Script principal (único archivo) └── README.md # Este archivo ``` ## 可能的改进(后续思路) - [ ] 将结果导出到 `.txt` 或 `.json` 文件 - [ ] 增加 Banner 抓取功能以检测版本 - [ ] 除了 TCP 外增加 UDP 扫描 - [ ] 支持多目标 / 网络范围 (CIDR) - [ ] 集成 Shodan API ## 本项目涉及的知识点 - Python 中的 Socket 和 TCP/IP 通信 - 使用 `threading` 和 `ThreadPoolExecutor` 实现并发 - 网络侦查(渗透测试的第 1 阶段) - 通过端口号识别服务 - 在终端中使用 ANSI 转义码显示颜色 ## 免责声明 本软件仅供教育用途和在授权环境中进行测试。未经许可扫描系统可能违反当地法律。作者不对滥用本工具的行为承担责任。
标签:DNS查询工具, Netcat替代, Nmap替代, Python, Qt框架, TCP/IP, 套接字编程, 密码管理, 并发处理, 开源安全工具, 插件系统, 无后门, 无第三方依赖, 服务识别, 漏洞赏金平台, 端口扫描器, 纯Python, 网络安全, 逆向工具, 逆向工程平台, 隐私保护