pgadient/TikMan
GitHub: pgadient/TikMan
TikMan 是一款开源的局域网设备扫描与管理桌面工具,自动发现、识别并集中管理局域网内的网络设备,尤其深度支持 MikroTik RouterOS。
Stars: 22 | Forks: 1
# TikMan
[](LICENSE)





将它指向一个网络,TikMan 就会找到每一台设备,弄清楚它们分别是什么,并让备份、
更新、SSH 和 VNC 触手可及——只需一个便携文件,无需安装,原生支持 Windows、Linux
和 macOS。
这是一款桌面工具(基于 .NET 10),用于集中监控和管理局域网中的设备——
首当其冲的是 **MikroTik** 路由器,同时在其能力范围内,尽可能支持它发现的所有其他设备:
交换机、无线接入点、防火墙、打印机、NAS、摄像头、VoIP 电话、IoT、UPS、PC/服务器以及
虚拟机。你无需手动选择协议或端口;它会自动探测常规服务,并尝试识别每台设备的身份。
它运行在 **Windows**(最初且经过最多测试的版本)上,并且通过较新的跨平台
构建,也能运行在 **Linux 和 macOS** 上。桌面应用还可以为浏览器提供 Web 界面,
此外还有一个专门为服务器准备的无头(headless)构建版本——不过它的功能要比完整应用少得多。
它并非重新实现了 RouterOS——它是一个基于 REST API **和** SSH 的前端,用于同时管理多台
设备,并倾向于在默认情况下采取安全措施。免费且开源([MIT](LICENSE))。

*物理拓扑图:不是“这 40 个地址有响应”,而是**每台设备插在哪个交换机端口上**——
通过 RouterOS 或普通 SNMP 读取网桥转发表得出。Traceroute 看不到数据链路层(layer 2);
而转发表可以。支持导出为 PNG、矢量 PDF、draw.io 或 GraphML。*
## 截图

*设备列表。每台设备都会被识别和分类——类型、名称、地址、它响应的服务、
厂商和型号——下方是所选设备的日志、CPU/内存和详细信息。
🔑 标记了已保存登录凭据的设备。*
## 它的功能
- **免配置发现。** 将它指向你的网络,它就会通过多个渠道同时发现并识别设备
——无需手动挑选协议或端口。
- **以 MikroTik 为主,尽可能支持其余设备。** RouterOS 获得最全面的支持(监控、
拓扑、Wi-Fi 名称、日志、备份、更新)。其他厂商设备则能获得相应的识别功能和适用的操作
——例如,Zyxel 和 TP-Link 交换机可以被监控和备份,
而许多设备只是被简单地识别和分类。
- **默认安全。** 凭据和配置仅通过 **HTTPS 或 SSH** 传输。默认关闭
普通 HTTP,因此不会有任何敏感信息以明文形式在线路上传输。
- **拓扑图。** 一张逻辑拓扑图(地址分布)和一张基于真实
转发表证据构建的物理拓扑图,可导出为 PNG、矢量 PDF,或可编辑的 **draw.io / GraphML** XML。
- **内置远程访问。** 应用内集成 SSH 终端和 VNC 查看器,外加 Wake-on-LAN。
- **可选的浏览器前端。** 桌面应用可以提供自身的一个 Web 版本——包含设备
列表、扫描、拓扑、SSH 终端和 VNC——以便你可以通过手机管理整个机群。(针对 Linux/macOS 服务器
提供了一个单独的无头构建版本,但功能要少得多。)任何涉及
密码或屏幕的操作都仅限 HTTPS。
- **支持七种语言**,为 Windows、Linux 和 macOS(x64 和 ARM64)提供独立打包的构建版本,以及
静默更新检查。
## 下载
从 **[Releases](https://github.com/pgadient/TikMan/releases)** 获取构建版本。无需安装程序——
它是一个单一文件,并且不会在其自身的设置文件夹之外写入任何内容。
| 平台 | 文件 |
|---|---|
| **Windows** | `TikMan--win-x64.exe` 或 `-win-arm64.exe` —— 一个完全独立的文件,无需安装其他任何内容 |
| **Linux** | `TikMan--x86_64.AppImage` / `-aarch64.AppImage` —— 执行 `chmod +x` 后运行 |
| **macOS** | `TikMan--macos.tar.gz`` —— 解压并运行 `install.command`(详见内部的 README;由于未签名,macOS 需要执行一条命令来允许运行) |
Windows 构建版本是使用率最高的;Linux 和 macOS 构建版本较新。
Windows 的 exe 文件**未签名**,因此首次运行时 SmartScreen 会显示“未知发布者”警告
(*更多信息 → 仍要运行*)。macOS 也会拦截未签名的应用——附带的 `install.command` 会为你清除
隔离标志。
可选项:在 Windows 上安装 **Npcap**(兼容 WinPcap 模式),或在 Linux/macOS 上安装 libpcap,可增加 Zyxel ZON
发现功能。该组件会在运行时被检测,如果不存在则自动跳过——由于其许可证限制,无法将其直接打包在内。
## 功能详情
### 发现与分类
- **并行发现:** MikroTik MNDP、子网 ping/端口扫描、IPv6 邻居、**Zyxel ZON**(原始
以太网,需要 Npcap/libpcap)、**mDNS/Bonjour** 和 **UPnP/SSDP**(用于那些仅通过这些方式响应的设备,如 Apple 设备、智能电视、Sonos、Chromecast 等),以及 **SNMP**(v1/v2c)。
- **识别,优先使用主动探测:** Web 指纹 / SNMP / WMI / 型号名称,仅在最后才将
MAC-OUI 作为备选方案——因此设备在本地网络和通过 VPN 看起来是一样的。它能识别
防火墙、交换机、AP、打印机/多功能一体机(MFP)、VoIP 电话和 PBX、摄像头、NAS、支付终端、
邮资机、BMC/带外控制器以及虚拟机(通过 Hypervisor 的 MAC 地址段)。它宁愿
保留设备未标记状态,也不愿仅凭一个开放的 Web 端口就猜测它是“服务器”。
- **简单模式:** 纯 IPv4 扫描(ping + TCP),不包含
额外的广播/探测,专为严格封闭的网络设计。
### 监控
- 自动刷新(间隔可配置)CPU、RAM、运行时间和版本号,带有单设备历史
图表。适用于 RouterOS,并通过 SSH 支持 Zyxel 和 TP-Link 交换机。
- 读取操作**优先采用安全路径**:HTTPS REST → **SSH CLI** → 仅在你允许的情况下才使用 HTTP。对于
HTTPS 握手失败的 RouterOS 设备,系统仍会通过 SSH 读取数据,而不是回退到
明文 HTTP。
### 拓扑
- **逻辑拓扑图**(IP 地址分布)和基于真实证据的**物理拓扑图**:RouterOS
网桥转发表(MAC 地址挂在哪个交换机端口下——这是 traceroute 看不到的信息)、
非 MikroTik 和免登录设备的 **SNMP** FDB、`/ip neighbor`,以及用于路由跳数的 traceroute。
整洁的树状布局,支持平移/缩放和端口分组。
- 将整个拓扑图**导出**为 PNG、矢量 **PDF**,或可编辑的 **draw.io** / **GraphML** XML,供
图表编辑器使用。
### 远程访问
- **内置 SSH 终端**(包含某些防火墙所需的非标准 MAC 处理)和
**嵌入式 VNC 查看器**(RFB 3.3/3.7/3.8)。
- 可点击的 **RDP / VNC / RTSP** 徽章、**Wake-on-LAN**,以及“在 WinSCP / PuTTY / VLC 中打开”。
### 备份
- **配置导出:** 完整的文本配置,可针对单台设备或整个机群导出至一个文件夹。
通过 HTTPS 或在 HTTPS 异常时通过 **SSH(`/export`)**获取 RouterOS `.rsc` 文件;通过
SSH 获取 Zyxel 交换机 `.cfg` 文件。文件会自动命名。
- **完整备份(`.backup`,针对 RouterOS):** 精确的二进制镜像,**完全通过 SSH** 获取——
创建、下载(SCP)并清理。
### 更新
- 为每台设备提供更新检查,为 MikroTik 提供按设备的更新通道(stable / long-term / testing /
development),以及一个助手程序,可以按选定顺序依次安装更新,并等待
每台设备重新上线。对于没有更新 API 的 TP-Link 和 Zyxel,“最新版本”
列会改为链接到厂商的固件页面(并在能够读取时显示最新版本号)。
*(更新会导致设备重启——请先进行测试。)*
### Web 服务器(可选)
- 从 **Web 服务器**菜单切换(默认关闭)。它在进程内运行,并在浏览器中镜像当前运行的
应用:实时设备列表、带进度的扫描控制、拓扑图、单设备
详细信息、Wake-on-LAN、**设置登录**、**备份下载**、**SSH 终端**(xterm.js)和 **VNC**
(noVNC)。(独立的 `TikMan.Host` 构建版本在没有桌面应用的情况下运行相同的服务器,但暴露的
功能较少。)
- **安全性:** 强制使用 HTTP Basic auth;涉及凭据或屏幕的每一个操作(登录、
备份、终端、VNC)都**仅限 HTTPS**,并通过普通 HTTP 拒绝访问。你可以自带证书,或者
让 TikMan 生成并缓存一个自签名证书。它是一个轻量级的 `TcpListener` 服务器——不需要管理员权限,也不需要
额外的运行时——从而保持框架依赖构建版本的精简。
### 语言
- 支持英语、德语、瑞士德语、西班牙语、意大利语、法语和葡萄牙语,可在
**设置 (⚙️)** 下切换且立即生效。首次运行会跟随系统显示语言。
## 结构
```
src/
TikMan.Core Logic: REST + SSH clients, discovery, classification, backup, storage (no UI)
TikMan.App WPF desktop UI for Windows (the original client)
TikMan.App.Avalonia Cross-platform desktop UI (Windows / Linux / macOS)
TikMan.Web Shared web UI + server layer
TikMan.Host Headless host that serves a limited subset of the web UI (Linux / macOS)
```
`Core` 特意保持无 UI 状态,这样桌面客户端、Web 服务器和无头宿主程序就可以共享
同一套逻辑,而不是重复实现。保留两个桌面 UI 的原因是 Avalonia 版本目前仍在追赶
Windows 版本的功能;计划在它完全追上后让 WPF 客户端退役。
## 设备要求 (RouterOS v7)
没有特殊要求。**RouterOS 默认启用了 SSH**,仅凭它就足以支持
监控、拓扑、Wi-Fi 名称、日志、备份和更新——因此只要设备配置了登录凭据,就能直接
正常工作。
TikMan 通过 **REST API** (`https:///rest/…`) **和/或 SSH** 连接 RouterOS —— 两者均为
加密传输,你不必只选其一。它优先使用 HTTPS,当 HTTPS 握手
失败时回退到 SSH,并且只有在你手动开启的情况下才会使用普通 HTTP。
## 构建与运行
```
# Windows 桌面 (WPF):
dotnet run --project src\TikMan.App
# 跨平台桌面 (Avalonia):
dotnet run --project src\TikMan.App.Avalonia
# Headless web 主机 (Linux/macOS/Windows):
dotnet run --project src\TikMan.Host
# 发布单文件 exe (self-contained – 目标机器上无需安装 .NET):
dotnet publish src\TikMan.App.Avalonia -c Release -r win-x64 --self-contained true `
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true `
-p:EnableCompressionInSingleFile=true -o dist\release
```
需要 **.NET 10 SDK**。Linux/macOS 的打包文件(AppImage、`.app`、tarball)位于
[`packaging/`](packaging/) 下;发布版本的详细步骤记录在 [RELEASING.md](RELEASING.md) 中。
## 安全与数据存储
- **凭据保存在你的用户配置文件中** —— 在 Windows 上位于 `%AppData%\TikMan`,在
Linux 上位于 `~/.config/TikMan`,在 macOS 上位于 `~/Library/Application Support/TikMan`。
- **密码静态加密:** 在 Windows 上使用 DPAPI(绑定到你的 Windows 账户),在 Linux/macOS 上
使用带有本地密钥文件的 AES。如果复制到另一台机器,密码将不会跟随过去——
它们需要在目标机器上重新输入。
- **默认网络传输安全:** 监控、拓扑、配置导出和备份均使用 HTTPS 或 SSH。
普通 HTTP(会以明文形式发送凭据)默认**关闭,你手动启用**,
路径为 设置 → 连接;当它关闭时,仅支持 HTTP 响应的设备会被跳过并给出提示,
而不是默默地造成凭据泄漏。
- **Web 服务器** 需要用户名 + 密码(Basic auth,加密存储),并将所有涉及
密码/屏幕的操作限制在 HTTPS 上;设备密码绝对不会通过网络接口分发。
标签:内存分配, 局域网扫描, 拓扑发现, 运维工具