# aiDgeScanner **Repository Path**: galaxy_0/ai-dge-scanner ## Basic Information - **Project Name**: aiDgeScanner - **Description**: aiDgeScanner 是一款专为工业网络环境设计的设备发现与管理工具。通过监听 LLDP(Link Layer Discovery Protocol)报文和 UDPDiscovery 协议,能够自动发现网络中的工业交换机、路由器、PLC 等设备,并提供远程管理功能。 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-10 - **Last Updated**: 2026-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # aiDgeScanner - 工业设备网络扫描与管理工具
![aiDgeScanner Logo](assert/ui.png) **一款基于 Electron + Vue 3 + C++ NAPI 的跨平台工业设备网络扫描与管理工具** [![License: GPL-2.0](https://img.shields.io/badge/License-GPL--2.0-blue.svg)](https://opensource.org/licenses/GPL-2.0) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-blue.svg)](https://github.com) [![Electron](https://img.shields.io/badge/Electron-39.8.1-47848F?style=flat-square&logo=electron)](https://www.electronjs.org/) [![Vue](https://img.shields.io/badge/Vue-3.5-4FC08D?style=flat-square&logo=vue.js)](https://vuejs.org/)
## 项目简介 aiDgeScanner 是一款专为工业网络环境设计的设备发现与管理工具。通过监听 LLDP(Link Layer Discovery Protocol)报文和 UDPDiscovery 协议,能够自动发现网络中的工业交换机、路由器、PLC 等设备,并提供远程管理功能。 ## 核心特性 ### 🎯 智能设备发现 - **LLDP 协议监听**:支持标准 LLDP 报文解析,获取网络拓扑信息 - **UDP 发现协议**:兼容自定义 UDP 发现机制 - **多网卡支持**:灵活选择监听网卡 - **实时更新**:设备状态变更即时通知 ### 🔒 远程管理 - **SSH 终端**:内置 SSH 客户端,直接远程操控设备 - **Telnet 支持**:保留 Telnet 连接能力(可隐藏) - **Web 配置页面**:嵌入式浏览器直接访问设备 Web 管理界面 ### 🎨 现代化界面 - **Vue 3 + Composition API**:响应式组件化设计 - **多主题支持**:金桂、竹绿、朗月、沧海、银砾五种主题 - **多语言**:中文/English 国际化支持 - **深色模式**:舒适护眼的深色终端界面 ### ⚡ 高性能底层 - **C++ NAPI 插件**:原生性能的数据包捕获与解析 - **异步 I/O**:基于 libpcap/WinPcap 的高效网络抓包 - **跨平台**:Windows/macOS/Linux 一套代码多平台运行 ## 系统架构 ```mermaid graph TB subgraph UI["UI 层 (Vue 3)"] A[设备列表] --> B[系统日志] B --> C[SSH终端] C --> D[浏览器] end subgraph IPC["Electron 进程通信"] E[IPC Bridge] end subgraph Main["主进程 (Node.js)"] F[窗口管理] --> G[SSH2连接] G --> H[设备扫描器] end subgraph Plugin["C++ NAPI 插件"] I[LLDP解析器] --> J[Packet捕获] J --> K[设备发现] end subgraph System["系统层"] L[libpcap/Npcap] end UI <--> IPC IPC <--> Main Main <--> Plugin Plugin <--> System ``` ## 项目结构 ```mermaid graph TD A[aiDgeScanner] --> B[src/] A --> C[native/] A --> D[device/] A --> E[dist/] B --> B1[components/] B1 --> B1a[SSHTerminal.vue] B1 --> B1b[SettingsModal.vue] B1 --> B1c[TabbedBrowser.vue] B --> B2[theme/] B --> B3[App.vue] C --> C1[src/] C1 --> C1a[scanner.cc] C1 --> C1b[lldp_parser.cc] C1 --> C1c[packet_parser.cc] C --> C2[build/] D --> D1[src/] D1 --> D1a[lldp/] D1 --> D1b[protocol/] ``` ## 快速开始 ### 环境要求 - Node.js >= 18.x - npm >= 9.x 或 yarn >= 1.x - Python 3.x(用于 C++ 插件构建) - Windows 需要安装 [Npcap SDK](https://npcap.com/) 或 WinPcap ### 安装依赖 ```bash npm install --registry=https://registry.npmmirror.com ``` ### 构建 C++ 插件 ```bash npm run build-plugin ``` ### 开发模式运行 ```bash npm run dev # Vite 开发服务器 npm start # Electron 主进程 ``` ### 生产构建 ```bash npm run build # 构建 Vue 前端 npm run electron:build:win # 打包 Windows 安装包 ``` ## 功能演示 ### 设备扫描 点击扫描按钮,自动发现网络中的 LLDP 和 UDP Discovery 设备,实时显示在设备列表中。 ### 远程 SSH 连接 1. 在设备列表中点击 SSH 按钮 2. 在弹出的登录对话框中输入用户名和密码 3. 连接成功后,SSH 终端将在新标签页中打开 ### 主题切换 点击右上角主题选择器,可在以下主题间切换: - 🌸 金桂飘香(Golden Osmanthus) - 🎋 翠竹清幽(Bamboo Green) - 🌙 朗月皎洁(Bright Moon) - 🌊 碧海晴空(Sea Blue) - 🪙 流银典雅(Rich Silver) ## 配置文件说明 aiDgeScanner 支持通过设置对话框配置以下参数: | 参数 | 说明 | 默认值 | |------|------|--------| | 监听模式 | LLDP / UDP / LLDP+UDP | both | | 监听网卡 | 选择抓包的网卡 | 第一个网卡 | | UDP 端口 | UDP Discovery 监听端口 | 6000 | | 查询间隔 | 设备查询间隔(秒) | 5 | ## 技术栈 | 层级 | 技术 | 说明 | |------|------|------| | 桌面框架 | Electron 39 | 跨平台桌面应用框架 | | 前端框架 | Vue 3.5 | 渐进式 JavaScript 框架 | | 构建工具 | Vite 5 | 下一代前端构建工具 | | UI 终端 | xterm.js | 终端模拟器组件 | | SSH 客户端 | ssh2 | Node.js SSH2 客户端库 | | 原生插件 | node-addon-api | C++ 与 Node.js 互操作 | | 网络抓包 | libpcap/WinPcap | 数据包捕获库 | | 协议解析 | C++ | LLDP/UDP 协议解析 | ## 开发指南 ### 添加新组件 ```bash # 在 src/components/ 下创建新组件 # 例如: src/components/MyComponent.vue ``` ### 主题定制 编辑 `src/theme/theme.css` 添加自定义主题变量: ```css :root { --primary-color: #0078d4; --surface-color: #ffffff; --text-color: #323130; } ``` ### IPC 通信 主进程与渲染进程通过 `preload.js` 暴露的 API 进行通信: ```javascript // 渲染进程调用 window.electronAPI.sendMessage('openSSH', { hostname: '192.168.1.1' }) // 主进程接收 ipcMain.on('message', (event, message, data) => { if (message === 'openSSH') { // 处理 SSH 连接 } }) ``` ## License GNU General Public License v2.0 (GPL-2.0) - 详见 [LICENSE](LICENSE) 文件 ## 致谢 - [Electron](https://www.electronjs.org/) - 跨平台桌面应用框架 - [Vue.js](https://vuejs.org/) - 渐进式 JavaScript 框架 - [xterm.js](https://xtermjs.org/) - 终端模拟器 - [ssh2](https://github.com/mscdex/ssh2) - SSH2 客户端库 - [Npcap](https://npcap.com/) - Windows 网络抓包库