VprixVncProxy 是 Golang 实现的 Vnc 远程桌面代理组件,完全解析 rfb 协议,支持远程桌面代理,rbs 文件录屏,rbs 文件回放,截图,录制视频。

  • 全协议支持的 VncProxy。
    • 支持 Tcp 代理
    • 支持 WebSocket 代理
  • 支持远程桌面操作保存为 rbs 文件。
  • 支持使用 rbs 文件作为重播服务,通过 vnc 客户端连接 player 服务,回放远程桌面的操作。
  • 支持实时录制视频。

  • 支持通过 rbs 文件录制视频

  • 支持屏幕截图

应用场景

  • 远程桌面中间人角色,可以进行审计。
  • 需要对远程桌面更多权限控制的场景。
  • 内网隔离场景

组件说明

Proxy

  1. 启动 `server` 接受 `vnc viewer` 的链接.
  2.  启动 `client` 连接到指定的 `vnc server`.
  3.  为 `vnc viewer` 和 `vnc server` 之间建立起消息转发通道。
  4.  因为 `rfb` 协议被完全解析,可以针对通信的消息进行转发处理,产生了后续的功能。

Recorder

1. 启动 `client` 连接到指定的 `vnc server`.
2. 发送帧缓冲区更新消息 `FramebufferUpdateRequest` 到 `vnc server`。
3. 处理 `vnc server` 回复的界面更新消息 `FramebufferUpdate`。
4. 把这一过程以 `rbs` 文件格式记录下来。

Player

1. 启动 `server` 接受 `vnc viewer` 的链接.
2. 读取 `rbs` 文件,并按格式生成 `FramebufferUpdate` 消息发送给 `vnc viewer`。
3. `vnc viewer` 的界面就会回放动作。

Screenshot

1. 支持 `Proxy`,`Recorder` 和 `rbs` 文件作为输入源。
2. 把当前的界面视图转换为图片文件。

Video

1. 支持 `Proxy`,`Recorder` 和 `rbs` 文件作为输入源。
2. 把 `FramebufferUpdate` 消息转换为视频文件。