Rust implementation of the Microsoft Remote Desktop Protocol (RDP)
Find a file
Benoît Cortier 55d11a5000
refactor: clarify project architecture (#123)
> Make the root of the workspace a virtual manifest. It might
> be tempting to put the main crate into the root, but that
> pollutes the root with src/, requires passing --workspace to
> every Cargo command, and adds an exception to an otherwise
> consistent structure.

> Don’t succumb to the temptation to strip common prefix
> from folder names. If each crate is named exactly as the
> folder it lives in, navigation and renames become easier.
> Cargo.tomls of reverse dependencies mention both the folder
> and the crate name, it’s useful when they are exactly the
> same.

Source:
https://matklad.github.io/2021/08/22/large-rust-workspaces.html#Smaller-Tips
2023-05-09 21:00:07 +00:00
.cargo refactor: re-organize workspace (#101) 2023-03-29 19:09:15 -04:00
.github ci: use cargo xtask commands 2023-04-28 18:00:10 -04:00
crates refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +00:00
fuzz refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +00:00
web-client fix: run typos check (#120) 2023-05-09 15:18:51 +00:00
xtask Add support for RDP6 32bpp bitmaps (#118) 2023-05-08 09:43:53 -04:00
.gitignore refactor: re-organize workspace (#101) 2023-03-29 19:09:15 -04:00
ARCHITECTURE.md refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +00:00
Cargo.lock refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +00:00
Cargo.toml refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +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 refactor: clarify project architecture (#123) 2023-05-09 21:00:07 +00:00
rust-toolchain.toml refactor: re-organize workspace (#101) 2023-03-29 19:09:15 -04:00
rustfmt.toml style: run cargo fmt 2022-04-15 13:39:34 -04:00
typos.toml fix: run typos check (#120) 2023-05-09 15:18:51 +00: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
  • 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.