shreeapi/PyNexus

GitHub: shreeapi/PyNexus

PyNexus 是一款模块化的 Python 网络扫描器,灵感来源于 Nmap,专为授权安全测试和网络管理设计。

Stars: 0 | Forks: 0

# PyNexus Scanner 一款模块化、跨平台的网络扫描器,使用 Python 编写,灵感来源于 Nmap。 专为**防御性安全、网络管理和授权** **渗透测试**而构建。 ## 快速开始 ``` git clone https://github.com/shreeapi/PyNexus.git cd PyNexus chmod +x install.sh && ./install.sh source venv/bin/activate python3 main.py discover ``` ## 功能特性 - **主机发现 (Host Discovery)**:ICMP ping、TCP ping 回退、ARP 发现(局域网,需要 scapy + 权限)、CIDR/子网扩展。 - **端口扫描 (Port Scanning)**:异步 TCP connect 扫描、可选的 raw SYN 扫描、UDP 扫描、自定义端口范围、top-100/top-1000/全端口预设、可调整的超时/线程/重试次数。 - **服务检测 (Service Detection)**:基于 JSON 数据库 (`database/services.json`) 的端口到服务映射。 - **Banner 抓取 (Banner Grabbing)**:HTTP、SSH、FTP、SMTP 和通用 TCP banner。 - **SSL/TLS 检测**:证书使用者/颁发者、过期时间、剩余天数、TLS 版本、加密套件 (cipher suite)、自签名证书检测。 - **DNS 枚举**:通过 `dnspython` 获取 A、AAAA、MX、TXT、NS、CNAME、SOA 和反向 (PTR) 记录。 - **主机信息**:主机名、反向 DNS、MAC 地址(通过 OS ARP 缓存)、供应商查询(OUI 数据库)、延迟。 - **基础 OS 指纹识别**:基于 TTL 的 OS 家族估算,明确标注为估算值。 - **路由跟踪 (Traceroute)**:逐跳路径及延迟,使用 OS 自带的 `traceroute`/`tracert` 工具。 - **报告**:支持 HTML、JSON、CSV 和 XML 输出格式。 - **终端 UI**:基于 Rich 驱动的进度条、表格、彩色输出和扫描摘要。 ## 项目结构 ``` PyNexus/ ├── main.py # CLI entrypoint ├── requirements.txt ├── README.md ├── config.py # Global settings, port lists, defaults │ ├── core/ │ ├── scanner.py # High-level scan orchestration │ ├── tcp_scan.py # TCP connect + SYN scanning │ ├── udp_scan.py # UDP scanning │ ├── ping.py # ICMP/TCP host discovery │ ├── arp.py # ARP-based LAN discovery │ ├── banner.py # Banner grabbing │ ├── services.py # Service name lookup │ ├── dns.py # DNS enumeration │ ├── ssl_scan.py # TLS certificate inspection │ ├── traceroute.py # Traceroute │ ├── os_detect.py # Passive OS fingerprint estimate │ ├── hostname.py # Reverse DNS / hostname helpers │ ├── mac_lookup.py # ARP cache MAC lookup │ ├── vendor.py # OUI vendor lookup │ ├── latency.py # Latency measurement │ ├── ports.py # Port spec resolution │ ├── progress.py # Rich progress helpers │ └── utils.py # Logging, target/port parsing, timers │ ├── reports/ │ ├── html.py │ ├── json.py │ ├── csv.py │ └── xml.py │ ├── database/ │ ├── services.json │ └── vendors.json │ └── assets/ # Screenshots / static assets ``` ## 安装说明 ### 前置条件 - Python 3.10+(推荐 3.12) - pip - git ### 快速设置 (Kali Linux / Debian / Ubuntu) ``` git clone https://github.com/shreeapi/PyNexus.git cd PyNexus chmod +x install.sh ./install.sh ``` 这会拉取 `python3-venv`、`libpcap-dev`,以及 `requirements.txt` 中的所有包,并在一个隔离的 `venv/` 中进行安装。完成后: ``` source venv/bin/activate python3 main.py discover ``` ### 手动设置 (任何 OS) ``` git clone https://github.com/shreeapi/PyNexus.git cd PyNexus python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt python3 main.py discover ``` 对于高级功能,以下是可选但推荐的依赖: - **scapy** — 启用 ARP 发现 (`core/arp.py`) 和 raw SYN 扫描 (`--syn`)。需要 root/管理员权限才能发送 raw 数据包。在 Kali 上,这通常已经在系统范围内安装,但 `venv` 需要自己的副本(`pip install scapy`,包含在 `requirements.txt` 中)。 - **libpcap** — `sudo apt install libpcap-dev` (Linux) — scapy 进行 raw 数据包捕获时需要。macOS 默认自带;Windows 需要 [Npcap](https://npcap.com/)。 - 系统 `PATH` 中需要有 `ping`、`traceroute` (Linux/macOS) 或 `tracert` (Windows) 命令 — 用于 ICMP 发现、OS TTL 估算和 traceroute。 对于 ARP 扫描和 `--syn`,请使用提权后的权限运行 PyNexus: ``` sudo venv/bin/python3 main.py discover sudo venv/bin/python3 main.py scan 192.168.1.1 --syn ``` ## 使用说明 PyNexus 有两个子命令: - **`discover`** — 扫描子网并列出所有连接的设备(IP、主机名、MAC、供应商、延迟)。请首先使用此命令查看您的网络上有哪些设备。 - **`scan`** — 深度扫描特定主机或范围(端口、服务、banner、SSL、DNS、OS 估算、traceroute)。 ### 发现连接的设备 ``` # 自动检测本地 /24 子网并列出其中的所有内容 python main.py discover # 或者显式指定一个子网 python main.py discover 192.168.1.0/24 # 将设备列表保存为报告 python main.py discover 192.168.1.0/24 --output html ``` 示例输出: ``` Connected Devices on 192.168.1.0/24 (6/254 responded) ┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓ ┃ IP Address ┃ Status ┃ Hostname ┃ MAC Address ┃ Vendor ┃ Latency (ms) ┃ ┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩ │ 192.168.1.1 │ ONLINE │ router.home │ AA:BB:CC:11:22:33 │ Cisco Systems │ 2.10 │ │ 192.168.1.14 │ THIS DEVICE │ DESKTOP-CDU0ABU │ - │ - │ 0.42 │ │ 192.168.1.42 │ ONLINE │ - │ B8:27:EB:44:55:66 │ Raspberry Pi │ 5.31 │ └───────────────┴─────────────┴─────────────────┴───────────────────┴────────────────┴──────────────┘ ``` ### 深度扫描主机 ### 深度扫描主机 ``` python main.py scan [options] ``` `` 可以是: - 单个 IP 地址:`192.168.1.1` - 主机名:`scanme.nmap.org` - CIDR 范围:`192.168.1.0/24` ### 扫描选项 | 标志 | 描述 | 默认值 | |---|---|---| | `--ports SPEC` | `top100`、`top1000`、`all` 或自定义,例如 `22,80,1000-1010` | `top100` | | `--timeout SECONDS` | 单次连接超时时间 | `1.5` | | `--threads N` | 最大并发连接数 | `200` | | `--retries N` | 超时时每个端口的重试次数 | `1` | | `--udp` | 同时扫描 UDP 端口 | off | | `--syn` | 使用 SYN 扫描(需要 scapy + root/管理员权限) | off (connect 扫描) | | `--dns` | 枚举 DNS 记录 | off | | `--ssl` | 检查相关开放端口上的 SSL/TLS 证书 | off | | `--traceroute` | 对目标运行 traceroute | off | | `--no-os-detect` | 禁用 OS 指纹估算 | (默认启用) | | `--no-ping` | 跳过主机发现,直接扫描端口 | off | | `--output {html,json,csv,xml}` | 生成报告文件 | none | | `--output-path PATH` | 自定义报告文件路径 | 在 `output/` 中自动生成 | ## 示例 ``` # 对单个 host 进行基本扫描,top 100 端口 python main.py scan 192.168.1.1 # 扫描公共测试目标 python main.py scan scanme.nmap.org # 扫描整个子网 python main.py scan 192.168.1.0/24 # 自定义端口范围 python main.py scan 192.168.1.1 --ports 1-1000 # 预设端口列表 python main.py scan 192.168.1.1 --ports top100 python main.py scan 192.168.1.1 --ports top1000 python main.py scan 192.168.1.1 --ports all # Timing 和并发 python main.py scan 192.168.1.1 --timeout 2 --threads 500 # 额外检查 python main.py scan example.com --dns python main.py scan example.com --ssl python main.py scan 192.168.1.1 --traceroute # 报告生成 python main.py scan 192.168.1.1 --output html python main.py scan 192.168.1.1 --output json python main.py scan 192.168.1.1 --output csv python main.py scan 192.168.1.1 --output xml ``` ## 截图 - `assets/screenshot-terminal.png` — 扫描期间基于 Rich 的终端 UI(占位图) - `assets/screenshot-html-report.png` — HTML 报告示例(占位图) ## 故障排除 **“scapy is not installed” 警告** ARP 发现和 SYN 扫描是可选功能。安装 scapy (`pip install scapy`) 并使用提权权限(Linux/macOS 上的 root,Windows 上的 Administrator)运行工具以启用它们。如果没有 scapy,该工具会自动回退到 ICMP/TCP ping 进行发现,并使用完整的 TCP connect 扫描端口 — 两者均无需特殊权限即可运行。 **所有端口均显示为 “filtered”** 这通常意味着防火墙正在静默丢弃数据包,或者您的超时时间对于当前网络路径来说太短。尝试增加 `--timeout`(例如 `--timeout 3`)。 **Traceroute 未返回任何跳数** 确保 `traceroute` (Linux/macOS) 或 `tracert` (Windows) 命令已安装并且在您的 `PATH` 中。某些云/容器环境会限制 raw ICMP,这可能会导致 traceroute 完全无法工作。 **DNS 枚举返回空结果** 安装 `dnspython` (`pip install dnspython`),并确保目标解析为一个真实的域名 — 在没有反向主机名的情况下对纯 IP 地址进行 DNS 记录枚举不会返回有意义的结果。 **SYN 扫描提示权限拒绝** SYN 扫描需要 raw socket 访问权限,这需要 root/Administrator 权限。请使用 `sudo` (Linux/macOS) 或提权的终端 (Windows) 运行 PyNexus,或者省略 `--syn` 以改用标准的 TCP connect 扫描。 **扫描大范围 IP 时速度很慢** 增加 `--threads` 以获得更多并发,减少 `--timeout`,或者扫描较小的端口范围(例如用 `top100` 代替 `all`)。 ## 常见问题 **这是 Nmap 的替代品吗?** 不是。PyNexus 是一个具有教育意义、可扩展的 Python 实现,涵盖了 Nmap 的许多核心概念(发现、端口扫描、服务/banner 检测、OS 估算、DNS/SSL 枚举、traceroute、报告)。对于专业业务,Nmap 仍然是行业标准工具,它具有更高级的指纹识别、NSE 脚本和数据包构造 (packet-crafting) 功能。 **我可以用它扫描任何 IP 地址吗?** 不能 — 只能针对您拥有或获得明确书面授权测试的系统。未经授权的扫描可能会违反计算机滥用相关法律。 **为什么 OS 检测被标记为 “estimate”(估算)?** PyNexus 使用轻量级的基于 TTL 的启发式方法,而不是 Nmap 使用的完整主动数据包构造指纹数据库。这是有意为之的,使其简单、快速且非侵入性 — 但精度远不及专用的 OS 指纹识别工具。 **支持 IPv6 吗?** 通过 Python 的标准 `socket` 和 `ipaddress` 库支持基本的 IPv6 文字目标;某些辅助实用程序(例如 ARP 发现)仅支持 IPv4。 **如何向数据库添加新服务或供应商?** 编辑 `database/services.json` (端口 → 服务名称) 或 `database/vendors.json` (MAC OUI 前缀 → 供应商名称)。两者都是在运行时加载的纯 JSON 文件。 ## 许可证 本项目基于 MIT 许可证提供。详见下文: ``` MIT License Copyright (c) 2026 PyNexus Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` ## 道德使用提醒 仅扫描您拥有或获得明确授权测试的系统与网络。 本工具旨在用于学习、防御性安全以及合法的网络管理。在大多数司法管辖区,滥用此软件进行未经授权的访问或破坏计算机系统都是非法的,作者对此不予认可或支持。 ## 鸣谢 **开发者:** anshapi **联系方式:** [t.me/nepalimomoswala](https://t.me/nepalimomoswala) 欢迎提交 Issue、功能请求和 Pull request — 请在 GitHub 仓库中开启一个,或直接通过 Telegram 联系。
标签:Facebook API, Python, 云存储安全, 实时处理, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 聊天机器人, 逆向工具