Rust implementation of the Microsoft Remote Desktop Protocol (RDP)
Find a file
Benoît Cortier 783167f23d
feat: support for both Send and !Send Framed impls (#189)
Using GATs we achieve genericity over Send and Sync marker traits.
The `FramedRead` and `FramedWrite` traits can now be used in both
single-threaded and multi-threaded contexts.
2023-09-05 21:52:52 -04:00
.cargo refactor: re-organize workspace (#101) 2023-03-29 19:09:15 -04:00
.github ci: disable coverage jobs when running on forks (#185) 2023-08-28 17:50:24 +00:00
crates feat: support for both Send and !Send Framed impls (#189) 2023-09-05 21:52:52 -04:00
fuzz build(client): update softbuffer dependency (#187) 2023-08-29 15:28:36 +00:00
web-client fix(web): detect errors when opening WebSocket (#173) 2023-08-11 17:04:08 -05:00
xtask ci(cov): use GITHUB_TOKEN instead of DEVOLUTIONSBOT_TOKEN (#179) 2023-08-24 09:56:12 -04:00
.gitignore chore(xtask): extend CLI options 2023-05-10 13:58:53 -04:00
ARCHITECTURE.md feat(rdpdr): Core Capability PDUs and refactoring ironrdp-rdpdr internals (#186) 2023-08-29 14:09:43 -04:00
Cargo.lock feat(rdpdr): Core Capability PDUs and refactoring ironrdp-rdpdr internals (#186) 2023-08-29 14:09:43 -04:00
Cargo.toml feat: CLIPRDR initialization sequence (#182) 2023-08-28 15:50:43 +00:00
LICENSE-APACHE ironrdp: initial commit 2019-07-10 17:31:26 -04:00
LICENSE-MIT ironrdp: initial commit 2019-07-10 17:31:26 -04:00
README.md docs: update list of supported codecs 2023-05-10 13:58:53 -04:00
rust-toolchain.toml chore: fix xtask for windows (#150) 2023-06-14 22:16:24 +00:00
rustfmt.toml style: run cargo fmt 2022-04-15 13:39:34 -04:00
typos.toml feat(pdu): pointer messages PDUs parsing support 2023-07-17 17:59:53 +03:00

IronRDP

A collection of Rust crates providing an implementation of the Microsoft Remote Desktop Protocol, with a focus on security.

Demonstration

https://user-images.githubusercontent.com/3809077/202049929-76f42471-aeb0-41da-9118-0dc6ea491bd2.mp4

Video Codec Support

Supported codecs:

  • Uncompressed raw bitmap
  • Interleaved Run-Length Encoding (RLE) Bitmap Codec
  • RDP 6.0 Bitmap Compression
  • Microsoft RemoteFX (RFX)

How to enable RemoteFX on server

Run the following PowerShell commands, and reboot.

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

Alternatively, you may change a few group policies using gpedit.msc:

  1. Run gpedit.msc.

  2. Enable Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/RemoteFX for Windows Server 2008 R2/Configure RemoteFX

  3. Enable Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Enable RemoteFX encoding for RemoteFX clients designed for Windows Server 2008 R2 SP1

  4. Enable Computer Configuration/Administrative Templates/Windows Components/Remote Desktop Services/Remote Desktop Session Host/Remote Session Environment/Limit maximum color depth

  5. Reboot.

Architecture

See the ARCHITECTURE.md document.