SharvikS/NetEngine

GitHub: SharvikS/NetEngine

NetEngine 是一个集成网络扫描、终端和 SSH 等功能的桌面应用,通过本地 AI 助手简化网络管理与安全操作。

Stars: 1 | Forks: 0

# Net Engine v1.1.0 一款现代化的桌面网络工具套件,内置终端、多会话SSH客户端、文件传输功能、网络适配器配置器以及完全本地化的AI助手。使用 Python + PyQt6 构建 — 纯 Python 实现,无需原生扩展。 可在 **macOS、Windows 和 Linux** 上原生运行。 ![Net Engine 扫描器演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f038db19bd130027.gif) ## 下载 | 平台 | 安装包 | 构建工具 | |----------|-------------------------------------------|--------------------------------| | Windows | `NetEngine--Windows.exe` (单文件) | `scripts\build_windows.bat` | | macOS | `NetEngine--macOS.dmg` (~41 MB) | `scripts/build_macos.sh` | | Linux | `NetEngine--Linux-x86_64.AppImage` | `scripts/build_linux.sh` | | Linux | `netengine__amd64.deb` | `scripts/build_linux.sh deb` | 每个平台的安装程序必须在对应平台上构建 — PyInstaller 不是交叉编译器。完整构建说明请参见 [RELEASE.md](./RELEASE.md)。 或者从源代码运行 — 请参见 [设置](#setup)。 ## 更新日志 ### v1.2.0 — 2026年5月25日 - **macOS 和 Linux 打包** — macOS 使用 `.dmg`,Linux 使用 `.AppImage` 和 `.deb`,与现有的 Windows `.exe` 并行 - **跨平台核心** — 主要开发已迁移到 macOS;Windows 和 Linux 仍是首要支持目标 - 通过新的 `utils/paths.py` 实现平台正确的用户数据目录: - macOS: `~/Library/Application Support/Net Engine/` - Windows: `%APPDATA%\NetEngine\` - Linux: `$XDG_CONFIG_HOME/netengine/` (默认 `~/.config/netengine/`) - 旧版 `~/.netscope/` 数据在首次启动时自动迁移(非破坏性复制) - 原生字体回退链 (`gui/platform_fonts.py`) — macOS 使用 SF Pro / SF Mono,Windows 使用 Segoe UI / Cascadia,Linux 使用 Inter / JetBrains Mono - 修复了 macOS 上扫描器的 MAC 地址精度问题 — `arp -a` 中的短格式 MAC 地址(例如 `c:e8:5c:68:c6:4`)现在会被规范化,修复了约一半主机的供应商查找 - TCP 回退 ping 在 macOS 上速度现在快了约 7 倍 - 修复了 Windows 上助手标签页崩溃的问题 ### v1.1.0 — 2026年5月20日 - 重建了便携式单文件 exe — 42.7 MB(原为 675 MB,缩小 94%) - 启动时间从 20-60 秒缩短到约 3 秒 - 延迟页面初始化 — 启动时仅加载扫描器,所有其他页面在首次访问时初始化 - DNS 线程池现在在首次扫描时创建,而不是在导入时创建 - 主窗口构建前显示启动画面,提供即时视觉反馈 - 新增了文件传输页面(SCP 工作区) - 从侧边栏移除了工具标签页 - “关于”页面重新设计为四列功能卡片网格 - 重写了帮助页面,提供更清晰的设置指南 - AI 助手:改进了意图解析、安全策略、自动化服务 ## 功能 ### 扫描器 在任意子网内进行并发 ping 扫描 — 反向 DNS、ARP/MAC 供应商查找、基于 TTL 的操作系统提示、可配置的 TCP 端口扫描、可排序和可筛选的结果表、CSV/JSON 导出、持久化扫描历史(最近 20 次扫描)。 ![扫描器视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/02dec512ae130029.png) - **主机详情抽屉** — 点击任意行以打开右侧面板,包含快速操作、主机信息和内联 SSH 连接表单。 ### 终端 内置完整终端,支持可选的命令行后端(Windows 上为 `PowerShell`、`CMD`、`WSL`;Linux/macOS 上为 `bash`)。支持命令历史记录,内置 `cd` / `clear` / `cls` 命令,支持 `Ctrl+C` / `Ctrl+L`。 ![终端视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/45853a7010130030.png) ### SSH 会话 多标签页 SSH 客户端,具有可折叠的连接表单、已保存会话管理器(搜索 + 置顶 + 最近连接)、快速连接栏(`user@host:port`)、每个标签页的状态指示器、会话复制以及通过双击标签页进行重命名功能。 ![SSH 会话](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/dbca31077d130032.png) ### 文件传输 基于 SCP 的文件传输工作区,与 SSH 会话管理器集成。无需离开应用程序即可浏览远程目录和移动文件。 ![文件传输](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0b6f2de924130032.png) ### 网络适配器(Windows) 查看当前的 IPv4 设置,管理已保存的 IP 配置文件,并使用 `netsh` 在 DHCP 和静态(地址/掩码/网关/DNS)之间切换。需要管理员权限才能应用更改。 ![适配器配置](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/552a48146a130033.png) ### 监视器 实时多目标 ping 监视器和一次性端口测试工具,带有实时延迟图表。 ### API 控制台 内置 REST 客户端,支持 Basic / Bearer 认证、自定义头、请求体、保存/加载命名请求以及 cURL 导入/导出。 ![API 控制台](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c8e642807c130034.png) ### 本地 AI 助手 可选的、完全本地化的助手,由 [Ollama](https://ollama.com) 提供支持。两种模式: - **命令模式** — 自然语言 → 一条建议的 shell 命令,附带解释和可选的注意事项。可复制或插入终端。永不自动执行。 - **聊天模式** — 流式自由形式帮助:询问扫描结果、解释终端/SSH 输出或说明某项功能。历史记录限制在最近约 10 次交互。 使用 **Ctrl+Enter** 发送。**停止** 可取消正在进行的响应。 ![AI 聊天助手](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f78690905e130036.png) ![AI 命令助手](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/abe074d758130037.png) 此功能不会与云通信 — 请参见 [本地 AI (Ollama)](#local-ai-ollama)。 ### 主题系统 四个内置主题(`深色`、`霓虹`、`太空`、`玻璃`),可从 `视图 → 主题` 或设置页面切换。选择会自动持久化。 ![关于对话框](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8e097ceb37130038.png) ## 设置 需要 **Python 3.10+**。 ``` python -m pip install -r requirements.txt python main.py ``` 在 **Windows** 上,双击 `run.bat`。要进行网络适配器更改,请使用 `run-admin.bat` 启动(会出现 UAC 提示)。 在 **macOS / Linux** 上,直接运行 `python main.py`。两个平台都使用系统原生 shell(`bash` / `zsh`)作为嵌入式终端。 ### 依赖项 | 软件包 | 用途 | |------------|---------------------------------------------------------| | PyQt6 | 桌面 UI | | psutil | 网络接口枚举 + 实时系统指标 | | paramiko | SSH / SCP 传输 | | requests | 内置 API 控制台 | | pyserial | 串口工具 | ## 本地 AI (Ollama) 助手页面完全是可选的。如果 Ollama 未安装或未运行,应用程序的其他部分仍正常工作 — 该页面会显示一个横幅说明需要修复的问题。**数据不会离开本机。** 所有推理都通过 `localhost:11434` 上的 Ollama 守护进程在本地运行。 ### 1. 安装 Ollama - **Windows / macOS** — 从 安装 Ollama 桌面应用程序。 - **Linux** — `curl -fsSL https://ollama.com/install.sh | sh`,然后运行 `ollama serve`。 ### 2. 拉取模型 ``` ollama pull llama3.2:3b ``` `llama3.2:3b` 是默认模型。任何指令/聊天模型都可以 — 拉取后在设置中更改名称即可。 | 模型 | 大小 | 说明 | |----------------|---------|-------------------------------------------| | `llama3.2:1b` | ~1.3 GB | 最快,质量最低 | | `llama3.2:3b` | ~2.0 GB | **默认** — 在笔记本电脑上平衡性好 | | `qwen2.5:3b` | ~1.9 GB | 对于其大小而言推理能力强 | | `phi3:mini` | ~2.3 GB | 非常擅长简短的事实性回答 | ### 3. 打开助手标签页 启动 Net Engine,从侧边栏打开**助手**(或按 `Ctrl+8`),选择模式并开始输入。使用 **Ctrl+Enter** 发送。 ### 4. 配置 设置位于 `~/.netscope/settings.json` 中的 `ai` 键下: ``` { "ai": { "enabled": true, "base_url": "http://localhost:11434", "model": "llama3.2:3b", "command_model": "", "timeout": 60, "temperature": 0.3, "max_tokens": 512, "system_hint": "" } } ``` - `model` — 主聊天模型。 - `command_model` — 可选的、用于命令建议的独立模型(留空则复用 `model`)。 - `timeout` — 每个请求的超时时间(秒);对于首次加载的大型模型可增加此值。 - `system_hint` — 附加到每个系统提示的文本(例如 `"我使用 WSL Ubuntu"`)。 ### 隐私 - `ai/` 包仅与 `localhost:11434` 通信。 - 无遥测,无云 API,无托管端点。 - 提示和响应永远不会离开您的机器。 ## 键盘快捷键 | 快捷键 | 操作 | |----------------|-------------------------------| | `F5` | 开始扫描 | | `Esc` | 停止扫描 | | `Ctrl+E` | 导出结果 | | `Ctrl+B` | 切换侧边栏 | | `Ctrl+,` | 设置 | | `Ctrl+1` | 扫描器 | | `Ctrl+2` | 终端 | | `Ctrl+3` | SSH 会话 | | `Ctrl+4` | 文件传输 | | `Ctrl+5` | 网络适配器 | | `Ctrl+6` | 监视器 | | `Ctrl+7` | API 控制台 | | `Ctrl+8` | AI 助手 | | `Ctrl+9` | 设置 | | `F1` | 帮助 | | `Ctrl+Enter` | 发送 AI 提示(在助手内) | | `Ctrl+L` | 清除嵌入式终端 | | `Ctrl+C` | 取消正在运行的终端命令 | | `Ctrl+Q` | 退出 | ## 项目布局 ``` NetEngine/ ├── main.py Entry point ├── run.bat Launcher (Windows) ├── run-admin.bat Launcher with elevation (UAC) ├── requirements.txt ├── BUILD.md Windows-only build notes ├── RELEASE.md Cross-platform build / release guide ├── NetEngine.spec PyInstaller spec — Windows ├── NetEngine-macos.spec PyInstaller spec — macOS .app bundle ├── NetEngine-linux.spec PyInstaller spec — Linux executable ├── create_icon.py Generates .ico / .png / .icns ├── scripts/ │ ├── build_windows.bat → Windows .exe │ ├── build_macos.sh → macOS .dmg │ └── build_linux.sh → Linux .AppImage / .deb ├── packaging/ │ └── linux/ AppRun, .desktop, debian/control template ├── gui/ │ ├── themes.py Theme palette + ThemeManager + QSS builder │ ├── main_window.py Sidebar + stacked pages (lazy init) │ ├── dialogs.py PortScan, Export, About dialogs │ ├── motion.py Global animation / interaction system │ └── components/ │ ├── sidebar.py │ ├── loading_screen.py Boot-sequence splash │ ├── scanner_view.py │ ├── scan_toolbar.py │ ├── host_table.py │ ├── detail_panel.py Host details drawer │ ├── terminal_view.py │ ├── terminal_widget.py Embedded terminal control │ ├── collapsible.py Collapsible section helper │ ├── ssh_view.py Multi-session SSH workspace │ ├── ssh_session_tab.py One SSH session = one tab │ ├── file_transfer_view.py SCP file transfer workspace │ ├── monitor_view.py Multi-ping monitor + port tester │ ├── api_console_view.py Built-in REST client │ ├── network_config_view.py Windows netsh adapter config │ ├── assistant_view.py Local AI assistant (Ollama) │ ├── settings_view.py App settings UI │ ├── help_view.py Help page │ ├── about_view.py About / credits │ └── app_status_bar.py Live CPU/MEM status bar ├── ai/ │ ├── ollama_client.py HTTP client, no Qt imports │ ├── model_config.py AI config (~/.netscope/settings.json) │ ├── prompts.py Centralized system prompts │ ├── command_assistant.py One-shot command suggestion + parser │ ├── chat_assistant.py Bounded-history chat │ └── ai_service.py Facade + AIStatus + QThread workers ├── scanner/ │ ├── network.py Interface enumeration, ARP, IP range │ ├── host_scanner.py Ping/DNS/MAC pipeline + ScanController │ ├── live_ping.py Continuous ping worker (Monitor page) │ ├── port_scanner.py TCP connect scanner │ ├── service_mapper.py Port to service name + presets │ ├── fingerprint.py OUI vendor table + OS hint from TTL │ ├── ssh_client.py paramiko-based SSH session │ ├── scp_transfer.py SCP file transfer helpers │ └── net_config.py Windows netsh adapter helper └── utils/ ├── paths.py Platform-correct user data directory ├── export.py CSV / JSON export ├── history.py Scan history persistence └── settings.py Theme + saved sessions + IP profiles ``` ## 操作系统特定说明 - **macOS** 是主要开发平台。扫描器、终端、SSH、文件传输、监视器、API 控制台和 AI 助手均可原生工作。Ping 使用 `ping -c 1`,ARP 缓存通过 `arp -a` 获取(带短格式 MAC 地址规范化)。 - **Windows** 仍然是完全支持的发布目标 — Ping 使用 `ping -n 1`,ARP 缓存通过 `arp -a` 获取,适配器配置通过 `netsh interface ipv4`。终端支持 `PowerShell`、`CMD` 和 `WSL` 后端。 - **Linux** — 扫描器、终端、SSH 和文件传输均可工作。网络适配器页面会显示“仅限 Windows”的提示。 - **管理员权限** 仅在适配器页面的“应用”操作时需要。其他所有功能都以普通用户身份运行。 ## 持久化状态 Net Engine 会写入平台标准的用户数据位置: | 操作系统 | 设置 + 历史记录 | |----------|---------------------------------------------------------------| | macOS | `~/Library/Application Support/Net Engine/` | | Windows | `%APPDATA%\NetEngine\` | | Linux | `$XDG_CONFIG_HOME/netengine/` (默认 `~/.config/netengine/`) | 该目录下包含: - `settings.json` — 当前主题、已保存的 SSH 会话(除非按会话选择加入,否则密码不保存)、已保存的 IP 配置文件、已保存的 API 请求、终端 shell 偏好设置、AI 配置。 - `history/scan_*.json` — 最近 20 次完成的扫描。 位于 `~/.netscope/` 的旧版数据(来自 v1.1.0 及更早版本)在首次启动时通过非破坏性复制自动迁移;原始目录作为用户控制的备份保留原样。 ## 局限性 - 嵌入式终端是行缓冲的。不是完整的 PTY — 期望 TTY 的程序(`vim`、`top`)应通过 SSH 启动。 - OUI 供应商表是手动策划的子集(约 150 个前缀)。 - 不在范围内;扫描器仅支持 IPv4。 - 网络适配器配置仅限 Windows。 - 本地 AI 助手需要一个在本地运行的 [Ollama](https://ollama.com) 实例。无云回退。
标签:AI助手, AI风险缓解, PyQt6, Python, SSH客户端, WSL, 云存储安全, 多会话, 扫描器, 插件系统, 文件传输, 无后门, 本地AI, 桌面应用, 系统工具, 终端, 网络安全, 网络工具, 网络扫描, 网络适配器, 网络配置, 逆向工具, 隐私保护