IronRDP:一个用 Rust 实现的 Microsoft RDP 协议
文章介绍了用 Rust 语言实现的 Microsoft RDP 协议,名为 IronRDP。它是一组 Rust 包,专注于安全性,并支持多种视频编解码器,包括未压缩位图、RLE、RDP 6.0 压缩和 RemoteFX。文章提供了使用 `ironrdp-client` 和 `screenshot` 的示例,展示了其客户端功能和基本用法。此外,还提供了在服务器上启用 RemoteFX 的方法,以及获取帮助的途径,包括 issue tracker 和 matrix room。
Devolution / **IronRDP ** 公开
Rust 实现的 Microsoft Remote Desktop Protocol (RDP)
许可协议
发现 Apache-2.0, MIT 许可
发现的许可协议
Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT 466 stars 59 forks
IronRDP
一组 Rust 包,提供 Microsoft Remote Desktop Protocol 的实现,重点关注安全性。
演示
ironrdp-tauri-client-hackaton-result.mp4
视频编解码器支持
支持的编解码器:
- 未压缩的原始位图
- 交错游程编码 (RLE) 位图编解码器
- RDP 6.0 位图压缩
- Microsoft RemoteFX (RFX)
例子
ironrdp-client
一个功能齐全的 RDP 客户端,基于 IronRDP 包套件,并使用非阻塞、异步 I/O 实现。
cargo run --bin ironrdp-client -- <HOSTNAME> --username <USERNAME> --password <PASSWORD>
screenshot
IronRDP 在阻塞、同步方式下的使用示例。 此示例展示了 IronRDP 在阻塞方式下的使用。 它演示了如何通过利用 IronRDP 包套件,用几百行代码创建一个基本的 RDP 客户端。 在这个基本的客户端实现中,客户端建立与目标服务器的连接,解码传入的图形更新,并将结果输出保存为磁盘上的 BMP 图像文件。
cargo run --example=screenshot -- --host <HOSTNAME> --username <USERNAME> --password <PASSWORD> --output out.bmp
如何在服务器上启用 RemoteFX
运行以下 PowerShell 命令并重启。
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'ColorDepth' -Type DWORD -Value 5
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\Terminal Services' -Name 'fEnableVirtualizedGraphics' -Type DWORD -Value 1
或者,您可以使用 gpedit.msc
更改一些组策略:
- 运行
gpedit.msc
。 - 启用
计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/用于 Windows Server 2008 R2 的 RemoteFX/配置 RemoteFX
- 启用
计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/为设计用于 Windows Server 2008 R2 SP1 的 RemoteFX 客户端启用 RemoteFX 编码
- 启用
计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/限制最大颜色深度
- 重启。
架构
请参阅 ARCHITECTURE.md 文档。
获取帮助
- 在 issue tracker 中报告错误
- 在 matrix room 上讨论该项目
关于
Rust 实现的 Microsoft Remote Desktop Protocol (RDP)
主题
资源
许可协议
发现 Apache-2.0, MIT 许可
发现的许可协议
Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT