Devolutions/IronRDP
GitHub: Devolutions/IronRDP
一个安全导向的 Rust 语言 RDP 协议实现库,提供客户端功能并支持多种图形编解码器和异步 I/O。
Stars: 2902 | Forks: 174
# IronRDP
[](https://docs.rs/ironrdp/) [](https://crates.io/crates/ironrdp)
一系列 Rust crate,提供了 Microsoft Remote Desktop Protocol 的实现,重点关注安全性。
## 演示
## 视频编解码器支持
支持的编解码器:
- 未压缩的原始位图
- 交错行程编码 (RLE) 位图编解码器
- RDP 6.0 位图压缩
- Microsoft RemoteFX (RFX)
## 示例
### [`ironrdp-client`](https://github.com/Devolutions/IronRDP/tree/master/crates/ironrdp-client)
一个基于 IronRDP crate 套件的全功能 RDP 客户端,使用非阻塞、异步 I/O 实现。
```
cargo run --bin ironrdp-client -- --username --password
```
### [`screenshot`](https://github.com/Devolutions/IronRDP/blob/master/crates/ironrdp/examples/screenshot.rs)
以阻塞、同步方式利用 IronRDP 的示例。
此示例展示了以阻塞方式使用 IronRDP。它演示了如何通过利用 IronRDP crate 套件,仅用几百行代码创建一个基本的 RDP 客户端。
在这个基本客户端实现中,客户端与目标服务器建立连接,解码传入的图形更新,并将结果输出作为 BMP 图像文件保存到磁盘上。
```
cargo run --example=screenshot -- --host --username --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` 更改一些组策略:
1. 运行 `gpedit.msc`。
2. 启用 `计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/Windows Server 2008 R2 的 RemoteFX/配置 RemoteFX`
3. 启用 `计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/为 Windows Server 2008 R2 SP1 设计的 RemoteFX 客户端启用 RemoteFX 编码`
4. 启用 `计算机配置/管理模板/Windows 组件/远程桌面服务/远程桌面会话主机/远程会话环境/限制最大颜色深度`
5. 重新启动。
## Rust 版本 (MSRV)
IronRDP 库遵循保守的最低支持 Rust 版本 (MSRV) 策略。
MSRV 是至少 6 个月前发布的最早稳定版 Rust,且受限于 [Debian stable-backports](https://packages.debian.org/search?suite=all&arch=any&searchon=names&keywords=rust) 和 [Fedora stable](https://packages.fedoraproject.org/pkgs/rust/rust/) 中可用的 Rust 版本。
`rust-toolchain.toml` 中指定的工具链既是项目工具链,也是 CI 验证的 MSRV。
有关完整策略,请参阅 [ARCHITECTURE.md](./ARCHITECTURE.md#msrv-policy)。
## 架构
请参阅 [ARCHITECTURE.md](https://github.com/Devolutions/IronRDP/blob/master/ARCHITECTURE.md) 文档。
## 获取帮助
- 在 [issue tracker](https://github.com/Devolutions/IronRDP/issues) 中报告错误
- 在 [matrix room](https://matrix.to/#/#IronRDP:matrix.org) 中讨论项目
标签:crates, IronRDP, RDP, RemoteFX, Rust, 协议实现, 可视化界面, 图形编解码, 开源库, 异步IO, 微软技术, 截图, 搜索引擎爬虫, 系统工具, 网络安全, 网络流量审计, 虚拟化, 远程桌面协议, 远程访问, 通知系统, 隐私保护