From 3ec110935b8986500e68ffff08434da70e7832d9 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Sat, 15 Jan 2022 18:16:25 +0100 Subject: [PATCH 01/25] Fix: Default -> default (fit other switchs in project) --- PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 876e363..67e4c3b 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -1496,7 +1496,8 @@ function Invoke-RemoteDesktopViewer ")" { $result = "{)}" } "[" { $result = "{[}" } "]" { $result = "{]}" } - Default { $result = $_ } + + default { $result = $_ } } Send-VirtualKeyboard -KeyChain $result From f35de134e2e80d2a657b1f0b1db177333a89762a Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Sat, 15 Jan 2022 18:27:22 +0100 Subject: [PATCH 02/25] Fix: password generation now always match password complexity rules --- .../PowerRemoteDesktop_Server.psm1 | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index dde06a9..e16fa5a 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -114,6 +114,26 @@ function Test-PasswordComplexity return ($PasswordCandidate -match $complexityRules) } +function New-RandomPassword +{ + <# + .SYNOPSIS + Generate a new secure password. + + .DESCRIPTION + Generate new password candidates until one candidate match complexity rules. + Generally only one iteration is enough but in some rare case it could be one or two more. + TODO: Better algorythm to avoid loop ? + #> + do + { + $candidate = -join ((48..57) + (64..90) + (37..38) + 33 + 35 + 42 + 94 + 95 + (97..122) | Get-Random -Count 18 | ForEach-Object{[char] $_}) + + } until (Test-PasswordComplexity -PasswordCandidate $candidate) + + return $candidate +} + function New-DefaultX509Certificate { <# @@ -1585,10 +1605,7 @@ function Invoke-RemoteDesktopServer if (-not $Password) { - $Password = ( - # a-Z, 0-9, !@#%^&*_ - -join ((48..57) + (64..90) + 35 + (37..38) + 33 + 42 + 94 + 95 + (97..122) | Get-Random -Count 18 | ForEach-Object{[char] $_}) - ) + $Password = New-RandomPassword Write-Host -NoNewLine "Server password: """ Write-Host -NoNewLine ${Password} -ForegroundColor green From e6fada0ae69958fa23f88d75c45c8076d35e630d Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Mon, 17 Jan 2022 14:10:06 +0100 Subject: [PATCH 03/25] Feat: remote global cursor synchronized with virtual desktop form + multiple global code improvements to support incoming events. --- .../PowerRemoteDesktop_Server.psm1 | 301 +++++++++++++++--- .../PowerRemoteDesktop_Viewer.psm1 | 262 ++++++++++----- 2 files changed, 441 insertions(+), 122 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index e16fa5a..2af5a9b 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -52,10 +52,15 @@ Add-Type -Assembly System.Windows.Forms Add-Type -Assembly System.Drawing -Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool SetProcessDPIAware();' -Name User32 -Namespace W; +Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool SetProcessDPIAware();[DllImport("User32.dll")] public static extern int LoadCursorA(int hInstance, int lpCursorName);[DllImport("User32.dll")] public static extern bool GetCursorInfo(IntPtr pci);' -Name User32 -Namespace W; $global:PowerRemoteDesktopVersion = "1.0.4.beta.5" +# Used for debugging purpose (For debugging runspaces) +$global:HostSyncHash = [HashTable]::Synchronized(@{ + host = $host +}) + enum TransportMode { Raw = 1 Base64 = 2 @@ -123,7 +128,7 @@ function New-RandomPassword .DESCRIPTION Generate new password candidates until one candidate match complexity rules. Generally only one iteration is enough but in some rare case it could be one or two more. - TODO: Better algorythm to avoid loop ? + TODO: Better algorithm to avoid loop ? #> do { @@ -654,17 +659,19 @@ class ClientIO { $false, $TLSVersion, $false - ) + ) if (-not $this.SSLStream.IsEncrypted) { throw "Could not established an encrypted tunnel with remote peer." } + $this.SSLStream.WriteTimeout = 5000 + Write-Verbose "Open communication channels..." $this.Writer = New-Object System.IO.StreamWriter($this.SSLStream) - $this.Writer.AutoFlush = $true + $this.Writer.AutoFlush = $true $this.Reader = New-Object System.IO.StreamReader($this.SSLStream) @@ -805,13 +812,21 @@ class ClientIO { } [string]RemoteAddress() { - <# - .SYNOPSIS - Returns the remote address of peer. - #> return $this.Client.Client.RemoteEndPoint.Address } + [int]RemotePort() { + return $this.Client.Client.RemoteEndPoint.Port + } + + [string]LocalAddress() { + return $this.Client.Client.LocalEndPoint.Address + } + + [int]LocalPort() { + return $this.Client.Client.LocalEndPoint.Port + } + [void]Close() { <# .SYNOPSIS @@ -992,7 +1007,7 @@ class ServerIO { $this.TransportMode ) try - { + { Write-Verbose "New client socket connected: ""$($client.RemoteAddress())"". Proceed password authentication..." # STEP 1 : Authentication @@ -1055,9 +1070,15 @@ $global:DesktopStreamScriptBlock = { This code is expected to be run inside a new PowerShell Runspace. - .PARAMETER syncHash.Param.Client + .PARAMETER Param.Client A ClientIO Object containing an active connection. This is where, desktop updates will be sent over network. + + .PARAMETER Param.ImageQuality + Desired desktop image compression level (0..100). + + .PARAMETER Param.Screen + An object destribing which screen (desktop monitor) to capture. #> function Get-DesktopImage { @@ -1113,9 +1134,9 @@ $global:DesktopStreamScriptBlock = { } $imageQuality = 100 - if ($syncHash.Param.ImageQuality -ge 0 -and $syncHash.Param.ImageQuality -lt 100) + if ($Param.ImageQuality -ge 0 -and $Param.ImageQuality -lt 100) { - $imageQuality = $syncHash.Param.ImageQuality + $imageQuality = $Param.ImageQuality } try { @@ -1132,7 +1153,7 @@ $global:DesktopStreamScriptBlock = { { try { - $desktopImage = Get-DesktopImage -Screen $syncHash.Param.Screen + $desktopImage = Get-DesktopImage -Screen $Param.Screen $imageStream = New-Object System.IO.MemoryStream @@ -1160,11 +1181,11 @@ $global:DesktopStreamScriptBlock = { $imageStream.position = 0 try { - switch ($syncHash.Param.Client.TransportMode) + switch ($Param.Client.TransportMode) { "Raw" { - $syncHash.Param.Client.SSLStream.Write([BitConverter]::GetBytes([int32] $imageStream.Length) , 0, 4) # SizeOf(Int32) + $Param.Client.SSLStream.Write([BitConverter]::GetBytes([int32] $imageStream.Length) , 0, 4) # SizeOf(Int32) $totalBytesSent = 0 @@ -1186,7 +1207,7 @@ $global:DesktopStreamScriptBlock = { # (OPTIMIZATION IDEA): Try with BinaryStream to save the need of "byte[]"" buffer. $null = $imageStream.Read($buffer, 0, $buffer.Length) - $syncHash.Param.Client.SSLStream.Write($buffer, 0, $buffer.Length) + $Param.Client.SSLStream.Write($buffer, 0, $buffer.Length) $totalBytesSent += $bufferSize } until ($totalBytesSent -eq $imageStream.Length) @@ -1196,7 +1217,7 @@ $global:DesktopStreamScriptBlock = { "Base64" { - $syncHash.Param.Client.Writer.WriteLine( + $Param.Client.Writer.WriteLine( [System.Convert]::ToBase64String($imageStream.ToArray()) ) @@ -1241,16 +1262,15 @@ $global:DesktopStreamScriptBlock = { } } -$global:InputControlScriptBlock = { +$global:IngressEventScriptBlock = { <# .SYNOPSIS Threaded code block to receive remote orders (Ex: Keyboard Strokes, Mouse Clicks, Moves etc...) This code is expected to be run inside a new PowerShell Runspace. - .PARAMETER syncHash.Client - A ClientIO Object containing an active connection. This is where, remote events will be - received and treated. + .PARAMETER Param.Client + A ClientIO Object with an established connection to remote peer. #> Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);[DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y);' -Name U32 -Namespace W; @@ -1325,19 +1345,20 @@ $global:InputControlScriptBlock = { { try { - $jsonCommand = $syncHash.Param.Client.Reader.ReadLine() + $jsonCommand = $Param.Reader.ReadLine() } catch { # ($_ | Out-File "c:\temp\debug.txt") break - } - - if (-not $jsonCommand) - { break } + } - $command = $jsonCommand | ConvertFrom-Json + try + { + $command = $jsonCommand | ConvertFrom-Json + } + catch { continue } if (-not ($command.PSobject.Properties.name -match "Id")) { continue } @@ -1430,6 +1451,183 @@ $global:InputControlScriptBlock = { } } +$global:EgressEventScriptBlock = { + <# + .SYNOPSIS + This script block is used to send events to remote peer. + + This code is expected to be run inside a new PowerShell Runspace. + + .DESCRIPTION + Supported Events: + - Global Mouse Cursor State + + Future Events to Support: + - Clipboard + - Receive File + #> + + enum CursorType { + IDC_APPSTARTING = 32650 + IDC_ARROW = 32512 + IDC_CROSS = 32515 + IDC_HAND = 32649 + IDC_HELP = 32651 + IDC_IBEAM = 32513 + IDC_ICON = 32641 + IDC_NO = 32648 + IDC_SIZE = 32640 + IDC_SIZEALL = 32646 + IDC_SIZENESW = 32643 + IDC_SIZENS = 32645 + IDC_SIZENWSE = 32642 + IDC_SIZEWE = 32644 + IDC_UPARROW = 32516 + IDC_WAIT = 32514 + } + + enum OutputCommand { + KeepAlive = 0x1 + MouseCursorUpdated = 0x2 + } + + function Initialize-Cursors + { + <# + .SYNOPSIS + Initialize different Windows supported mouse cursors. + + .DESCRIPTION + Unfortunately, there is not WinAPI to get current mouse cursor icon state (Ex: as a flag) + but only current mouse cursor icon (via its handle). + + One solution, is to resolve each supported mouse cursor handles (HCURSOR) with corresponding name + in a hashtable and then compare with GetCursorInfo() HCURSOR result. + #> + $cursors = @{} + + foreach ($cursorType in [CursorType].GetEnumValues()) { + $result = [W.User32]::LoadCursorA(0, [int]$cursorType) + + if ($result -gt 0) + { + $cursors[[string] $cursorType] = $result + } + } + + return $cursors + } + + function Get-GlobalMouseCursorIconHandle + { + <# + .SYNOPSIS + Return global mouse cursor handle. + .DESCRIPTION + For this project I really want to avoid using "inline c#" but only pure PowerShell Code. + I'm using a Hackish method to retrieve the global Windows cursor info by playing by hand + with memory to prepare and read CURSORINFO structure. + --- + typedef struct tagCURSORINFO { + DWORD cbSize; // Size: 0x4 + DWORD flags; // Size: 0x4 + HCURSOR hCursor; // Size: 0x4 (32bit) , 0x8 (64bit) + POINT ptScreenPos; // Size: 0x8 + } CURSORINFO, *PCURSORINFO, *LPCURSORINFO; + Total Size of Structure: + - [32bit] 20 Bytes + - [64bit] 24 Bytes + #> + + # sizeof(cbSize) + sizeof(flags) + sizeof(ptScreenPos) = 16 + $structSize = [IntPtr]::Size + 16 + + $cursorInfo = [System.Runtime.InteropServices.Marshal]::AllocHGlobal($structSize) + try + { + # ZeroMemory(@cursorInfo, SizeOf(tagCURSORINFO)) + for ($i = 0; $i -lt $structSize; $i++) + { + [System.Runtime.InteropServices.Marshal]::WriteByte($cursorInfo, $i, 0x0) + } + + [System.Runtime.InteropServices.Marshal]::WriteInt32($cursorInfo, 0x0, $structSize) + + if ([W.User32]::GetCursorInfo($cursorInfo)) + { + $hCursor = [System.Runtime.InteropServices.Marshal]::ReadInt64($cursorInfo, 0x8) + + return $hCursor + } + + <#for ($i = 0; $i -lt $structSize; $i++) + { + $offsetValue = [System.Runtime.InteropServices.Marshal]::ReadByte($cursorInfo, $i) + Write-Host "Offset: ${i} -> " -NoNewLine + Write-Host $offsetValue -ForegroundColor Green -NoNewLine + Write-Host ' (' -NoNewLine + Write-Host ('0x{0:x}' -f $offsetValue) -ForegroundColor Cyan -NoNewLine + Write-Host ')' + }#> + } + finally + { + [System.Runtime.InteropServices.Marshal]::FreeHGlobal($cursorInfo) + } + } + + $cursors = Initialize-Cursors + + $oldCursor = 0 + + $stopWatch = [System.Diagnostics.Stopwatch]::StartNew() + + while ($true) + { + # Keep-Alive (Detect Disconnected Socket) + if ($stopWatch.ElapsedMilliseconds -ge 1000) + { + $command = New-Object -TypeName PSCustomObject -Property @{ + Id = [OutputCommand]::KeepAlive + } + + try + { + $Param.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + } + catch + { break } + + $stopWatch.Restart() + } + + # Monitor for global mouse cursor change + $currentCursor = Get-GlobalMouseCursorIconHandle + if ($currentCursor -ne 0 -and $currentCursor -ne $oldCursor) + { + $cursorTypeName = ($cursors.GetEnumerator() | ? { $_.Value -eq $currentCursor }).Key + + $command = New-Object -TypeName PSCustomObject -Property @{ + Id = [OutputCommand]::MouseCursorUpdated + Cursor = $cursorTypeName + } + + try + { + $Param.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + } + catch + { break } + + $oldCursor = $currentCursor + } + + Start-Sleep -Milliseconds 30 + } + + $stopWatch.Stop() +} + function New-RunSpace { <# @@ -1457,20 +1655,18 @@ function New-RunSpace [PSCustomObject] $Param = $null ) - $syncHash = [HashTable]::Synchronized(@{}) - $syncHash.host = $host # For debugging purpose - - if ($Param) - { - $syncHash.Param = $Param - } - $runspace = [RunspaceFactory]::CreateRunspace() $runspace.ThreadOptions = "ReuseThread" $runspace.ApartmentState = "STA" $runspace.Open() - $runspace.SessionStateProxy.SetVariable("syncHash", $syncHash) + if ($Param) + { + $runspace.SessionStateProxy.SetVariable("Param", $Param) + } + + # Debug (Dev Only) + $runspace.SessionStateProxy.SetVariable("HostSyncHash", $global:HostSyncHash) $powershell = [PowerShell]::Create().AddScript($ScriptBlock) @@ -1664,7 +1860,7 @@ function Invoke-RemoteDesktopServer # Otherwise a Timeout Exception will be raised. # Actually, if someone else decide to connect in the mean time it will interrupt the whole session, # Remote Viewer will then need to establish a new session from scratch. - $clientControl = $server.PullClient(10 * 1000); + $clientEvents = $server.PullClient(10 * 1000); # Grab desired screen to capture $screen = [System.Windows.Forms.Screen]::AllScreens | Where-Object -FilterScript { $_.DeviceName -eq $server.Session.Screen } @@ -1678,20 +1874,33 @@ function Invoke-RemoteDesktopServer $newRunspace = (New-RunSpace -ScriptBlock $global:DesktopStreamScriptBlock -Param $param) $runspaces.Add($newRunspace) + + # Notice: In current PowerRemoteDesktop Protocol design, Client wont Read or Write simultaneously from different + # threads. Sockets allow to Read and Write at the same time but not Read or Write at the same + # time. - # Create Runspace #2 for Input Control. - $param = New-Object -TypeName PSCustomObject -Property @{ - Client = $clientControl + # If protocol change and require simultaneously Read or Write from different threads + # I will need to implement a synchronization mechanism to avoid conflicts like Synchronized Hashtables. + + # Create Runspace #2 for Incoming Events. + $param = New-Object -TypeName PSCustomObject -Property @{ + Reader = $clientEvents.Reader } - $newRunspace = (New-RunSpace -ScriptBlock $global:InputControlScriptBlock -Param $param) + $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) + $runspaces.Add($newRunspace) + + # Create Runspace #3 for Outgoing Events + $param = New-Object -TypeName PSCustomObject -Property @{ + Writer = $clientEvents.Writer + } + + $newRunspace = (New-RunSpace -ScriptBlock $global:EgressEventScriptBlock -Param $param) $runspaces.Add($newRunspace) # Waiting for Runspaces to finish their jobs. while ($true) - { - # TODO: Inspect TCP Table to probe for ghost connections and gracefully close them. - + { $completed = $true # Probe each existing runspaces @@ -1722,9 +1931,9 @@ function Invoke-RemoteDesktopServer $server.CloseSession() - if ($clientControl) + if ($clientEvents) { - $clientControl.Close() + $clientEvents.Close() } if ($clientDesktop) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 67e4c3b..a26ebc7 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -55,6 +55,11 @@ Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool $global:PowerRemoteDesktopVersion = "1.0.4.beta.5" +# Used for debugging purpose (For debugging runspaces) +$global:HostSyncHash = [HashTable]::Synchronized(@{ + host = $host +}) + # Last until PowerShell session is closed $global:EphemeralTrustedServers = @() @@ -349,22 +354,22 @@ $global:VirtualDesktopUpdaterScriptBlock = { This code is expected to be run inside a new PowerShell Runspace. - .PARAMETER syncHash.Client + .PARAMETER Param.Client A ClientIO Class instance for handling desktop updates. - .PARAMETER syncHash.Param.RequireResize + .PARAMETER Param.RequireResize Tell if desktop image needs to be resized to fit viewer screen constrainsts. - .PARAMETER syncHash.Param.VirtualDesktopWidth + .PARAMETER Param.VirtualDesktopWidth The integer value representing remote screen width. - .PARAMETER syncHash.Param.VirtualDesktopHeight + .PARAMETER Param.VirtualDesktopHeight The integer value representing remote screen height. - .PARAMETER syncHash.Param.VirtualDesktopForm - Virtual Desktop Object containing both Form and PaintBox. + .PARAMETER Param.SyncHash + Synchronized Hashtable containing objects to "safe-thread" - .PARAMETER syncHash.Param.TransportMode + .PARAMETER Param.TransportMode Define desktop image transport mode: Raw or Base64. This value is defined by server following its options. #> @@ -440,13 +445,13 @@ $global:VirtualDesktopUpdaterScriptBlock = { $stream = New-Object System.IO.MemoryStream try { - switch ([TransportMode] $syncHash.Param.TransportMode) + switch ([TransportMode] $Param.TransportMode) { "Raw" { $buffer = New-Object -TypeName byte[] -ArgumentList 4 # SizeOf(Int32) - $syncHash.Client.SSLStream.Read($buffer, 0, $buffer.Length) + $Param.Client.SSLStream.Read($buffer, 0, $buffer.Length) [int32] $totalBufferSize = [BitConverter]::ToInt32($buffer, 0) @@ -471,7 +476,7 @@ $global:VirtualDesktopUpdaterScriptBlock = { $buffer = New-Object -TypeName byte[] -ArgumentList $bufferSize } - $syncHash.Client.SSLStream.Read($buffer, 0, $bufferSize) + $Param.Client.SSLStream.Read($buffer, 0, $bufferSize) $null = $stream.Write($buffer, 0, $buffer.Length) @@ -481,7 +486,7 @@ $global:VirtualDesktopUpdaterScriptBlock = { "Base64" { - [byte[]] $buffer = [System.Convert]::FromBase64String(($syncHash.Client.Reader.ReadLine())) + [byte[]] $buffer = [System.Convert]::FromBase64String(($Param.Client.Reader.ReadLine())) $stream.Write($buffer, 0, $buffer.Length) } @@ -489,22 +494,21 @@ $global:VirtualDesktopUpdaterScriptBlock = { $stream.Position = 0 - if ($syncHash.Param.RequireResize) + if ($Param.RequireResize) { - #$image = [System.Drawing.Image]::FromStream($stream) + #$image = [System.Drawing.Image]::FromStream($stream) - $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream + $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream - $syncHash.Param.VirtualDesktopForm.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $syncHash.Param.VirtualDesktopWidth -NewHeight $syncHash.Param.VirtualDesktopHeight + $Param.SyncHash.VirtualDesktop.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $Param.VirtualDesktopWidth -NewHeight $Param.VirtualDesktopHeight } else { - $syncHash.Param.VirtualDesktopForm.Picture.Image = [System.Drawing.Image]::FromStream($stream) + $Param.SyncHash.VirtualDesktop.Picture.Image = [System.Drawing.Image]::FromStream($stream) } } catch - { - $syncHash.Param.host.UI.WriteLine($_) + { break } finally @@ -515,11 +519,108 @@ $global:VirtualDesktopUpdaterScriptBlock = { } } finally - { - $syncHash.Param.VirtualDesktopForm.Form.Close() + { + $Param.SyncHash.VirtualDesktop.Form.Close() } } +$global:IngressEventScriptBlock = { + <# + .SYNOPSIS + Threaded code block to receive remote events. + + This code is expected to be run inside a new PowerShell Runspace. + + .PARAMETER Param.Client + A ClientIO Object with an established connection to remote server. + #> + + enum CursorType { + IDC_APPSTARTING + IDC_ARROW + IDC_CROSS + IDC_HAND + IDC_HELP + IDC_IBEAM + IDC_ICON + IDC_NO + IDC_SIZE + IDC_SIZEALL + IDC_SIZENESW + IDC_SIZENS + IDC_SIZENWSE + IDC_SIZEWE + IDC_UPARROW + IDC_WAIT + } + + enum OutputCommand { + KeepAlive = 0x1 + MouseCursorUpdated = 0x2 + } + + while ($true) + { + try + { + $jsonCommand = $Param.Client.Reader.ReadLine() + } + catch + { break } + + try + { + $command = $jsonCommand | ConvertFrom-Json + } + catch + { continue } + + if (-not ($command.PSobject.Properties.name -match "Id")) + { continue } + + switch ([OutputCommand] $command.Id) + { + # Remote Global Mouse Cursor State Changed (Icon) + "MouseCursorUpdated" + { + if (-not ($command.PSobject.Properties.name -match "Cursor")) + { continue } + + $cursor = [System.Windows.Forms.Cursors]::Arrow + + switch ([CursorType] $command.Cursor) + { + "IDC_APPSTARTING" { $cursor = [System.Windows.Forms.Cursors]::AppStarting } + "IDC_CROSS" { $cursor = [System.Windows.Forms.Cursors]::Cross } + "IDC_HAND" { $cursor = [System.Windows.Forms.Cursors]::Hand } + "IDC_HELP" { $cursor = [System.Windows.Forms.Cursors]::Help } + "IDC_IBEAM" { $cursor = [System.Windows.Forms.Cursors]::IBeam } + "IDC_NO" { $cursor = [System.Windows.Forms.Cursors]::No } + "IDC_SIZENESW" { $cursor = [System.Windows.Forms.Cursors]::SizeNESW } + "IDC_SIZENS" { $cursor = [System.Windows.Forms.Cursors]::SizeNS } + "IDC_SIZENWSE" { $cursor = [System.Windows.Forms.Cursors]::SizeNWSE } + "IDC_SIZEWE" { $cursor = [System.Windows.Forms.Cursors]::SizeWE } + "IDC_UPARROW" { $cursor = [System.Windows.Forms.Cursors]::UpArrow } + "IDC_WAIT" { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } + + {($_ -eq "IDC_SIZE") -or ($_ -eq "IDC_SIZEALL")} + { + $cursor = [System.Windows.Forms.Cursors]::SizeAll + } + } + + try + { + $Param.SyncHash.VirtualDesktop.Picture.Cursor = $cursor + } + catch { } + + break + } + } + } +} + class ClientIO { <# .SYNOPSIS @@ -688,6 +789,8 @@ class ClientIO { throw "Could not establish a secure communication channel with remote server." } + $this.SSLStream.WriteTimeout = 5000 + $this.Writer = New-Object System.IO.StreamWriter($this.SSLStream) $this.Writer.AutoFlush = $true @@ -923,7 +1026,7 @@ class ViewerSession [bool] $TLSv1_3 = $false [ClientIO] $ClientDesktop = $null - [ClientIO] $ClientControl = $null + [ClientIO] $ClientEvents = $null ViewerSession( [string] $ServerAddress, @@ -1001,12 +1104,12 @@ class ViewerSession Write-Verbose "Open secondary tunnel for input control..." - $this.ClientControl = [ClientIO]::new($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) - $this.ClientControl.Connect() + $this.ClientEvents = [ClientIO]::new($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) + $this.ClientEvents.Connect() - $this.ClientControl.Authentify($this.SecurePassword) + $this.ClientEvents.Authentify($this.SecurePassword) - $this.ClientControl.Hello($this.SessionInformation.SessionId) + $this.ClientEvents.Hello($this.SessionInformation.SessionId) Write-Verbose "New session successfully established with remote server." Write-Verbose "Session Id: $($this.SessionInformation.SessionId)" @@ -1033,13 +1136,13 @@ class ViewerSession $this.ClientDesktop.Close() } - if ($this.ClientControl) + if ($this.ClientEvents) { - $this.ClientControl.Close() + $this.ClientEvents.Close() } $this.ClientDesktop = $null - $this.ClientControl = $null + $this.ClientEvents = $null $this.SessionInformation = $null @@ -1109,9 +1212,6 @@ function New-RunSpace Notice: the $host variable is used for debugging purpose to write on caller PowerShell Terminal. - .PARAMETER Client - A ClientIO object containing an active connection with a remote server. - .PARAMETER ScriptBlock A PowerShell block of code to be evaluated on the new Runspace. @@ -1123,30 +1223,24 @@ function New-RunSpace #> param( - [Parameter(Mandatory=$True)] - [ClientIO] $Client, - [Parameter(Mandatory=$True)] [ScriptBlock] $ScriptBlock, [PSCustomObject] $Param = $null ) - $syncHash = [HashTable]::Synchronized(@{}) - $syncHash.Client = $Client - $syncHash.host = $host # For debugging purpose - - if ($Param) - { - $syncHash.Param = $Param - } - $runspace = [RunspaceFactory]::CreateRunspace() $runspace.ThreadOptions = "ReuseThread" $runspace.ApartmentState = "STA" $runspace.Open() - $runspace.SessionStateProxy.SetVariable("syncHash", $syncHash) + if ($Param) + { + $runspace.SessionStateProxy.SetVariable("Param", $Param) + } + + # Debug (Dev Only) + $runspace.SessionStateProxy.SetVariable("HostSyncHash", $global:HostSyncHash) $powershell = [PowerShell]::Create().AddScript($ScriptBlock) @@ -1214,6 +1308,8 @@ function Invoke-RemoteDesktopViewer [switch] $DisableVerbosity ) + [System.Collections.Generic.List[PSCustomObject]]$runspaces = @() + $oldErrorActionPreference = $ErrorActionPreference $oldVerbosePreference = $VerbosePreference try @@ -1256,9 +1352,11 @@ function Invoke-RemoteDesktopViewer Write-Verbose "Create WinForms Environment..." - $virtualDesktopForm = New-VirtualDesktopForm + $syncHash = [HashTable]::Synchronized(@{ + VirtualDesktop = New-VirtualDesktopForm + }) - $virtualDesktopForm.Form.Text = [string]::Format( + $syncHash.VirtualDesktop.Form.Text = [string]::Format( "Power Remote Desktop: {0}/{1} - {2}", $session.SessionInformation.Username, $session.SessionInformation.MachineName, @@ -1268,8 +1366,8 @@ function Invoke-RemoteDesktopViewer # Prepare Virtual Desktop $locationResolutionInformation = [System.Windows.Forms.Screen]::PrimaryScreen - $screenRect = $virtualDesktopForm.Form.RectangleToScreen($virtualDesktopForm.Form.ClientRectangle) - $captionHeight = $screenRect.Top - $virtualDesktopForm.Form.Top + $screenRect = $syncHash.VirtualDesktop.Form.RectangleToScreen($syncHash.VirtualDesktop.Form.ClientRectangle) + $captionHeight = $screenRect.Top - $syncHash.VirtualDesktop.Form.Top $localScreenWidth = $locationResolutionInformation.WorkingArea.Width $localScreenHeight = $locationResolutionInformation.WorkingArea.Height @@ -1313,12 +1411,12 @@ function Invoke-RemoteDesktopViewer } # Size Virtual Desktop Form Window - $virtualDesktopForm.Form.ClientSize = [System.Drawing.Size]::new($virtualDesktopWidth, $virtualDesktopHeight) + $syncHash.VirtualDesktop.Form.ClientSize = [System.Drawing.Size]::new($virtualDesktopWidth, $virtualDesktopHeight) # Center Virtual Desktop Form - $virtualDesktopForm.Form.Location = [System.Drawing.Point]::new( - (($localScreenWidth - $virtualDesktopForm.Form.Width) / 2), - (($localScreenHeight - $virtualDesktopForm.Form.Height) / 2) + $syncHash.VirtualDesktop.Form.Location = [System.Drawing.Point]::new( + (($localScreenWidth - $syncHash.VirtualDesktop.Form.Width) / 2), + (($localScreenHeight - $syncHash.VirtualDesktop.Form.Height) / 2) ) # WinForms Events (If enabled, I recommend to disable control when testing on local machine to avoid funny things) @@ -1390,9 +1488,6 @@ function Invoke-RemoteDesktopViewer .PARAMETER Keys Plain text keys to be simulated on remote computer. - .TODO - Supports more complex keys (ARROWS ETC...) - .EXAMPLE New-KeyboardCommand -Keys "Hello, World" New-KeyboardCommand -Keys "t" @@ -1454,7 +1549,7 @@ function Invoke-RemoteDesktopViewer $command = (New-MouseCommand -X $X -Y $Y -Button $Button -Type $Type) - $session.ClientControl.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) } function Send-VirtualKeyboard @@ -1477,10 +1572,10 @@ function Invoke-RemoteDesktopViewer $command = (New-KeyboardCommand -Keys $KeyChain) - $session.ClientControl.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) } - $virtualDesktopForm.Form.Add_KeyPress( + $syncHash.VirtualDesktop.Form.Add_KeyPress( { if ($_.KeyChar) { @@ -1505,7 +1600,7 @@ function Invoke-RemoteDesktopViewer } ) - $virtualDesktopForm.Form.Add_KeyDown( + $syncHash.VirtualDesktop.Form.Add_KeyDown( { $result = "" switch ($_.KeyValue) @@ -1554,32 +1649,32 @@ function Invoke-RemoteDesktopViewer } ) - $virtualDesktopForm.Picture.Add_MouseDown( + $syncHash.VirtualDesktop.Picture.Add_MouseDown( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Down" } ) - $virtualDesktopForm.Picture.Add_MouseUp( + $syncHash.VirtualDesktop.Picture.Add_MouseUp( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Up" } ) - $virtualDesktopForm.Picture.Add_MouseMove( + $syncHash.VirtualDesktop.Picture.Add_MouseMove( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Move" } ) - $virtualDesktopForm.Picture.Add_MouseWheel( + $syncHash.VirtualDesktop.Picture.Add_MouseWheel( { $command = New-Object PSCustomObject -Property @{ Id = [int][InputCommand]::MouseWheel Delta = $_.Delta } - $session.ClientControl.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) } ) } @@ -1587,18 +1682,30 @@ function Invoke-RemoteDesktopViewer Write-Verbose "Create runspace for desktop streaming..." $param = New-Object -TypeName PSCustomObject -Property @{ - VirtualDesktopForm = $virtualDesktopForm + Client = $session.ClientDesktop + SyncHash = $syncHash VirtualDesktopWidth = $virtualDesktopWidth VirtualDesktopHeight = $virtualDesktopHeight RequireResize = $requireResize - TransportMode = $session.SessionInformation.TransportMode + TransportMode = $session.SessionInformation.TransportMode } - $newRunspace = (New-RunSpace -Client $session.ClientDesktop -ScriptBlock $global:VirtualDesktopUpdaterScriptBlock -Param $param) + $newRunspace = (New-RunSpace -ScriptBlock $global:VirtualDesktopUpdaterScriptBlock -Param $param) + $runspaces.Add($newRunspace) + + Write-Verbose "Create runspace for incoming events..." + + $param = New-Object -TypeName PSCustomObject -Property @{ + Client = $session.ClientEvents + SyncHash = $syncHash + } + + $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) + $runspaces.Add($newRunspace) Write-Verbose "Done. Showing Virtual Desktop Form." - $null = $virtualDesktopForm.Form.ShowDialog() + $null = $syncHash.VirtualDesktop.Form.ShowDialog() } finally { @@ -1611,16 +1718,19 @@ function Invoke-RemoteDesktopViewer $session = $null } - if ($newRunspace) - { - $null = $newRunspace.PowerShell.EndInvoke($newRunspace.AsyncResult) - $newRunspace.PowerShell.Runspace.Dispose() - $newRunspace.PowerShell.Dispose() - } + Write-Verbose "Free runspaces..." + + foreach ($runspace in $runspaces) + { + $null = $runspace.PowerShell.EndInvoke($runspace.AsyncResult) + $runspace.PowerShell.Runspace.Dispose() + $runspace.PowerShell.Dispose() + } + $runspaces.Clear() - if ($param.VirtualDesktopForm) + if ($syncHash.VirtualDesktop) { - $param.VirtualDesktopForm.Form.Dispose() + $syncHash.VirtualDesktop.Form.Dispose() } } } From ea4ed0da37d621cf4f55985a999fcc3b09e6cd9c Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Mon, 17 Jan 2022 14:16:53 +0100 Subject: [PATCH 04/25] Readme updated --- README.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 29978f5..7faaf9c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ It doesn't rely on any existing Remote Desktop Application or Protocol to function. A serious advantage of this application is its nature (PowerShell) and its ease of use and installation. -This project demonstrate why PowerShell contains the word *Power*. It is unfortunately often an underestimated programming language that is not only resumed to running commands or being a more fancy replacement to the old Windows Terminal (cmd). +This project demonstrate why PowerShell contains the word *Power*. It is unfortunately often an underestimated programming language that is not only resumed to running commands or being a more fancy replacement to the old Windows command-line interpreter (cmd). Tested on: @@ -275,6 +275,13 @@ Detail Fingerprint * Possibility to trust a server for current PowerShell Instance or persistantly using a local storage. * Possibility to manage trusted servers (List, Remove, Remove All) +### XX January 2022 (1.0.5 Beta 6) + +* Multiple code improvements to support incoming / outgoing events. +* Global cursor state synchronization implemented (Now virtual desktop mouse cursor is the same as remote server). +* Password Generator algorithm fixed. +* Virtual keyboard `]` and `)` correctly sent and interpreted. + #### Fingerprint Validation ![Server Fingerprint Validation](Assets/server-fingerprint-validation.png) @@ -282,10 +289,8 @@ Detail Fingerprint ### List of ideas and TODO * 🟢 Support Password Protected external Certificates. -* 🟢 Mutual Authentication for SSL/TLS (Client Certificate). -* 🟢 Synchronize Cursor State. +* 🟢 Mutual Authentication for SSL/TLS (Client Certificate). * 🟢 Synchronize Clipboard. -* 🟠 Keep-Alive system to implement Read / Write Timeout. * 🟠 Listen for local/remote screen resolution update event. * 🔴 Motion Update for Desktop Streaming (Only send and update changing parts of desktop). From a6c8cfb3e0cd5065d9c052886090e48e34a187e2 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Mon, 17 Jan 2022 18:27:58 +0100 Subject: [PATCH 05/25] Feat: clipboard synchronization added Server -> Viewer --- .../PowerRemoteDesktop_Server.psm1 | 104 ++++++++++++++---- .../PowerRemoteDesktop_Viewer.psm1 | 18 ++- 2 files changed, 99 insertions(+), 23 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 2af5a9b..d794ee3 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -1488,7 +1488,8 @@ $global:EgressEventScriptBlock = { enum OutputCommand { KeepAlive = 0x1 - MouseCursorUpdated = 0x2 + MouseCursorUpdated = 0x2 + ClipboardUpdated = 0x3 } function Initialize-Cursors @@ -1576,51 +1577,116 @@ $global:EgressEventScriptBlock = { } } + function Send-Event + { + <# + .SYNOPSIS + Send an event to remote peer. + + .PARAMETER command + A supported command id representing the kind of event. + + .PARAMETER data + An optional object containing additional information about the event. + #> + param ( + [Parameter(Mandatory=$True)] + [OutputCommand] $Command, + + [PSCustomObject] $Data = $null + ) + + try + { + if (-not $Data) + { + $Data = New-Object -TypeName PSCustomObject -Property @{ + Id = $Command + } + } + else + { + $Data | Add-Member -MemberType NoteProperty -Name "Id" -Value $Command + } + + $Param.Writer.WriteLine(($Data | ConvertTo-Json -Compress)) + + return $true + } + catch + { + return $false + } + } + $cursors = Initialize-Cursors $oldCursor = 0 + $oldClipboard = Get-Clipboard $stopWatch = [System.Diagnostics.Stopwatch]::StartNew() while ($true) { - # Keep-Alive (Detect Disconnected Socket) + # Events that occurs every seconds needs to be placed bellow. + # If no event has occured during this second we send a Keep-Alive signal to + # remote peer and detect a potential socket disconnection. if ($stopWatch.ElapsedMilliseconds -ge 1000) { - $command = New-Object -TypeName PSCustomObject -Property @{ - Id = [OutputCommand]::KeepAlive - } + try + { + $eventTriggered = $false + + # IDEA: Check for existing clipboard change event or implement a custom clipboard + # change detector using "WM_CLIPBOARDUPDATE" for example. + # It is not very important but it would avoid calling "Get-Clipboard" every seconds. + $currentClipboard = Get-Clipboard + + if ($currentClipboard -and $currentClipboard -cne $oldClipboard) + { + $HostSyncHash.Host.UI.WriteLine("1") + $data = New-Object -TypeName PSCustomObject -Property @{ + Text = $currentClipboard + } + + if (-not (Send-Event -Command "ClipboardUpdated" -Data $data)) + { break } - try + $oldClipboard = $currentClipboard + + $eventTriggered = $true + $HostSyncHash.Host.UI.WriteLine("2") + } + + # Send a Keep-Alive if during this second iteration nothing happened. + if (-not $eventTriggered) + { + if (-not (Send-Event -Command "KeepAlive")) + { break } + } + } + finally { - $Param.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $stopWatch.Restart() } - catch - { break } - - $stopWatch.Restart() } # Monitor for global mouse cursor change + # Update Frequently (Maximum probe time to be efficient: 30ms) $currentCursor = Get-GlobalMouseCursorIconHandle if ($currentCursor -ne 0 -and $currentCursor -ne $oldCursor) { $cursorTypeName = ($cursors.GetEnumerator() | ? { $_.Value -eq $currentCursor }).Key - $command = New-Object -TypeName PSCustomObject -Property @{ - Id = [OutputCommand]::MouseCursorUpdated + $data = New-Object -TypeName PSCustomObject -Property @{ Cursor = $cursorTypeName } - try - { - $Param.Writer.WriteLine(($command | ConvertTo-Json -Compress)) - } - catch + if (-not (Send-Event -Command "MouseCursorUpdated" -Data $data)) { break } $oldCursor = $currentCursor - } + } Start-Sleep -Milliseconds 30 } diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index a26ebc7..e272065 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -556,9 +556,10 @@ $global:IngressEventScriptBlock = { enum OutputCommand { KeepAlive = 0x1 - MouseCursorUpdated = 0x2 - } - + MouseCursorUpdated = 0x2 + ClipboardUpdated = 0x3 + } + while ($true) { try @@ -613,10 +614,19 @@ $global:IngressEventScriptBlock = { { $Param.SyncHash.VirtualDesktop.Picture.Cursor = $cursor } - catch { } + catch + {} break } + + "ClipboardUpdated" + { + if (-not ($command.PSobject.Properties.name -match "Text")) + { continue } + + Set-Clipboard -Value $command.Text + } } } } From 008f0ff61dca396516b456d0547c6e888182e538 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Mon, 17 Jan 2022 18:48:11 +0100 Subject: [PATCH 06/25] Fix: random string algorithm improved and simplified --- PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index d794ee3..b79be34 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -132,7 +132,8 @@ function New-RandomPassword #> do { - $candidate = -join ((48..57) + (64..90) + (37..38) + 33 + 35 + 42 + 94 + 95 + (97..122) | Get-Random -Count 18 | ForEach-Object{[char] $_}) + $authorizedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#%^&*_" + $candidate = -join ((1..18) | ForEach-Object { Get-Random -Input $authorizedChars.ToCharArray() }) } until (Test-PasswordComplexity -PasswordCandidate $candidate) @@ -585,7 +586,7 @@ class ServerSession { network. #> - $this.Id = (SHA512FromString -String (-join ((33..126) | Get-Random -Count 128 | ForEach-Object{[char] $_}))) + $this.Id = (SHA512FromString -String (-join ((1..128) | ForEach-Object {Get-Random -input ([char[]](33..126))}))) $this.TiedAddress = $RemoteAddress } @@ -697,7 +698,7 @@ class ClientIO { Write-Verbose "New authentication challenge..." - $candidate = (-join ((33..126) | Get-Random -Count 128 | ForEach-Object{[char] $_})) + $candidate = -join ((1..128) | ForEach-Object {Get-Random -input ([char[]](33..126))}) $candidate = Get-SHA512FromString -String $candidate $challengeSolution = Resolve-AuthenticationChallenge -Candidate $candidate -Password $Password From 4b16000ec3b91bb199919926094e7290bc3260c3 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 09:51:26 +0100 Subject: [PATCH 07/25] Feat: Server clipboard option added. --- .../PowerRemoteDesktop_Server.psm1 | 46 ++++++++++++------- .../PowerRemoteDesktop_Viewer.psm1 | 2 +- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index b79be34..519e937 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -1623,7 +1623,11 @@ $global:EgressEventScriptBlock = { $cursors = Initialize-Cursors $oldCursor = 0 - $oldClipboard = Get-Clipboard + + if ($Param.SynchronizeClipboard) + { + $oldClipboard = Get-Clipboard + } $stopWatch = [System.Diagnostics.Stopwatch]::StartNew() @@ -1638,25 +1642,26 @@ $global:EgressEventScriptBlock = { { $eventTriggered = $false - # IDEA: Check for existing clipboard change event or implement a custom clipboard - # change detector using "WM_CLIPBOARDUPDATE" for example. - # It is not very important but it would avoid calling "Get-Clipboard" every seconds. - $currentClipboard = Get-Clipboard - - if ($currentClipboard -and $currentClipboard -cne $oldClipboard) + if ($Param.SynchronizeClipboard) { - $HostSyncHash.Host.UI.WriteLine("1") - $data = New-Object -TypeName PSCustomObject -Property @{ - Text = $currentClipboard - } + # IDEA: Check for existing clipboard change event or implement a custom clipboard + # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) + # It is not very important but it would avoid calling "Get-Clipboard" every seconds. + $currentClipboard = Get-Clipboard - if (-not (Send-Event -Command "ClipboardUpdated" -Data $data)) - { break } + if ($currentClipboard -and $currentClipboard -cne $oldClipboard) + { + $data = New-Object -TypeName PSCustomObject -Property @{ + Text = $currentClipboard + } - $oldClipboard = $currentClipboard + if (-not (Send-Event -Command "ClipboardUpdated" -Data $data)) + { break } - $eventTriggered = $true - $HostSyncHash.Host.UI.WriteLine("2") + $oldClipboard = $currentClipboard + + $eventTriggered = $true + } } # Send a Keep-Alive if during this second iteration nothing happened. @@ -1807,6 +1812,10 @@ function Invoke-RemoteDesktopServer JPEG Compression level from 0 to 100 0 = Lowest quality. 100 = Highest quality. + + .PARAMETER DisableClipboard + This option disable Clipboard synchronization with remote peer. By default Clipboard synchronization + is enabled and will synchronize only if both Viewer and Server have Clipboard synchronization enabled. #> param ( @@ -1823,7 +1832,9 @@ function Invoke-RemoteDesktopServer [switch] $DisableVerbosity, - [int] $ImageQuality = 100 + [int] $ImageQuality = 100, + + [switch] $DisableClipboard ) @@ -1960,6 +1971,7 @@ function Invoke-RemoteDesktopServer # Create Runspace #3 for Outgoing Events $param = New-Object -TypeName PSCustomObject -Property @{ Writer = $clientEvents.Writer + SynchronizeClipboard = -not $DisableClipboard } $newRunspace = (New-RunSpace -ScriptBlock $global:EgressEventScriptBlock -Param $param) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index e272065..133098e 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -831,7 +831,7 @@ class ClientIO { Write-Verbose "Candidate: ""${candidate}""" Write-Verbose "Solution: ""${challengeSolution}""" Write-Verbose "---" - + $this.Writer.WriteLine($challengeSolution) $result = $this.Reader.ReadLine() From c0507b1623bfe043bf34e376e842e963922619c7 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 09:53:23 +0100 Subject: [PATCH 08/25] Fix: code refactoring. --- .../PowerRemoteDesktop_Viewer.psm1 | 1040 ++++++++--------- 1 file changed, 520 insertions(+), 520 deletions(-) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 133098e..e9e5230 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -347,472 +347,188 @@ function Resolve-AuthenticationChallenge } } -$global:VirtualDesktopUpdaterScriptBlock = { +class ClientIO { <# .SYNOPSIS - Threaded code block to receive updates of remote desktop and update Virtual Desktop Form. - - This code is expected to be run inside a new PowerShell Runspace. + Extended version of TcpClient that automatically creates and releases + required streams with other useful methods. - .PARAMETER Param.Client - A ClientIO Class instance for handling desktop updates. + Supports SSL/TLS. + #> - .PARAMETER Param.RequireResize - Tell if desktop image needs to be resized to fit viewer screen constrainsts. + [string] $RemoteAddress + [int] $RemotePort + [bool] $TLSv1_3 - .PARAMETER Param.VirtualDesktopWidth - The integer value representing remote screen width. + [System.Net.Sockets.TcpClient] $Client = $null + [System.Net.Security.SslStream] $SSLStream = $null + [System.IO.StreamWriter] $Writer = $null + [System.IO.StreamReader] $Reader = $null - .PARAMETER Param.VirtualDesktopHeight - The integer value representing remote screen height. + ClientIO( + <# + .SYNOPSIS + Class constructor. - .PARAMETER Param.SyncHash - Synchronized Hashtable containing objects to "safe-thread" + .PARAMETER RemoteAddress + IP/HOST of remote server. - .PARAMETER Param.TransportMode - Define desktop image transport mode: Raw or Base64. This value is defined by server following - its options. - #> + .PARAMETER RemotePort + Remote server port. - enum TransportMode { - Raw = 1 - Base64 = 2 + .PARAMETER TLSv1_3 + Define whether or not SSL/TLS v1.3 must be used. + #> + [string] $RemoteAddress = "127.0.0.1", + [int] $RemotePort = 2801, + [bool] $TLSv1_3 = $false + ) { + $this.RemoteAddress = $RemoteAddress + $this.RemotePort = $RemotePort + $this.TLSv1_3 = $TLSv1_3 } - function Invoke-SmoothResize - { + [void]Connect() { <# .SYNOPSIS - Output a resized version of input bitmap. The resize quality is quite fair. - - .PARAMETER OriginalImage - Input bitmap to resize. + Open a new connection to remote server. + Create required streams and open a new secure connection with peer. + #> + Write-Verbose "Connect: ""$($this.RemoteAddress):$($this.RemotePort)...""" - .PARAMETER NewWidth - Define the width of new bitmap version. + $this.Client = New-Object System.Net.Sockets.TcpClient($this.RemoteAddress, $this.RemotePort) - .PARAMETER NewHeight - Define the height of new bitmap version. + Write-Verbose "Connected." - .EXAMPLE - Invoke-SmoothResize -OriginalImage $myImage -NewWidth 1920 -NewHeight 1024 - #> - param ( - [Parameter(Mandatory=$true)] - [System.Drawing.Bitmap] $OriginalImage, + if ($this.TLSv1_3) + { + $TLSVersion = [System.Security.Authentication.SslProtocols]::TLS13 + } + else { + $TLSVersion = [System.Security.Authentication.SslProtocols]::TLS12 + } - [Parameter(Mandatory=$true)] - [int] $NewWidth, + Write-Verbose "Establish an encrypted tunnel using: ${TLSVersion}..." - [Parameter(Mandatory=$true)] - [int] $NewHeight - ) - try - { - $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $NewWidth, $NewHeight + $this.SSLStream = New-object System.Net.Security.SslStream( + $this.Client.GetStream(), + $false, + { + param( + $Sendr, + $Certificate, + $Chain, + $Policy + ) - $resizedImage = [System.Drawing.Graphics]::FromImage($bitmap) + if ( + (Test-ServerFingerprintFromLocalStorage -Fingerprint $Certificate.Thumbprint) -or + $global:EphemeralTrustedServers -contains $Certificate.Thumbprint + ) + { + Write-Verbose "Fingerprint already known and trusted: ""$($Certificate.Thumbprint)""" - $resizedImage.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality - $resizedImage.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality - $resizedImage.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic - $resizedImage.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality - - $resizedImage.DrawImage($OriginalImage, 0, 0, $bitmap.Width, $bitmap.Height) + return $true + } + else + { + Write-Verbose "@Remote Server Certificate:" + Write-Verbose $Certificate + Write-Verbose "---" - return $bitmap - } - finally - { - if ($OriginalImage) - { - $OriginalImage.Dispose() - } + Write-Host "Untrusted Server Certificate Fingerprint: """ -NoNewLine + Write-Host $Certificate.Thumbprint -NoNewline -ForegroundColor Green + Write-Host """" - if ($resizedImage) - { - $resizedImage.Dispose() - } - } - } + while ($true) + { + Write-Host "`r`nDo you want to trust current server ?" + $choice = Read-Host "[A] Always [Y] Yes [N] No [?] Help (Default is ""N"")" + if (-not $choice) + { + $choice = "N" + } - try - { - $packetSize = 4096 + switch ($choice) + { + "?" + { + Write-Host "" - while ($true) - { - $stream = New-Object System.IO.MemoryStream - try - { - switch ([TransportMode] $Param.TransportMode) - { - "Raw" - { - $buffer = New-Object -TypeName byte[] -ArgumentList 4 # SizeOf(Int32) + Write-Host "[" -NoNewLine + Write-Host "A" -NoNewLine -ForegroundColor Cyan + Write-Host "] Always trust current server (Persistent between PowerShell Instances)" - $Param.Client.SSLStream.Read($buffer, 0, $buffer.Length) + Write-Host "[" -NoNewLine + Write-Host "Y" -NoNewLine -ForegroundColor Cyan + Write-Host "] Trust current server during current PowerShell Instance lifetime (Temporary)." - [int32] $totalBufferSize = [BitConverter]::ToInt32($buffer, 0) + Write-Host "[" -NoNewLine + Write-Host "N" -NoNewLine -ForegroundColor Cyan + Write-Host "] Don't trust current server. Connection is aborted (Recommeneded if you don't recognize server fingerprint)." - $stream.SetLength($totalBufferSize) + Write-Host "[" -NoNewLine + Write-Host "?" -NoNewLine -ForegroundColor Cyan + Write-Host "] Current help output." - $stream.position = 0 + Write-Host "" + } - $totalBytesRead = 0 + "A" + { + Write-ServerFingerprintToLocalStorage -Fingerprint $Certificate.Thumbprint - $buffer = New-Object -TypeName Byte[] -ArgumentList $packetSize - do - { - $bufferSize = $totalBufferSize - $totalBytesRead - if ($bufferSize -gt $packetSize) + return $true + } + + "Y" { - $bufferSize = $packetSize - } - else + $global:EphemeralTrustedServers += $Certificate.Thumbprint + + return $true + } + + "N" { - # Save some memory operations for creating objects. - # Usually, bellow code is call when last chunk is being sent. - $buffer = New-Object -TypeName byte[] -ArgumentList $bufferSize - } + return $false + } - $Param.Client.SSLStream.Read($buffer, 0, $bufferSize) + default + { + Write-Host "Invalid Answer, available options are ""A , Y , N , H""" -ForegroundColor Red + } + } + } + } + } + ) - $null = $stream.Write($buffer, 0, $buffer.Length) + $this.SSLStream.AuthenticateAsClient( + "PowerRemoteDesktop", + $null, + $TLSVersion, + $null + ) - $totalBytesRead += $bufferSize - } until ($totalBytesRead -eq $totalBufferSize) - } + if (-not $this.SSLStream.IsEncrypted) + { + throw "Could not establish a secure communication channel with remote server." + } - "Base64" - { - [byte[]] $buffer = [System.Convert]::FromBase64String(($Param.Client.Reader.ReadLine())) + $this.SSLStream.WriteTimeout = 5000 - $stream.Write($buffer, 0, $buffer.Length) - } - } + $this.Writer = New-Object System.IO.StreamWriter($this.SSLStream) + $this.Writer.AutoFlush = $true - $stream.Position = 0 + $this.Reader = New-Object System.IO.StreamReader($this.SSLStream) - if ($Param.RequireResize) - { - #$image = [System.Drawing.Image]::FromStream($stream) + Write-Verbose "Encrypted tunnel opened and ready for use." + } - $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream - - $Param.SyncHash.VirtualDesktop.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $Param.VirtualDesktopWidth -NewHeight $Param.VirtualDesktopHeight - } - else - { - $Param.SyncHash.VirtualDesktop.Picture.Image = [System.Drawing.Image]::FromStream($stream) - } - } - catch - { - break - } - finally - { - $stream.Close() - } - - } - } - finally - { - $Param.SyncHash.VirtualDesktop.Form.Close() - } -} - -$global:IngressEventScriptBlock = { - <# - .SYNOPSIS - Threaded code block to receive remote events. - - This code is expected to be run inside a new PowerShell Runspace. - - .PARAMETER Param.Client - A ClientIO Object with an established connection to remote server. - #> - - enum CursorType { - IDC_APPSTARTING - IDC_ARROW - IDC_CROSS - IDC_HAND - IDC_HELP - IDC_IBEAM - IDC_ICON - IDC_NO - IDC_SIZE - IDC_SIZEALL - IDC_SIZENESW - IDC_SIZENS - IDC_SIZENWSE - IDC_SIZEWE - IDC_UPARROW - IDC_WAIT - } - - enum OutputCommand { - KeepAlive = 0x1 - MouseCursorUpdated = 0x2 - ClipboardUpdated = 0x3 - } - - while ($true) - { - try - { - $jsonCommand = $Param.Client.Reader.ReadLine() - } - catch - { break } - - try - { - $command = $jsonCommand | ConvertFrom-Json - } - catch - { continue } - - if (-not ($command.PSobject.Properties.name -match "Id")) - { continue } - - switch ([OutputCommand] $command.Id) - { - # Remote Global Mouse Cursor State Changed (Icon) - "MouseCursorUpdated" - { - if (-not ($command.PSobject.Properties.name -match "Cursor")) - { continue } - - $cursor = [System.Windows.Forms.Cursors]::Arrow - - switch ([CursorType] $command.Cursor) - { - "IDC_APPSTARTING" { $cursor = [System.Windows.Forms.Cursors]::AppStarting } - "IDC_CROSS" { $cursor = [System.Windows.Forms.Cursors]::Cross } - "IDC_HAND" { $cursor = [System.Windows.Forms.Cursors]::Hand } - "IDC_HELP" { $cursor = [System.Windows.Forms.Cursors]::Help } - "IDC_IBEAM" { $cursor = [System.Windows.Forms.Cursors]::IBeam } - "IDC_NO" { $cursor = [System.Windows.Forms.Cursors]::No } - "IDC_SIZENESW" { $cursor = [System.Windows.Forms.Cursors]::SizeNESW } - "IDC_SIZENS" { $cursor = [System.Windows.Forms.Cursors]::SizeNS } - "IDC_SIZENWSE" { $cursor = [System.Windows.Forms.Cursors]::SizeNWSE } - "IDC_SIZEWE" { $cursor = [System.Windows.Forms.Cursors]::SizeWE } - "IDC_UPARROW" { $cursor = [System.Windows.Forms.Cursors]::UpArrow } - "IDC_WAIT" { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } - - {($_ -eq "IDC_SIZE") -or ($_ -eq "IDC_SIZEALL")} - { - $cursor = [System.Windows.Forms.Cursors]::SizeAll - } - } - - try - { - $Param.SyncHash.VirtualDesktop.Picture.Cursor = $cursor - } - catch - {} - - break - } - - "ClipboardUpdated" - { - if (-not ($command.PSobject.Properties.name -match "Text")) - { continue } - - Set-Clipboard -Value $command.Text - } - } - } -} - -class ClientIO { - <# - .SYNOPSIS - Extended version of TcpClient that automatically creates and releases - required streams with other useful methods. - - Supports SSL/TLS. - #> - - [string] $RemoteAddress - [int] $RemotePort - [bool] $TLSv1_3 - - [System.Net.Sockets.TcpClient] $Client = $null - [System.Net.Security.SslStream] $SSLStream = $null - [System.IO.StreamWriter] $Writer = $null - [System.IO.StreamReader] $Reader = $null - - ClientIO( - <# - .SYNOPSIS - Class constructor. - - .PARAMETER RemoteAddress - IP/HOST of remote server. - - .PARAMETER RemotePort - Remote server port. - - .PARAMETER TLSv1_3 - Define whether or not SSL/TLS v1.3 must be used. - #> - [string] $RemoteAddress = "127.0.0.1", - [int] $RemotePort = 2801, - [bool] $TLSv1_3 = $false - ) { - $this.RemoteAddress = $RemoteAddress - $this.RemotePort = $RemotePort - $this.TLSv1_3 = $TLSv1_3 - } - - [void]Connect() { - <# - .SYNOPSIS - Open a new connection to remote server. - Create required streams and open a new secure connection with peer. - #> - Write-Verbose "Connect: ""$($this.RemoteAddress):$($this.RemotePort)...""" - - $this.Client = New-Object System.Net.Sockets.TcpClient($this.RemoteAddress, $this.RemotePort) - - Write-Verbose "Connected." - - if ($this.TLSv1_3) - { - $TLSVersion = [System.Security.Authentication.SslProtocols]::TLS13 - } - else { - $TLSVersion = [System.Security.Authentication.SslProtocols]::TLS12 - } - - Write-Verbose "Establish an encrypted tunnel using: ${TLSVersion}..." - - $this.SSLStream = New-object System.Net.Security.SslStream( - $this.Client.GetStream(), - $false, - { - param( - $Sendr, - $Certificate, - $Chain, - $Policy - ) - - if ( - (Test-ServerFingerprintFromLocalStorage -Fingerprint $Certificate.Thumbprint) -or - $global:EphemeralTrustedServers -contains $Certificate.Thumbprint - ) - { - Write-Verbose "Fingerprint already known and trusted: ""$($Certificate.Thumbprint)""" - - return $true - } - else - { - Write-Verbose "@Remote Server Certificate:" - Write-Verbose $Certificate - Write-Verbose "---" - - Write-Host "Untrusted Server Certificate Fingerprint: """ -NoNewLine - Write-Host $Certificate.Thumbprint -NoNewline -ForegroundColor Green - Write-Host """" - - while ($true) - { - Write-Host "`r`nDo you want to trust current server ?" - $choice = Read-Host "[A] Always [Y] Yes [N] No [?] Help (Default is ""N"")" - if (-not $choice) - { - $choice = "N" - } - - switch ($choice) - { - "?" - { - Write-Host "" - - Write-Host "[" -NoNewLine - Write-Host "A" -NoNewLine -ForegroundColor Cyan - Write-Host "] Always trust current server (Persistent between PowerShell Instances)" - - Write-Host "[" -NoNewLine - Write-Host "Y" -NoNewLine -ForegroundColor Cyan - Write-Host "] Trust current server during current PowerShell Instance lifetime (Temporary)." - - Write-Host "[" -NoNewLine - Write-Host "N" -NoNewLine -ForegroundColor Cyan - Write-Host "] Don't trust current server. Connection is aborted (Recommeneded if you don't recognize server fingerprint)." - - Write-Host "[" -NoNewLine - Write-Host "?" -NoNewLine -ForegroundColor Cyan - Write-Host "] Current help output." - - Write-Host "" - } - - "A" - { - Write-ServerFingerprintToLocalStorage -Fingerprint $Certificate.Thumbprint - - return $true - } - - "Y" - { - $global:EphemeralTrustedServers += $Certificate.Thumbprint - - return $true - } - - "N" - { - return $false - } - - default - { - Write-Host "Invalid Answer, available options are ""A , Y , N , H""" -ForegroundColor Red - } - } - } - } - } - ) - - $this.SSLStream.AuthenticateAsClient( - "PowerRemoteDesktop", - $null, - $TLSVersion, - $null - ) - - if (-not $this.SSLStream.IsEncrypted) - { - throw "Could not establish a secure communication channel with remote server." - } - - $this.SSLStream.WriteTimeout = 5000 - - $this.Writer = New-Object System.IO.StreamWriter($this.SSLStream) - $this.Writer.AutoFlush = $true - - $this.Reader = New-Object System.IO.StreamReader($this.SSLStream) - - Write-Verbose "Encrypted tunnel opened and ready for use." - } - - [void]Authentify([SecureString] $SecurePassword) { - <# - .SYNOPSIS - Handle authentication process with remote server. + [void]Authentify([SecureString] $SecurePassword) { + <# + .SYNOPSIS + Handle authentication process with remote server. .PARAMETER Password Password used for authentication with server. @@ -831,7 +547,7 @@ class ClientIO { Write-Verbose "Candidate: ""${candidate}""" Write-Verbose "Solution: ""${challengeSolution}""" Write-Verbose "---" - + $this.Writer.WriteLine($challengeSolution) $result = $this.Reader.ReadLine() @@ -1035,130 +751,414 @@ class ViewerSession [SecureString] $SecurePassword = $null [bool] $TLSv1_3 = $false - [ClientIO] $ClientDesktop = $null - [ClientIO] $ClientEvents = $null + [ClientIO] $ClientDesktop = $null + [ClientIO] $ClientEvents = $null + + ViewerSession( + [string] $ServerAddress, + [int] $ServerPort, + [SecureString] $SecurePassword, + [bool] $TLSv1_3 + ) + { + <# + .SYNOPSIS + Create a new viewer session object. + + .DESCRIPTION + This object will contain session information including active connection + objects (ClientIO) + + .PARAMETER ServerAddress + Remote Server Address. + + .PARAMETER ServerPort + Remote Server Port. + + .PARAMETER SecureString + Password used during server authentication. + + .PARAMETER TLSv1_3 + Define whether or not client must use SSL/TLS v1.3 to communicate with remote server. + Recommended if possible. + #> + + # TODO: Check if ServerAddress is a valid host. + + # Or: System.Management.Automation.Runspaces.MaxPort (High(Word)) + if ($ServerPort -lt 0 -and $ServerPort -gt 65535) + { + throw "Invalid TCP Port (0-65535)" + } + + $this.ServerAddress = $ServerAddress + $this.ServerPort = $ServerPort + $this.SecurePassword = $SecurePassword + $this.TLSv1_3 = $TLSv1_3 + } + + [void] OpenSession() { + <# + .SYNOPSIS + Establish a new complete session with remote server. + + .DESCRIPTION + This method handle both session handshake and Password-Authentication. + #> + Write-Verbose "Open new session with remote server: ""$($this.ServerAddress):$($this.ServerPort)""..." + + if ($this.SessionInformation) + { + throw "An session already exists. Close existing session first." + } + + Write-Verbose "Establish first contact with remote server..." + + $this.ClientDesktop = [ClientIO]::New($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) + try + { + $this.ClientDesktop.Connect() + + $this.ClientDesktop.Authentify($this.SecurePassword) + + $this.SessionInformation = $this.ClientDesktop.Hello() + + if (-not $this.SessionInformation) + { + throw "Session cannot be null." + } + + Write-Verbose "Open secondary tunnel for input control..." + + $this.ClientEvents = [ClientIO]::new($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) + $this.ClientEvents.Connect() + + $this.ClientEvents.Authentify($this.SecurePassword) + + $this.ClientEvents.Hello($this.SessionInformation.SessionId) + + Write-Verbose "New session successfully established with remote server." + Write-Verbose "Session Id: $($this.SessionInformation.SessionId)" + } + catch + { + $this.CloseSession() + + throw "Open Session Error. Detail: ""$($_)""" + } + } + + [void] CloseSession() { + <# + .SYNOPSIS + Close an existing session with remote server. + Terminate active connections and reset session informations. + #> + + Write-Verbose "Close existing session..." + + if ($this.ClientDesktop) + { + $this.ClientDesktop.Close() + } + + if ($this.ClientEvents) + { + $this.ClientEvents.Close() + } + + $this.ClientDesktop = $null + $this.ClientEvents = $null + + $this.SessionInformation = $null + + Write-Verbose "Session closed." + } + +} + +$global:VirtualDesktopUpdaterScriptBlock = { + <# + .SYNOPSIS + Threaded code block to receive updates of remote desktop and update Virtual Desktop Form. + + This code is expected to be run inside a new PowerShell Runspace. + + .PARAMETER Param.Client + A ClientIO Class instance for handling desktop updates. + + .PARAMETER Param.RequireResize + Tell if desktop image needs to be resized to fit viewer screen constrainsts. + + .PARAMETER Param.VirtualDesktopWidth + The integer value representing remote screen width. + + .PARAMETER Param.VirtualDesktopHeight + The integer value representing remote screen height. + + .PARAMETER Param.SyncHash + Synchronized Hashtable containing objects to "safe-thread" + + .PARAMETER Param.TransportMode + Define desktop image transport mode: Raw or Base64. This value is defined by server following + its options. + #> + + enum TransportMode { + Raw = 1 + Base64 = 2 + } + + function Invoke-SmoothResize + { + <# + .SYNOPSIS + Output a resized version of input bitmap. The resize quality is quite fair. + + .PARAMETER OriginalImage + Input bitmap to resize. + + .PARAMETER NewWidth + Define the width of new bitmap version. + + .PARAMETER NewHeight + Define the height of new bitmap version. + + .EXAMPLE + Invoke-SmoothResize -OriginalImage $myImage -NewWidth 1920 -NewHeight 1024 + #> + param ( + [Parameter(Mandatory=$true)] + [System.Drawing.Bitmap] $OriginalImage, + + [Parameter(Mandatory=$true)] + [int] $NewWidth, + + [Parameter(Mandatory=$true)] + [int] $NewHeight + ) + try + { + $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $NewWidth, $NewHeight + + $resizedImage = [System.Drawing.Graphics]::FromImage($bitmap) + + $resizedImage.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::HighQuality + $resizedImage.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality + $resizedImage.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic + $resizedImage.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality + + $resizedImage.DrawImage($OriginalImage, 0, 0, $bitmap.Width, $bitmap.Height) + + return $bitmap + } + finally + { + if ($OriginalImage) + { + $OriginalImage.Dispose() + } + + if ($resizedImage) + { + $resizedImage.Dispose() + } + } + } + + try + { + $packetSize = 4096 - ViewerSession( - [string] $ServerAddress, - [int] $ServerPort, - [SecureString] $SecurePassword, - [bool] $TLSv1_3 - ) - { - <# - .SYNOPSIS - Create a new viewer session object. + while ($true) + { + $stream = New-Object System.IO.MemoryStream + try + { + switch ([TransportMode] $Param.TransportMode) + { + "Raw" + { + $buffer = New-Object -TypeName byte[] -ArgumentList 4 # SizeOf(Int32) - .DESCRIPTION - This object will contain session information including active connection - objects (ClientIO) + $Param.Client.SSLStream.Read($buffer, 0, $buffer.Length) - .PARAMETER ServerAddress - Remote Server Address. + [int32] $totalBufferSize = [BitConverter]::ToInt32($buffer, 0) - .PARAMETER ServerPort - Remote Server Port. + $stream.SetLength($totalBufferSize) - .PARAMETER SecureString - Password used during server authentication. + $stream.position = 0 - .PARAMETER TLSv1_3 - Define whether or not client must use SSL/TLS v1.3 to communicate with remote server. - Recommended if possible. - #> + $totalBytesRead = 0 - # TODO: Check if ServerAddress is a valid host. - - # Or: System.Management.Automation.Runspaces.MaxPort (High(Word)) - if ($ServerPort -lt 0 -and $ServerPort -gt 65535) - { - throw "Invalid TCP Port (0-65535)" - } + $buffer = New-Object -TypeName Byte[] -ArgumentList $packetSize + do + { + $bufferSize = $totalBufferSize - $totalBytesRead + if ($bufferSize -gt $packetSize) + { + $bufferSize = $packetSize + } + else + { + # Save some memory operations for creating objects. + # Usually, bellow code is call when last chunk is being sent. + $buffer = New-Object -TypeName byte[] -ArgumentList $bufferSize + } - $this.ServerAddress = $ServerAddress - $this.ServerPort = $ServerPort - $this.SecurePassword = $SecurePassword - $this.TLSv1_3 = $TLSv1_3 - } + $Param.Client.SSLStream.Read($buffer, 0, $bufferSize) - [void] OpenSession() { - <# - .SYNOPSIS - Establish a new complete session with remote server. + $null = $stream.Write($buffer, 0, $buffer.Length) - .DESCRIPTION - This method handle both session handshake and Password-Authentication. - #> - Write-Verbose "Open new session with remote server: ""$($this.ServerAddress):$($this.ServerPort)""..." + $totalBytesRead += $bufferSize + } until ($totalBytesRead -eq $totalBufferSize) + } - if ($this.SessionInformation) - { - throw "An session already exists. Close existing session first." - } + "Base64" + { + [byte[]] $buffer = [System.Convert]::FromBase64String(($Param.Client.Reader.ReadLine())) - Write-Verbose "Establish first contact with remote server..." + $stream.Write($buffer, 0, $buffer.Length) + } + } - $this.ClientDesktop = [ClientIO]::New($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) - try - { - $this.ClientDesktop.Connect() + $stream.Position = 0 - $this.ClientDesktop.Authentify($this.SecurePassword) + if ($Param.RequireResize) + { + #$image = [System.Drawing.Image]::FromStream($stream) - $this.SessionInformation = $this.ClientDesktop.Hello() + $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream - if (-not $this.SessionInformation) + $Param.SyncHash.VirtualDesktop.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $Param.VirtualDesktopWidth -NewHeight $Param.VirtualDesktopHeight + } + else + { + $Param.SyncHash.VirtualDesktop.Picture.Image = [System.Drawing.Image]::FromStream($stream) + } + } + catch + { + break + } + finally { - throw "Session cannot be null." + $stream.Close() } + + } + } + finally + { + $Param.SyncHash.VirtualDesktop.Form.Close() + } +} - Write-Verbose "Open secondary tunnel for input control..." - - $this.ClientEvents = [ClientIO]::new($this.ServerAddress, $this.ServerPort, $this.TLSv1_3) - $this.ClientEvents.Connect() - - $this.ClientEvents.Authentify($this.SecurePassword) +$global:IngressEventScriptBlock = { + <# + .SYNOPSIS + Threaded code block to receive remote events. - $this.ClientEvents.Hello($this.SessionInformation.SessionId) + This code is expected to be run inside a new PowerShell Runspace. - Write-Verbose "New session successfully established with remote server." - Write-Verbose "Session Id: $($this.SessionInformation.SessionId)" - } - catch - { - $this.CloseSession() + .PARAMETER Param.Client + A ClientIO Object with an established connection to remote server. + #> - throw "Open Session Error. Detail: ""$($_)""" - } + enum CursorType { + IDC_APPSTARTING + IDC_ARROW + IDC_CROSS + IDC_HAND + IDC_HELP + IDC_IBEAM + IDC_ICON + IDC_NO + IDC_SIZE + IDC_SIZEALL + IDC_SIZENESW + IDC_SIZENS + IDC_SIZENWSE + IDC_SIZEWE + IDC_UPARROW + IDC_WAIT } - [void] CloseSession() { - <# - .SYNOPSIS - Close an existing session with remote server. - Terminate active connections and reset session informations. - #> - - Write-Verbose "Close existing session..." + enum OutputCommand { + KeepAlive = 0x1 + MouseCursorUpdated = 0x2 + ClipboardUpdated = 0x3 + } - if ($this.ClientDesktop) - { - $this.ClientDesktop.Close() + while ($true) + { + try + { + $jsonCommand = $Param.Client.Reader.ReadLine() } + catch + { break } - if ($this.ClientEvents) + try { - $this.ClientEvents.Close() - } + $command = $jsonCommand | ConvertFrom-Json + } + catch + { continue } - $this.ClientDesktop = $null - $this.ClientEvents = $null - - $this.SessionInformation = $null + if (-not ($command.PSobject.Properties.name -match "Id")) + { continue } - Write-Verbose "Session closed." - } + switch ([OutputCommand] $command.Id) + { + # Remote Global Mouse Cursor State Changed (Icon) + "MouseCursorUpdated" + { + if (-not ($command.PSobject.Properties.name -match "Cursor")) + { continue } + + $cursor = [System.Windows.Forms.Cursors]::Arrow + + switch ([CursorType] $command.Cursor) + { + "IDC_APPSTARTING" { $cursor = [System.Windows.Forms.Cursors]::AppStarting } + "IDC_CROSS" { $cursor = [System.Windows.Forms.Cursors]::Cross } + "IDC_HAND" { $cursor = [System.Windows.Forms.Cursors]::Hand } + "IDC_HELP" { $cursor = [System.Windows.Forms.Cursors]::Help } + "IDC_IBEAM" { $cursor = [System.Windows.Forms.Cursors]::IBeam } + "IDC_NO" { $cursor = [System.Windows.Forms.Cursors]::No } + "IDC_SIZENESW" { $cursor = [System.Windows.Forms.Cursors]::SizeNESW } + "IDC_SIZENS" { $cursor = [System.Windows.Forms.Cursors]::SizeNS } + "IDC_SIZENWSE" { $cursor = [System.Windows.Forms.Cursors]::SizeNWSE } + "IDC_SIZEWE" { $cursor = [System.Windows.Forms.Cursors]::SizeWE } + "IDC_UPARROW" { $cursor = [System.Windows.Forms.Cursors]::UpArrow } + "IDC_WAIT" { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } + + {($_ -eq "IDC_SIZE") -or ($_ -eq "IDC_SIZEALL")} + { + $cursor = [System.Windows.Forms.Cursors]::SizeAll + } + } + + try + { + $Param.SyncHash.VirtualDesktop.Picture.Cursor = $cursor + } + catch + {} + break + } + + "ClipboardUpdated" + { + if (-not ($command.PSobject.Properties.name -match "Text")) + { continue } + + Set-Clipboard -Value $command.Text + } + } + } } function New-VirtualDesktopForm From 7731026ea1a25726df011824504f8853e1fbdc05 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 11:28:07 +0100 Subject: [PATCH 09/25] Feat: clipboard synchronization added Viewer -> Server --- .../PowerRemoteDesktop_Server.psm1 | 77 +++--- .../PowerRemoteDesktop_Viewer.psm1 | 244 +++++++++++++----- TestViewer.ps1 | 3 +- 3 files changed, 227 insertions(+), 97 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 519e937..a6679bb 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -56,9 +56,9 @@ Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool $global:PowerRemoteDesktopVersion = "1.0.4.beta.5" -# Used for debugging purpose (For debugging runspaces) $global:HostSyncHash = [HashTable]::Synchronized(@{ host = $host + ClipboardText = (Get-Clipboard -Raw) }) enum TransportMode { @@ -1291,10 +1291,12 @@ $global:IngressEventScriptBlock = { MOUSEEVENTF_HWHEEL = 0x01000 } - enum InputCommand { + enum InputEvent { Keyboard = 0x1 MouseClickMove = 0x2 MouseWheel = 0x3 + KeepAlive = 0x4 + ClipboardUpdated = 0x5 } enum MouseState { @@ -1343,10 +1345,10 @@ $global:IngressEventScriptBlock = { $keyboardSim = [KeyboardSim]::New() while ($true) - { + { try { - $jsonCommand = $Param.Reader.ReadLine() + $jsonEvent = $Param.Reader.ReadLine() } catch { @@ -1357,37 +1359,37 @@ $global:IngressEventScriptBlock = { try { - $command = $jsonCommand | ConvertFrom-Json + $aEvent = $jsonEvent | ConvertFrom-Json } catch { continue } - if (-not ($command.PSobject.Properties.name -match "Id")) + if (-not ($aEvent.PSobject.Properties.name -match "Id")) { continue } - switch ([InputCommand] $command.Id) + switch ([InputEvent] $aEvent.Id) { # Keyboard Input Simulation "Keyboard" { - if (-not ($command.PSobject.Properties.name -match "Keys")) + if (-not ($aEvent.PSobject.Properties.name -match "Keys")) { break } - $keyboardSim.SendInput($command.Keys) + $keyboardSim.SendInput($aEvent.Keys) break } # Mouse Move & Click Simulation "MouseClickMove" { - if (-not ($command.PSobject.Properties.name -match "Type")) + if (-not ($aEvent.PSobject.Properties.name -match "Type")) { break } - switch ([MouseState] $command.Type) + switch ([MouseState] $aEvent.Type) { # Mouse Down/Up {($_ -eq "Down") -or ($_ -eq "Up")} { - [W.U32]::SetCursorPos($command.X, $command.Y) + [W.U32]::SetCursorPos($aEvent.X, $aEvent.Y) $down = ($_ -eq "Down") @@ -1397,7 +1399,7 @@ $global:IngressEventScriptBlock = { $mouseCode = [int][MouseFlags]::MOUSEEVENTF_LEFTUP } - switch($command.Button) + switch($aEvent.Button) { "Right" { @@ -1433,7 +1435,7 @@ $global:IngressEventScriptBlock = { # Mouse Move "Move" { - [W.U32]::SetCursorPos($command.X, $command.Y) + [W.U32]::SetCursorPos($aEvent.X, $aEvent.Y) break } @@ -1444,10 +1446,21 @@ $global:IngressEventScriptBlock = { # Mouse Wheel Simulation "MouseWheel" { - [W.U32]::mouse_event([int][MouseFlags]::MOUSEEVENTF_WHEEL, 0, 0, $command.Delta, 0); + [W.U32]::mouse_event([int][MouseFlags]::MOUSEEVENTF_WHEEL, 0, 0, $aEvent.Delta, 0); break } + + # Clipboard Update + "ClipboardUpdated" + { + if (-not ($aEvent.PSobject.Properties.name -match "Text")) + { continue } + + $HostSyncHash.ClipboardText = $aEvent.Text + + Set-Clipboard -Value $aEvent.Text + } } } } @@ -1487,7 +1500,7 @@ $global:EgressEventScriptBlock = { IDC_WAIT = 32514 } - enum OutputCommand { + enum OutputEvent { KeepAlive = 0x1 MouseCursorUpdated = 0x2 ClipboardUpdated = 0x3 @@ -1584,15 +1597,15 @@ $global:EgressEventScriptBlock = { .SYNOPSIS Send an event to remote peer. - .PARAMETER command - A supported command id representing the kind of event. + .PARAMETER AEvent + Define what kind of event to send. - .PARAMETER data + .PARAMETER Data An optional object containing additional information about the event. #> param ( [Parameter(Mandatory=$True)] - [OutputCommand] $Command, + [OutputEvent] $AEvent, [PSCustomObject] $Data = $null ) @@ -1602,12 +1615,12 @@ $global:EgressEventScriptBlock = { if (-not $Data) { $Data = New-Object -TypeName PSCustomObject -Property @{ - Id = $Command + Id = $AEvent } } else { - $Data | Add-Member -MemberType NoteProperty -Name "Id" -Value $Command + $Data | Add-Member -MemberType NoteProperty -Name "Id" -Value $AEvent } $Param.Writer.WriteLine(($Data | ConvertTo-Json -Compress)) @@ -1624,11 +1637,6 @@ $global:EgressEventScriptBlock = { $oldCursor = 0 - if ($Param.SynchronizeClipboard) - { - $oldClipboard = Get-Clipboard - } - $stopWatch = [System.Diagnostics.Stopwatch]::StartNew() while ($true) @@ -1647,18 +1655,18 @@ $global:EgressEventScriptBlock = { # IDEA: Check for existing clipboard change event or implement a custom clipboard # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) # It is not very important but it would avoid calling "Get-Clipboard" every seconds. - $currentClipboard = Get-Clipboard + $currentClipboard = (Get-Clipboard -Raw) - if ($currentClipboard -and $currentClipboard -cne $oldClipboard) + if ($currentClipboard -and $currentClipboard -cne $HostSyncHash.ClipboardText) { $data = New-Object -TypeName PSCustomObject -Property @{ Text = $currentClipboard } - if (-not (Send-Event -Command "ClipboardUpdated" -Data $data)) + if (-not (Send-Event -AEvent "ClipboardUpdated" -Data $data)) { break } - $oldClipboard = $currentClipboard + $HostSyncHash.ClipboardText = $currentClipboard $eventTriggered = $true } @@ -1667,7 +1675,7 @@ $global:EgressEventScriptBlock = { # Send a Keep-Alive if during this second iteration nothing happened. if (-not $eventTriggered) { - if (-not (Send-Event -Command "KeepAlive")) + if (-not (Send-Event -AEvent "KeepAlive")) { break } } } @@ -1682,13 +1690,13 @@ $global:EgressEventScriptBlock = { $currentCursor = Get-GlobalMouseCursorIconHandle if ($currentCursor -ne 0 -and $currentCursor -ne $oldCursor) { - $cursorTypeName = ($cursors.GetEnumerator() | ? { $_.Value -eq $currentCursor }).Key + $cursorTypeName = ($cursors.GetEnumerator() | Where-Object { $_.Value -eq $currentCursor }).Key $data = New-Object -TypeName PSCustomObject -Property @{ Cursor = $cursorTypeName } - if (-not (Send-Event -Command "MouseCursorUpdated" -Data $data)) + if (-not (Send-Event -AEvent "MouseCursorUpdated" -Data $data)) { break } $oldCursor = $currentCursor @@ -1737,7 +1745,6 @@ function New-RunSpace $runspace.SessionStateProxy.SetVariable("Param", $Param) } - # Debug (Dev Only) $runspace.SessionStateProxy.SetVariable("HostSyncHash", $global:HostSyncHash) $powershell = [PowerShell]::Create().AddScript($ScriptBlock) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index e9e5230..cd2a4bd 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -55,9 +55,9 @@ Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool $global:PowerRemoteDesktopVersion = "1.0.4.beta.5" -# Used for debugging purpose (For debugging runspaces) $global:HostSyncHash = [HashTable]::Synchronized(@{ host = $host + ClipboardText = (Get-Clipboard -Raw) }) # Last until PowerShell session is closed @@ -896,7 +896,7 @@ $global:VirtualDesktopUpdaterScriptBlock = { .PARAMETER Param.VirtualDesktopHeight The integer value representing remote screen height. - .PARAMETER Param.SyncHash + .PARAMETER Param.VirtualDesktopSyncHash Synchronized Hashtable containing objects to "safe-thread" .PARAMETER Param.TransportMode @@ -1030,11 +1030,11 @@ $global:VirtualDesktopUpdaterScriptBlock = { $bitmap = New-Object -TypeName System.Drawing.Bitmap -ArgumentList $stream - $Param.SyncHash.VirtualDesktop.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $Param.VirtualDesktopWidth -NewHeight $Param.VirtualDesktopHeight + $Param.VirtualDesktopSyncHash.VirtualDesktop.Picture.Image = Invoke-SmoothResize -OriginalImage $bitmap -NewWidth $Param.VirtualDesktopWidth -NewHeight $Param.VirtualDesktopHeight } else { - $Param.SyncHash.VirtualDesktop.Picture.Image = [System.Drawing.Image]::FromStream($stream) + $Param.VirtualDesktopSyncHash.VirtualDesktop.Picture.Image = [System.Drawing.Image]::FromStream($stream) } } catch @@ -1050,7 +1050,7 @@ $global:VirtualDesktopUpdaterScriptBlock = { } finally { - $Param.SyncHash.VirtualDesktop.Form.Close() + $Param.VirtualDesktopSyncHash.VirtualDesktop.Form.Close() } } @@ -1084,7 +1084,7 @@ $global:IngressEventScriptBlock = { IDC_WAIT } - enum OutputCommand { + enum InputEvent { KeepAlive = 0x1 MouseCursorUpdated = 0x2 ClipboardUpdated = 0x3 @@ -1094,32 +1094,32 @@ $global:IngressEventScriptBlock = { { try { - $jsonCommand = $Param.Client.Reader.ReadLine() + $jsonEvent = $Param.Client.Reader.ReadLine() } catch { break } try { - $command = $jsonCommand | ConvertFrom-Json + $aEvent = $jsonEvent | ConvertFrom-Json } catch { continue } - if (-not ($command.PSobject.Properties.name -match "Id")) + if (-not ($aEvent.PSobject.Properties.name -match "Id")) { continue } - switch ([OutputCommand] $command.Id) + switch ([InputEvent] $aEvent.Id) { # Remote Global Mouse Cursor State Changed (Icon) "MouseCursorUpdated" { - if (-not ($command.PSobject.Properties.name -match "Cursor")) + if (-not ($aEvent.PSobject.Properties.name -match "Cursor")) { continue } $cursor = [System.Windows.Forms.Cursors]::Arrow - switch ([CursorType] $command.Cursor) + switch ([CursorType] $aEvent.Cursor) { "IDC_APPSTARTING" { $cursor = [System.Windows.Forms.Cursors]::AppStarting } "IDC_CROSS" { $cursor = [System.Windows.Forms.Cursors]::Cross } @@ -1142,7 +1142,7 @@ $global:IngressEventScriptBlock = { try { - $Param.SyncHash.VirtualDesktop.Picture.Cursor = $cursor + $Param.VirtualDesktopSyncHash.VirtualDesktop.Picture.Cursor = $cursor } catch {} @@ -1152,15 +1152,117 @@ $global:IngressEventScriptBlock = { "ClipboardUpdated" { - if (-not ($command.PSobject.Properties.name -match "Text")) + if (-not ($aEvent.PSobject.Properties.name -match "Text")) { continue } - Set-Clipboard -Value $command.Text + $HostSyncHash.ClipboardText = $aEvent.Text + + Set-Clipboard -Value $aEvent.Text } } } } +$global:EgressEventScriptBlock = { + + enum OutputEvent { + # 0x1 0x2 0x3 are at another place (GUI Thread) + KeepAlive = 0x4 + ClipboardUpdated = 0x5 + } + + function Send-Event + { + <# + .SYNOPSIS + Send an event to remote peer. + + .PARAMETER AEvent + Define what kind of event to send. + + .PARAMETER Data + An optional object containing additional information about the event. + #> + param ( + [Parameter(Mandatory=$True)] + [OutputEvent] $AEvent, + + [PSCustomObject] $Data = $null + ) + + try + { + if (-not $Data) + { + $Data = New-Object -TypeName PSCustomObject -Property @{ + Id = $AEvent + } + } + else + { + $Data | Add-Member -MemberType NoteProperty -Name "Id" -Value $AEvent + } + + $Param.OutputEventSyncHash.Writer.WriteLine(($Data | ConvertTo-Json -Compress)) + + return $true + } + catch + { + return $false + } + } + + $stopWatch = [System.Diagnostics.Stopwatch]::StartNew() + + while ($true) + { + # Events that occurs every seconds needs to be placed bellow. + # If no event has occured during this second we send a Keep-Alive signal to + # remote peer and detect a potential socket disconnection. + if ($stopWatch.ElapsedMilliseconds -ge 1000) + { + try + { + $eventTriggered = $false + + if ($Param.SynchronizeClipboard) + { + # IDEA: Check for existing clipboard change event or implement a custom clipboard + # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) + # It is not very important but it would avoid calling "Get-Clipboard" every seconds. + $currentClipboard = (Get-Clipboard -Raw) + + if ($currentClipboard -and $currentClipboard -cne $HostSyncHash.ClipboardText) + { + $data = New-Object -TypeName PSCustomObject -Property @{ + Text = $currentClipboard + } + + if (-not (Send-Event -AEvent "ClipboardUpdated" -Data $data)) + { break } + + $HostSyncHash.ClipboardText = $currentClipboard + + $eventTriggered = $true + } + } + + # Send a Keep-Alive if during this second iteration nothing happened. + if (-not $eventTriggered) + { + if (-not (Send-Event -AEvent "KeepAlive")) + { break } + } + } + finally + { + $stopWatch.Restart() + } + } + } +} + function New-VirtualDesktopForm { <# @@ -1249,7 +1351,6 @@ function New-RunSpace $runspace.SessionStateProxy.SetVariable("Param", $Param) } - # Debug (Dev Only) $runspace.SessionStateProxy.SetVariable("HostSyncHash", $global:HostSyncHash) $powershell = [PowerShell]::Create().AddScript($ScriptBlock) @@ -1285,7 +1386,7 @@ function Invoke-RemoteDesktopViewer .PARAMETER SecurePassword SecureString Password object used to authenticate with remote server (Recommended) - Call "ConvertTo-SecureString –String "YouPasswordHere" -AsPlainText -Force" on this parameter to convert + Call "ConvertTo-SecureString -String "YouPasswordHere" -AsPlainText -Force" on this parameter to convert a plain-text String to SecureString. See example section. @@ -1298,7 +1399,11 @@ function Invoke-RemoteDesktopViewer Recommended if possible. .PARAMETER DisableVerbosity - Disable verbosity (not recommended) + Disable verbosity (not recommended) + + .PARAMETER DisableClipboard + This option disable Clipboard synchronization with remote peer. By default Clipboard synchronization + is enabled and will synchronize only if both Viewer and Server have Clipboard synchronization enabled. .EXAMPLE Invoke-RemoteDesktopViewer -ServerAddress "192.168.0.10" -ServerPort "2801" -SecurePassword (ConvertTo-SecureString -String "s3cr3t!" -AsPlainText -Force) @@ -1315,7 +1420,8 @@ function Invoke-RemoteDesktopViewer [SecureString] $SecurePassword, [String] $Password, - [switch] $DisableVerbosity + [switch] $DisableVerbosity, + [switch] $DisableClipboard ) [System.Collections.Generic.List[PSCustomObject]]$runspaces = @() @@ -1362,11 +1468,11 @@ function Invoke-RemoteDesktopViewer Write-Verbose "Create WinForms Environment..." - $syncHash = [HashTable]::Synchronized(@{ + $virtualDesktopSyncHash = [HashTable]::Synchronized(@{ VirtualDesktop = New-VirtualDesktopForm }) - $syncHash.VirtualDesktop.Form.Text = [string]::Format( + $virtualDesktopSyncHash.VirtualDesktop.Form.Text = [string]::Format( "Power Remote Desktop: {0}/{1} - {2}", $session.SessionInformation.Username, $session.SessionInformation.MachineName, @@ -1376,8 +1482,8 @@ function Invoke-RemoteDesktopViewer # Prepare Virtual Desktop $locationResolutionInformation = [System.Windows.Forms.Screen]::PrimaryScreen - $screenRect = $syncHash.VirtualDesktop.Form.RectangleToScreen($syncHash.VirtualDesktop.Form.ClientRectangle) - $captionHeight = $screenRect.Top - $syncHash.VirtualDesktop.Form.Top + $screenRect = $virtualDesktopSyncHash.VirtualDesktop.Form.RectangleToScreen($virtualDesktopSyncHash.VirtualDesktop.Form.ClientRectangle) + $captionHeight = $screenRect.Top - $virtualDesktopSyncHash.VirtualDesktop.Form.Top $localScreenWidth = $locationResolutionInformation.WorkingArea.Width $localScreenHeight = $locationResolutionInformation.WorkingArea.Height @@ -1421,18 +1527,23 @@ function Invoke-RemoteDesktopViewer } # Size Virtual Desktop Form Window - $syncHash.VirtualDesktop.Form.ClientSize = [System.Drawing.Size]::new($virtualDesktopWidth, $virtualDesktopHeight) + $virtualDesktopSyncHash.VirtualDesktop.Form.ClientSize = [System.Drawing.Size]::new($virtualDesktopWidth, $virtualDesktopHeight) # Center Virtual Desktop Form - $syncHash.VirtualDesktop.Form.Location = [System.Drawing.Point]::new( - (($localScreenWidth - $syncHash.VirtualDesktop.Form.Width) / 2), - (($localScreenHeight - $syncHash.VirtualDesktop.Form.Height) / 2) - ) + $virtualDesktopSyncHash.VirtualDesktop.Form.Location = [System.Drawing.Point]::new( + (($localScreenWidth - $virtualDesktopSyncHash.VirtualDesktop.Form.Width) / 2), + (($localScreenHeight - $virtualDesktopSyncHash.VirtualDesktop.Form.Height) / 2) + ) + + # Create a thread-safe hashtable to send events to remote server. + $outputEventSyncHash = [HashTable]::Synchronized(@{ + Writer = $session.ClientEvents.Writer + }) # WinForms Events (If enabled, I recommend to disable control when testing on local machine to avoid funny things) if (-not $DisableInputControl) { - enum InputCommand { + enum OutputEvent { Keyboard = 0x1 MouseClickMove = 0x2 MouseWheel = 0x3 @@ -1444,12 +1555,12 @@ function Invoke-RemoteDesktopViewer Move = 0x3 } - function New-MouseCommand + function New-MouseEvent { <# .SYNOPSIS - Generate a new mouse command object to be sent to server. - This command is used to simulate mouse move and clicks. + Generate a new mouse event object to be sent to server. + This event is used to simulate mouse move and clicks. .PARAMETER X The position of mouse in horizontal axis. @@ -1464,9 +1575,9 @@ function Invoke-RemoteDesktopViewer The pressed button on mouse (Example: Left, Right, Middle) .EXAMPLE - New-MouseCommand -X 10 -Y 35 -Type "Up" -Button "Left" - New-MouseCommand -X 10 -Y 35 -Type "Down" -Button "Left" - New-MouseCommand -X 100 -Y 325 -Type "Move" + New-MouseEvent -X 10 -Y 35 -Type "Up" -Button "Left" + New-MouseEvent -X 10 -Y 35 -Type "Down" -Button "Left" + New-MouseEvent -X 100 -Y 325 -Type "Move" #> param ( [Parameter(Mandatory=$true)] @@ -1480,7 +1591,7 @@ function Invoke-RemoteDesktopViewer ) return New-Object PSCustomObject -Property @{ - Id = [int][InputCommand]::MouseClickMove + Id = [int][OutputEvent]::MouseClickMove X = $X Y = $Y Button = $Button @@ -1488,19 +1599,19 @@ function Invoke-RemoteDesktopViewer } } - function New-KeyboardCommand + function New-KeyboardEvent { <# .SYNOPSIS - Generate a new keyboard command object to be sent to server. - This command is used to simulate keyboard strokes. + Generate a new keyboard event object to be sent to server. + This event is used to simulate keyboard strokes. .PARAMETER Keys Plain text keys to be simulated on remote computer. .EXAMPLE - New-KeyboardCommand -Keys "Hello, World" - New-KeyboardCommand -Keys "t" + New-KeyboardEvent -Keys "Hello, World" + New-KeyboardEvent -Keys "t" #> param ( [Parameter(Mandatory=$true)] @@ -1508,7 +1619,7 @@ function Invoke-RemoteDesktopViewer ) return New-Object PSCustomObject -Property @{ - Id = [int][InputCommand]::Keyboard + Id = [int][OutputEvent]::Keyboard Keys = $Keys } } @@ -1520,7 +1631,7 @@ function Invoke-RemoteDesktopViewer Transform the virtual mouse (the one in Virtual Desktop Form) coordinates to real remote desktop screen coordinates (especially when incomming desktop frames are resized) - When command is generated, it is immediately sent to remote server. + When event is generated, it is immediately sent to remote server. .PARAMETER X The position of virtual mouse in horizontal axis. @@ -1557,9 +1668,9 @@ function Invoke-RemoteDesktopViewer $X += $session.SessionInformation.Screen.X $Y += $session.SessionInformation.Screen.Y - $command = (New-MouseCommand -X $X -Y $Y -Button $Button -Type $Type) + $aEvent = (New-MouseEvent -X $X -Y $Y -Button $Button -Type $Type) - $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $outputEventSyncHash.Writer.WriteLine(($aEvent | ConvertTo-Json -Compress)) } function Send-VirtualKeyboard @@ -1580,12 +1691,12 @@ function Invoke-RemoteDesktopViewer [string] $KeyChain ) - $command = (New-KeyboardCommand -Keys $KeyChain) + $aEvent = (New-KeyboardEvent -Keys $KeyChain) - $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $outputEventSyncHash.Writer.WriteLine(($aEvent | ConvertTo-Json -Compress)) } - $syncHash.VirtualDesktop.Form.Add_KeyPress( + $virtualDesktopSyncHash.VirtualDesktop.Form.Add_KeyPress( { if ($_.KeyChar) { @@ -1610,7 +1721,7 @@ function Invoke-RemoteDesktopViewer } ) - $syncHash.VirtualDesktop.Form.Add_KeyDown( + $virtualDesktopSyncHash.VirtualDesktop.Form.Add_KeyDown( { $result = "" switch ($_.KeyValue) @@ -1659,32 +1770,32 @@ function Invoke-RemoteDesktopViewer } ) - $syncHash.VirtualDesktop.Picture.Add_MouseDown( + $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseDown( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Down" } ) - $syncHash.VirtualDesktop.Picture.Add_MouseUp( + $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseUp( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Up" } ) - $syncHash.VirtualDesktop.Picture.Add_MouseMove( + $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseMove( { Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Move" } ) - $syncHash.VirtualDesktop.Picture.Add_MouseWheel( + $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseWheel( { - $command = New-Object PSCustomObject -Property @{ - Id = [int][InputCommand]::MouseWheel + $aEvent = New-Object PSCustomObject -Property @{ + Id = [int][OutputEvent]::MouseWheel Delta = $_.Delta } - $session.ClientEvents.Writer.WriteLine(($command | ConvertTo-Json -Compress)) + $outputEventSyncHash.Writer.WriteLine(($aEvent | ConvertTo-Json -Compress)) } ) } @@ -1693,7 +1804,7 @@ function Invoke-RemoteDesktopViewer $param = New-Object -TypeName PSCustomObject -Property @{ Client = $session.ClientDesktop - SyncHash = $syncHash + VirtualDesktopSyncHash = $virtualDesktopSyncHash VirtualDesktopWidth = $virtualDesktopWidth VirtualDesktopHeight = $virtualDesktopHeight RequireResize = $requireResize @@ -1707,15 +1818,26 @@ function Invoke-RemoteDesktopViewer $param = New-Object -TypeName PSCustomObject -Property @{ Client = $session.ClientEvents - SyncHash = $syncHash + VirtualDesktopSyncHash = $virtualDesktopSyncHash } $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) $runspaces.Add($newRunspace) + + Write-Verbose "Create runspace for outgoing events..." + + $param = New-Object -TypeName PSCustomObject -Property @{ + OutputEventSyncHash = $outputEventSyncHash + SynchronizeClipboard = -not $DisableClipboard + } + + $newRunspace = (New-RunSpace -ScriptBlock $global:EgressEventScriptBlock -Param $param) + $runspaces.Add($newRunspace) + Write-Verbose "Done. Showing Virtual Desktop Form." - $null = $syncHash.VirtualDesktop.Form.ShowDialog() + $null = $virtualDesktopSyncHash.VirtualDesktop.Form.ShowDialog() } finally { @@ -1738,9 +1860,9 @@ function Invoke-RemoteDesktopViewer } $runspaces.Clear() - if ($syncHash.VirtualDesktop) + if ($virtualDesktopSyncHash.VirtualDesktop) { - $syncHash.VirtualDesktop.Form.Dispose() + $virtualDesktopSyncHash.VirtualDesktop.Form.Dispose() } } } diff --git a/TestViewer.ps1 b/TestViewer.ps1 index 89fc039..9bf1c7a 100644 --- a/TestViewer.ps1 +++ b/TestViewer.ps1 @@ -2,4 +2,5 @@ Write-Output "This script is used during development phase. Never run this scrip Invoke-Expression -Command (Get-Content "PowerRemoteDesktop_Viewer\PowerRemoteDesktop_Viewer.psm1" -Raw) -Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "127.0.0.1" \ No newline at end of file +Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "127.0.0.1" +#Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "172.31.115.183" \ No newline at end of file From 346a6c69ab8f522994a623cd29b127c496e72d5d Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 11:31:15 +0100 Subject: [PATCH 10/25] Readme updated --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7faaf9c..84f14aa 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ Supported options: * `TransportMode`: (Raw or Base64) Tell server how to send desktop image to remote viewer. Best method is Raw Bytes but I decided to keep the Base64 transport method as an alternative. * `TLSv1_3`: Define whether or not TLS v1.3 must be used for communication with Viewer. * `DisableVerbosity`: Disable verbosity (not recommended) -* `ImageQuality`: JPEG Compression level from 0 to 100. 0 = Lowest quality, 100 = Highest quality. +* `ImageQuality`: JPEG Compression level from 0 to 100. 0 = Lowest quality, 100 = Highest quality. If no certificate option is set, then a default X509 Certificate is generated and installed on local machine (Requires Administrative Privilege) @@ -275,22 +275,22 @@ Detail Fingerprint * Possibility to trust a server for current PowerShell Instance or persistantly using a local storage. * Possibility to manage trusted servers (List, Remove, Remove All) +#### Fingerprint Validation + +![Server Fingerprint Validation](Assets/server-fingerprint-validation.png) + ### XX January 2022 (1.0.5 Beta 6) * Multiple code improvements to support incoming / outgoing events. * Global cursor state synchronization implemented (Now virtual desktop mouse cursor is the same as remote server). * Password Generator algorithm fixed. * Virtual keyboard `]` and `)` correctly sent and interpreted. - -#### Fingerprint Validation - -![Server Fingerprint Validation](Assets/server-fingerprint-validation.png) +* Clipboard synchronization Viewer <-> Server added. ### List of ideas and TODO * 🟢 Support Password Protected external Certificates. * 🟢 Mutual Authentication for SSL/TLS (Client Certificate). -* 🟢 Synchronize Clipboard. * 🟠 Listen for local/remote screen resolution update event. * 🔴 Motion Update for Desktop Streaming (Only send and update changing parts of desktop). From 00f16a2bf8c3aac16e95edc4211e138e98908921 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 11:43:31 +0100 Subject: [PATCH 11/25] Fix: better clipboard sync behavior options --- .../PowerRemoteDesktop_Server.psm1 | 27 ++++++++++++++----- .../PowerRemoteDesktop_Viewer.psm1 | 26 +++++++++++++----- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index a6679bb..254b8d3 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -66,6 +66,12 @@ enum TransportMode { Base64 = 2 } +enum ClipboardMode { + Receive = 1 + Send = 2 + Both = 3 +} + function Write-Banner { <# @@ -1454,6 +1460,9 @@ $global:IngressEventScriptBlock = { # Clipboard Update "ClipboardUpdated" { + if ($Param.Clipboard -eq "Disabled" -or $Param.Clipboard -eq "Send") + { continue } + if (-not ($aEvent.PSobject.Properties.name -match "Text")) { continue } @@ -1650,7 +1659,7 @@ $global:EgressEventScriptBlock = { { $eventTriggered = $false - if ($Param.SynchronizeClipboard) + if ($Param.Clipboard -eq "Both" -or $Param.Clipboard -eq "Send") { # IDEA: Check for existing clipboard change event or implement a custom clipboard # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) @@ -1820,9 +1829,12 @@ function Invoke-RemoteDesktopServer 0 = Lowest quality. 100 = Highest quality. - .PARAMETER DisableClipboard - This option disable Clipboard synchronization with remote peer. By default Clipboard synchronization - is enabled and will synchronize only if both Viewer and Server have Clipboard synchronization enabled. + .PARAMETER Clipboard + Define clipboard synchronization rules: + - "Disabled": Completely disable clipboard synchronization. + - "Receive": Update local clipboard with remote clipboard only. + - "Send": Send local clipboard to remote peer. + - "Both": Clipboards are fully synchronized between Viewer and Server. #> param ( @@ -1841,7 +1853,7 @@ function Invoke-RemoteDesktopServer [int] $ImageQuality = 100, - [switch] $DisableClipboard + [ClipboardMode] $Clipboard ) @@ -1969,7 +1981,8 @@ function Invoke-RemoteDesktopServer # Create Runspace #2 for Incoming Events. $param = New-Object -TypeName PSCustomObject -Property @{ - Reader = $clientEvents.Reader + Reader = $clientEvents.Reader + Clipboard = $Clipboard } $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) @@ -1978,7 +1991,7 @@ function Invoke-RemoteDesktopServer # Create Runspace #3 for Outgoing Events $param = New-Object -TypeName PSCustomObject -Property @{ Writer = $clientEvents.Writer - SynchronizeClipboard = -not $DisableClipboard + Clipboard = $Clipboard } $newRunspace = (New-RunSpace -ScriptBlock $global:EgressEventScriptBlock -Param $param) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index cd2a4bd..dbe6a50 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -67,6 +67,13 @@ $global:EphemeralTrustedServers = @() $global:LocalStoragePath = "HKCU:\SOFTWARE\PowerRemoteDesktop_Viewer" $global:LocalStoragePath_TrustedServers = -join($global:LocalStoragePath, "\TrustedServers") +enum ClipboardMode { + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 +} + function Write-Banner { <# @@ -1152,6 +1159,9 @@ $global:IngressEventScriptBlock = { "ClipboardUpdated" { + if ($Param.Clipboard -eq "Disabled" -or $Param.Clipboard -eq "Send") + { continue } + if (-not ($aEvent.PSobject.Properties.name -match "Text")) { continue } @@ -1226,7 +1236,7 @@ $global:EgressEventScriptBlock = { { $eventTriggered = $false - if ($Param.SynchronizeClipboard) + if ($Param.Clipboard -eq "Both" -or $Param.Clipboard -eq "Send") { # IDEA: Check for existing clipboard change event or implement a custom clipboard # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) @@ -1401,9 +1411,12 @@ function Invoke-RemoteDesktopViewer .PARAMETER DisableVerbosity Disable verbosity (not recommended) - .PARAMETER DisableClipboard - This option disable Clipboard synchronization with remote peer. By default Clipboard synchronization - is enabled and will synchronize only if both Viewer and Server have Clipboard synchronization enabled. + .PARAMETER Clipboard + Define clipboard synchronization rules: + - "Disabled": Completely disable clipboard synchronization. + - "Receive": Update local clipboard with remote clipboard only. + - "Send": Send local clipboard to remote peer. + - "Both": Clipboards are fully synchronized between Viewer and Server. .EXAMPLE Invoke-RemoteDesktopViewer -ServerAddress "192.168.0.10" -ServerPort "2801" -SecurePassword (ConvertTo-SecureString -String "s3cr3t!" -AsPlainText -Force) @@ -1421,7 +1434,7 @@ function Invoke-RemoteDesktopViewer [String] $Password, [switch] $DisableVerbosity, - [switch] $DisableClipboard + [ClipboardMode] $Clipboard = "Both" ) [System.Collections.Generic.List[PSCustomObject]]$runspaces = @() @@ -1819,6 +1832,7 @@ function Invoke-RemoteDesktopViewer $param = New-Object -TypeName PSCustomObject -Property @{ Client = $session.ClientEvents VirtualDesktopSyncHash = $virtualDesktopSyncHash + Clipboard = $Clipboard } $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) @@ -1829,7 +1843,7 @@ function Invoke-RemoteDesktopViewer $param = New-Object -TypeName PSCustomObject -Property @{ OutputEventSyncHash = $outputEventSyncHash - SynchronizeClipboard = -not $DisableClipboard + Clipboard = $Clipboard } $newRunspace = (New-RunSpace -ScriptBlock $global:EgressEventScriptBlock -Param $param) From a6635fe188fdbbf4c8ea2d1123e503d82eb7f020 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 13:05:40 +0100 Subject: [PATCH 12/25] Fix: code refactoring, standardization --- .../PowerRemoteDesktop_Server.psm1 | 122 ++++++---------- .../PowerRemoteDesktop_Viewer.psm1 | 137 +++++++----------- TestViewer.ps1 | 2 +- 3 files changed, 96 insertions(+), 165 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 254b8d3..9f06e44 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -573,11 +573,6 @@ function Get-LocalMachineInformation } class ServerSession { - <# - .SYNOPSIS - PowerRemoteDesktop Session Class. - #> - [string] $Id = "" [string] $TiedAddress = "" [string] $Screen = "" @@ -601,19 +596,12 @@ class ServerSession { } } -class ClientIO { - <# - .SYNOPSIS - Extended version of TcpClient that automatically creates and releases - required streams with other useful methods. - - Supports SSL/TLS. - #> +class ClientIO { [System.Net.Sockets.TcpClient] $Client = $null [System.IO.StreamWriter] $Writer = $null [System.IO.StreamReader] $Reader = $null [System.Net.Security.SslStream] $SSLStream = $null - [TransportMode] $TransportMode = "Raw" + [TransportMode] $TransportMode ClientIO( @@ -863,17 +851,10 @@ class ClientIO { } class ServerIO { - <# - .SYNOPSIS - Extended version of TcpListener. - - Supports SSL/TLS. - #> - [string] $ListenAddress = "127.0.0.1" [int] $ListenPort = 2801 [bool] $TLSv1_3 = $false - [TransportMode] $TransportMode = "Raw" + [TransportMode] $TransportMode [string] $Password [System.Net.Sockets.TcpListener] $Server = $null @@ -1071,22 +1052,11 @@ class ServerIO { } $global:DesktopStreamScriptBlock = { - <# - .SYNOPSIS - Threaded code block to send updates of local desktop to remote peer. - - This code is expected to be run inside a new PowerShell Runspace. - - .PARAMETER Param.Client - A ClientIO Object containing an active connection. This is where, desktop updates will be - sent over network. - - .PARAMETER Param.ImageQuality - Desired desktop image compression level (0..100). - - .PARAMETER Param.Screen - An object destribing which screen (desktop monitor) to capture. - #> + + enum TransportMode { + Raw = 1 + Base64 = 2 + } function Get-DesktopImage { <# @@ -1188,10 +1158,10 @@ $global:DesktopStreamScriptBlock = { $imageStream.position = 0 try { - switch ($Param.Client.TransportMode) + switch ([TransportMode] $Param.Client.TransportMode) { - "Raw" - { + ([TransportMode]::Raw) + { $Param.Client.SSLStream.Write([BitConverter]::GetBytes([int32] $imageStream.Length) , 0, 4) # SizeOf(Int32) $totalBytesSent = 0 @@ -1222,8 +1192,8 @@ $global:DesktopStreamScriptBlock = { break } - "Base64" - { + ([TransportMode]::Base64) + { $Param.Client.Writer.WriteLine( [System.Convert]::ToBase64String($imageStream.ToArray()) ) @@ -1270,15 +1240,6 @@ $global:DesktopStreamScriptBlock = { } $global:IngressEventScriptBlock = { - <# - .SYNOPSIS - Threaded code block to receive remote orders (Ex: Keyboard Strokes, Mouse Clicks, Moves etc...) - - This code is expected to be run inside a new PowerShell Runspace. - - .PARAMETER Param.Client - A ClientIO Object with an established connection to remote peer. - #> Add-Type -MemberDefinition '[DllImport("user32.dll")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);[DllImport("user32.dll")] public static extern bool SetCursorPos(int X, int Y);' -Name U32 -Namespace W; @@ -1311,6 +1272,13 @@ $global:IngressEventScriptBlock = { Move = 0x3 } + enum ClipboardMode { + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 + } + class KeyboardSim { <# .SYNOPSIS @@ -1375,7 +1343,7 @@ $global:IngressEventScriptBlock = { switch ([InputEvent] $aEvent.Id) { # Keyboard Input Simulation - "Keyboard" + ([InputEvent]::Keyboard) { if (-not ($aEvent.PSobject.Properties.name -match "Keys")) { break } @@ -1385,7 +1353,7 @@ $global:IngressEventScriptBlock = { } # Mouse Move & Click Simulation - "MouseClickMove" + ([InputEvent]::MouseClickMove) { if (-not ($aEvent.PSobject.Properties.name -match "Type")) { break } @@ -1393,11 +1361,11 @@ $global:IngressEventScriptBlock = { switch ([MouseState] $aEvent.Type) { # Mouse Down/Up - {($_ -eq "Down") -or ($_ -eq "Up")} + {($_ -eq ([MouseState]::Down)) -or ($_ -eq ([MouseState]::Up))} { [W.U32]::SetCursorPos($aEvent.X, $aEvent.Y) - $down = ($_ -eq "Down") + $down = ($_ -eq ([MouseState]::Down)) $mouseCode = [int][MouseFlags]::MOUSEEVENTF_LEFTDOWN if (-not $down) @@ -1439,7 +1407,7 @@ $global:IngressEventScriptBlock = { } # Mouse Move - "Move" + ([MouseState]::Move) { [W.U32]::SetCursorPos($aEvent.X, $aEvent.Y) @@ -1451,16 +1419,16 @@ $global:IngressEventScriptBlock = { } # Mouse Wheel Simulation - "MouseWheel" { + ([InputEvent]::MouseWheel) { [W.U32]::mouse_event([int][MouseFlags]::MOUSEEVENTF_WHEEL, 0, 0, $aEvent.Delta, 0); break } # Clipboard Update - "ClipboardUpdated" + ([InputEvent]::ClipboardUpdated) { - if ($Param.Clipboard -eq "Disabled" -or $Param.Clipboard -eq "Send") + if ($Param.Clipboard -eq ([ClipboardMode]::Disabled) -or $Param.Clipboard -eq ([ClipboardMode]::Send)) { continue } if (-not ($aEvent.PSobject.Properties.name -match "Text")) @@ -1475,20 +1443,6 @@ $global:IngressEventScriptBlock = { } $global:EgressEventScriptBlock = { - <# - .SYNOPSIS - This script block is used to send events to remote peer. - - This code is expected to be run inside a new PowerShell Runspace. - - .DESCRIPTION - Supported Events: - - Global Mouse Cursor State - - Future Events to Support: - - Clipboard - - Receive File - #> enum CursorType { IDC_APPSTARTING = 32650 @@ -1515,6 +1469,13 @@ $global:EgressEventScriptBlock = { ClipboardUpdated = 0x3 } + enum ClipboardMode { + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 + } + function Initialize-Cursors { <# @@ -1659,7 +1620,7 @@ $global:EgressEventScriptBlock = { { $eventTriggered = $false - if ($Param.Clipboard -eq "Both" -or $Param.Clipboard -eq "Send") + if ($Param.Clipboard -eq ([ClipboardMode]::Both) -or $Param.Clipboard -eq ([ClipboardMode]::Send)) { # IDEA: Check for existing clipboard change event or implement a custom clipboard # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) @@ -1672,7 +1633,7 @@ $global:EgressEventScriptBlock = { Text = $currentClipboard } - if (-not (Send-Event -AEvent "ClipboardUpdated" -Data $data)) + if (-not (Send-Event -AEvent ([OutputEvent]::ClipboardUpdated) -Data $data)) { break } $HostSyncHash.ClipboardText = $currentClipboard @@ -1684,7 +1645,7 @@ $global:EgressEventScriptBlock = { # Send a Keep-Alive if during this second iteration nothing happened. if (-not $eventTriggered) { - if (-not (Send-Event -AEvent "KeepAlive")) + if (-not (Send-Event -AEvent ([OutputEvent]::KeepAlive))) { break } } } @@ -1705,7 +1666,7 @@ $global:EgressEventScriptBlock = { Cursor = $cursorTypeName } - if (-not (Send-Event -AEvent "MouseCursorUpdated" -Data $data)) + if (-not (Send-Event -AEvent ([OutputEvent]::MouseCursorUpdated) -Data $data)) { break } $oldCursor = $currentCursor @@ -1846,14 +1807,14 @@ function Invoke-RemoteDesktopServer # Or [string] $EncodedCertificate = "", # 2 - [TransportMode] $TransportMode = "Raw", + [TransportMode] $TransportMode = [TransportMode]::Raw, [switch] $TLSv1_3, [switch] $DisableVerbosity, [int] $ImageQuality = 100, - [ClipboardMode] $Clipboard + [ClipboardMode] $Clipboard = [ClipboardMode]::Both ) @@ -1931,6 +1892,7 @@ function Invoke-RemoteDesktopServer } } + Write-Verbose $TransportMode # Create new server and listen $server = [ServerIO]::New( $ListenAddress, diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index dbe6a50..e69cf5c 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -74,6 +74,11 @@ enum ClipboardMode { Both = 4 } +enum TransportMode { + Raw = 1 + Base64 = 2 +} + function Write-Banner { <# @@ -355,14 +360,6 @@ function Resolve-AuthenticationChallenge } class ClientIO { - <# - .SYNOPSIS - Extended version of TcpClient that automatically creates and releases - required streams with other useful methods. - - Supports SSL/TLS. - #> - [string] $RemoteAddress [int] $RemotePort [bool] $TLSv1_3 @@ -744,14 +741,6 @@ class ClientIO { class ViewerSession { - <# - .SYNOPSIS - Viewer Session Class - - .DESCRIPTION - Contains methods to handle from A to Z the Power Remote Desktop Protocol. - #> - [PSCustomObject] $SessionInformation = $null [string] $ServerAddress = "127.0.0.1" [string] $ServerPort = 2801 @@ -885,32 +874,7 @@ class ViewerSession } $global:VirtualDesktopUpdaterScriptBlock = { - <# - .SYNOPSIS - Threaded code block to receive updates of remote desktop and update Virtual Desktop Form. - - This code is expected to be run inside a new PowerShell Runspace. - - .PARAMETER Param.Client - A ClientIO Class instance for handling desktop updates. - - .PARAMETER Param.RequireResize - Tell if desktop image needs to be resized to fit viewer screen constrainsts. - - .PARAMETER Param.VirtualDesktopWidth - The integer value representing remote screen width. - - .PARAMETER Param.VirtualDesktopHeight - The integer value representing remote screen height. - - .PARAMETER Param.VirtualDesktopSyncHash - Synchronized Hashtable containing objects to "safe-thread" - - .PARAMETER Param.TransportMode - Define desktop image transport mode: Raw or Base64. This value is defined by server following - its options. - #> - + enum TransportMode { Raw = 1 Base64 = 2 @@ -984,8 +948,8 @@ $global:VirtualDesktopUpdaterScriptBlock = { { switch ([TransportMode] $Param.TransportMode) { - "Raw" - { + ([TransportMode]::Raw) + { $buffer = New-Object -TypeName byte[] -ArgumentList 4 # SizeOf(Int32) $Param.Client.SSLStream.Read($buffer, 0, $buffer.Length) @@ -1021,8 +985,8 @@ $global:VirtualDesktopUpdaterScriptBlock = { } until ($totalBytesRead -eq $totalBufferSize) } - "Base64" - { + ([TransportMode]::Base64) + { [byte[]] $buffer = [System.Convert]::FromBase64String(($Param.Client.Reader.ReadLine())) $stream.Write($buffer, 0, $buffer.Length) @@ -1062,15 +1026,6 @@ $global:VirtualDesktopUpdaterScriptBlock = { } $global:IngressEventScriptBlock = { - <# - .SYNOPSIS - Threaded code block to receive remote events. - - This code is expected to be run inside a new PowerShell Runspace. - - .PARAMETER Param.Client - A ClientIO Object with an established connection to remote server. - #> enum CursorType { IDC_APPSTARTING @@ -1097,6 +1052,13 @@ $global:IngressEventScriptBlock = { ClipboardUpdated = 0x3 } + enum ClipboardMode { + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 + } + while ($true) { try @@ -1119,7 +1081,7 @@ $global:IngressEventScriptBlock = { switch ([InputEvent] $aEvent.Id) { # Remote Global Mouse Cursor State Changed (Icon) - "MouseCursorUpdated" + ([InputEvent]::MouseCursorUpdated) { if (-not ($aEvent.PSobject.Properties.name -match "Cursor")) { continue } @@ -1128,20 +1090,20 @@ $global:IngressEventScriptBlock = { switch ([CursorType] $aEvent.Cursor) { - "IDC_APPSTARTING" { $cursor = [System.Windows.Forms.Cursors]::AppStarting } - "IDC_CROSS" { $cursor = [System.Windows.Forms.Cursors]::Cross } - "IDC_HAND" { $cursor = [System.Windows.Forms.Cursors]::Hand } - "IDC_HELP" { $cursor = [System.Windows.Forms.Cursors]::Help } - "IDC_IBEAM" { $cursor = [System.Windows.Forms.Cursors]::IBeam } - "IDC_NO" { $cursor = [System.Windows.Forms.Cursors]::No } - "IDC_SIZENESW" { $cursor = [System.Windows.Forms.Cursors]::SizeNESW } - "IDC_SIZENS" { $cursor = [System.Windows.Forms.Cursors]::SizeNS } - "IDC_SIZENWSE" { $cursor = [System.Windows.Forms.Cursors]::SizeNWSE } - "IDC_SIZEWE" { $cursor = [System.Windows.Forms.Cursors]::SizeWE } - "IDC_UPARROW" { $cursor = [System.Windows.Forms.Cursors]::UpArrow } - "IDC_WAIT" { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } - - {($_ -eq "IDC_SIZE") -or ($_ -eq "IDC_SIZEALL")} + ([CursorType]::IDC_APPSTARTING) { $cursor = [System.Windows.Forms.Cursors]::AppStarting } + ([CursorType]::IDC_CROSS) { $cursor = [System.Windows.Forms.Cursors]::Cross } + ([CursorType]::IDC_HAND) { $cursor = [System.Windows.Forms.Cursors]::Hand } + ([CursorType]::IDC_HELP) { $cursor = [System.Windows.Forms.Cursors]::Help } + ([CursorType]::IDC_IBEAM) { $cursor = [System.Windows.Forms.Cursors]::IBeam } + ([CursorType]::IDC_NO) { $cursor = [System.Windows.Forms.Cursors]::No } + ([CursorType]::IDC_SIZENESW) { $cursor = [System.Windows.Forms.Cursors]::SizeNESW } + ([CursorType]::IDC_SIZENS) { $cursor = [System.Windows.Forms.Cursors]::SizeNS } + ([CursorType]::IDC_SIZENWSE) { $cursor = [System.Windows.Forms.Cursors]::SizeNWSE } + ([CursorType]::IDC_SIZEWE) { $cursor = [System.Windows.Forms.Cursors]::SizeWE } + ([CursorType]::IDC_UPARROW) { $cursor = [System.Windows.Forms.Cursors]::UpArrow } + ([CursorType]::IDC_WAIT) { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } + + {($_ -eq ([CursorType]::IDC_SIZE)) -or ($_ -eq [CursorType]::(IDC_SIZEALL))} { $cursor = [System.Windows.Forms.Cursors]::SizeAll } @@ -1157,9 +1119,9 @@ $global:IngressEventScriptBlock = { break } - "ClipboardUpdated" + ([InputEvent]::ClipboardUpdated) { - if ($Param.Clipboard -eq "Disabled" -or $Param.Clipboard -eq "Send") + if ($Param.Clipboard -eq ([ClipboardMode]::Disabled) -or $Param.Clipboard -eq ([ClipboardMode]::Send)) { continue } if (-not ($aEvent.PSobject.Properties.name -match "Text")) @@ -1181,6 +1143,13 @@ $global:EgressEventScriptBlock = { ClipboardUpdated = 0x5 } + enum ClipboardMode { + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 + } + function Send-Event { <# @@ -1236,7 +1205,7 @@ $global:EgressEventScriptBlock = { { $eventTriggered = $false - if ($Param.Clipboard -eq "Both" -or $Param.Clipboard -eq "Send") + if ($Param.Clipboard -eq ([ClipboardMode]::Both) -or $Param.Clipboard -eq ([ClipboardMode]::Send)) { # IDEA: Check for existing clipboard change event or implement a custom clipboard # change detector using "WM_CLIPBOARDUPDATE" for example (WITHOUT INLINE C#) @@ -1249,7 +1218,7 @@ $global:EgressEventScriptBlock = { Text = $currentClipboard } - if (-not (Send-Event -AEvent "ClipboardUpdated" -Data $data)) + if (-not (Send-Event -AEvent ([OutputEvent]::ClipboardUpdated) -Data $data)) { break } $HostSyncHash.ClipboardText = $currentClipboard @@ -1261,7 +1230,7 @@ $global:EgressEventScriptBlock = { # Send a Keep-Alive if during this second iteration nothing happened. if (-not $eventTriggered) { - if (-not (Send-Event -AEvent "KeepAlive")) + if (-not (Send-Event -AEvent ([OutputEvent]::KeepAlive))) { break } } } @@ -1434,7 +1403,7 @@ function Invoke-RemoteDesktopViewer [String] $Password, [switch] $DisableVerbosity, - [ClipboardMode] $Clipboard = "Both" + [ClipboardMode] $Clipboard = [ClipboardMode]::Both ) [System.Collections.Generic.List[PSCustomObject]]$runspaces = @() @@ -1604,11 +1573,11 @@ function Invoke-RemoteDesktopViewer ) return New-Object PSCustomObject -Property @{ - Id = [int][OutputEvent]::MouseClickMove + Id = [OutputEvent]::MouseClickMove X = $X Y = $Y Button = $Button - Type = [int]$Type + Type = $Type } } @@ -1632,7 +1601,7 @@ function Invoke-RemoteDesktopViewer ) return New-Object PSCustomObject -Property @{ - Id = [int][OutputEvent]::Keyboard + Id = [OutputEvent]::Keyboard Keys = $Keys } } @@ -1785,26 +1754,26 @@ function Invoke-RemoteDesktopViewer $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseDown( { - Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Down" + Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type ([MouseState]::Down) } ) $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseUp( { - Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Up" + Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type ([MouseState]::Up) } ) $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseMove( { - Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type "Move" + Send-VirtualMouse -X $_.X -Y $_.Y -Button $_.Button -Type ([MouseState]::Move) } ) $virtualDesktopSyncHash.VirtualDesktop.Picture.Add_MouseWheel( { $aEvent = New-Object PSCustomObject -Property @{ - Id = [int][OutputEvent]::MouseWheel + Id = [OutputEvent]::MouseWheel Delta = $_.Delta } @@ -1821,7 +1790,7 @@ function Invoke-RemoteDesktopViewer VirtualDesktopWidth = $virtualDesktopWidth VirtualDesktopHeight = $virtualDesktopHeight RequireResize = $requireResize - TransportMode = $session.SessionInformation.TransportMode + TransportMode = [TransportMode] $session.SessionInformation.TransportMode } $newRunspace = (New-RunSpace -ScriptBlock $global:VirtualDesktopUpdaterScriptBlock -Param $param) diff --git a/TestViewer.ps1 b/TestViewer.ps1 index 9bf1c7a..956f593 100644 --- a/TestViewer.ps1 +++ b/TestViewer.ps1 @@ -2,5 +2,5 @@ Write-Output "This script is used during development phase. Never run this scrip Invoke-Expression -Command (Get-Content "PowerRemoteDesktop_Viewer\PowerRemoteDesktop_Viewer.psm1" -Raw) -Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "127.0.0.1" +Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "127.0.0.1" #Invoke-RemoteDesktopViewer -SecurePassword (ConvertTo-SecureString -String "Jade@123@Pwd" -AsPlainText -Force) -ServerAddress "172.31.115.183" \ No newline at end of file From 3f5ff4f0ec582914a466b569b4d5c0f3a209491d Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 13:19:27 +0100 Subject: [PATCH 13/25] Readme updated --- README.md | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 84f14aa..cdb0e92 100644 --- a/README.md +++ b/README.md @@ -156,12 +156,16 @@ Call `Invoke-RemoteDesktopViewer` Supported options: -* `ServerAddress`: Remote Server Address. -* `ServerPort`: Remote Server Port. -* `DisableInputControl`: If set to $true, this option disable control events on form (Mouse Clicks, Moves and Keyboard). This option is generally to true during development when connecting to local machine to avoid funny things. -* `Password`: Password used during server authentication. -* `DisableVerbosity`: Disable verbosity (not recommended) -* `TLSv1_3`: Define whether or not client must use SSL/TLS v1.3 to communicate with remote server. +* `ServerAddress` (Default: `127.0.0.1`): Remote server host/address. +* `ServerPort` (Default: `2801`): Remote server port. +* `Password` (Mandatory): Password used for server authentication. +* `DisableVerbosity` (Default: None): If this switch is present, verbosity will be hidden from console. +* `TLSv1_3` (Default: None): If this switch is present, viewer will use TLS v1.3 instead of TLS v1.2. Use this option only if both viewer and server support TLS v1.3. +* `Clipboard` (Default: `Both`): Define clipboard synchronization rules: + * `Disabled`: Completely disable clipboard synchronization. + * `Receive`: Update local clipboard with remote clipboard only. + * `Send`: Send local clipboard to remote peer. + * `Both`: Clipboards are fully synchronized between Viewer and Server. #### Example @@ -175,15 +179,26 @@ Call `Invoke-RemoteDesktopServer` Supported options: -* `ListenAddress`: Define in which interface to listen for new viewer. -* `ListenPort`: Define in which port to listen for new viewer. -* `Password`: Define password used during authentication process. -* `CertificateFile`: A valid X509 Certificate (With Private Key) File. If set, this parameter is prioritize. -* `EncodedCertificate`: A valid X509 Certificate (With Private Key) encoded as a Base64 String. -* `TransportMode`: (Raw or Base64) Tell server how to send desktop image to remote viewer. Best method is Raw Bytes but I decided to keep the Base64 transport method as an alternative. -* `TLSv1_3`: Define whether or not TLS v1.3 must be used for communication with Viewer. -* `DisableVerbosity`: Disable verbosity (not recommended) -* `ImageQuality`: JPEG Compression level from 0 to 100. 0 = Lowest quality, 100 = Highest quality. +* `ListenAddress` (Default: `0.0.0.0`): Define in which interface to listen for new viewer. + * `0.0.0.0` : All interfaces + * `127.0.0.1`: Localhost interface + * `x.x.x.x`: Specific interface (Replace `x` with a valid network address) +* `ListenPort` (Default: `2801`): Define in which port to listen for new viewer. +* `Password` (**Mandatory**): Define password used during authentication process. +* `CertificateFile` (Default: **None**): A valid X509 Certificate (With Private Key) File. If set, this parameter is prioritize. +* `EncodedCertificate` (Default: **None**): A valid X509 Certificate (With Private Key) encoded as a Base64 String. +* `TransportMode`(Default: `Raw`): Define which method to use to transfer streams. + * `Raw`: Transfer streams as raw bytes (recommended) + * `Base64`: Transfer streams as base64 encoded string +* `TLSv1_3` (Default: None): If this switch is present, server will use TLS v1.3 instead of TLS v1.2. Use this option only if both viewer and server support TLS v1.3. +* `DisableVerbosity` (Default: None): If this switch is present, verbosity will be hidden from console. +* `ImageQuality` (Default: `100`): JPEG Compression level from 0 to 100. 0 = Lowest quality, 100 = Highest quality. +* `Clipboard` (Default: `Both`): Define clipboard synchronization rules: + * `Disabled`: Completely disable clipboard synchronization. + * `Receive`: Update local clipboard with remote clipboard only. + * `Send`: Send local clipboard to remote peer. + * `Both`: Clipboards are fully synchronized between Viewer and Server. +* `OnlyView` (Default: None): If this switch is present, viewer wont be able to take the control of mouse (moves, clicks, wheel) and keyboard. Useful for view session only. If no certificate option is set, then a default X509 Certificate is generated and installed on local machine (Requires Administrative Privilege) From a6987a93d79d91ece897620915ecac026468c0aa Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 13:53:28 +0100 Subject: [PATCH 14/25] Feat: server supports desktop streaming only. --- .../PowerRemoteDesktop_Server.psm1 | 51 ++++++++++++++----- .../PowerRemoteDesktop_Viewer.psm1 | 18 +++---- README.md | 2 +- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 9f06e44..e8cf0b2 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -767,7 +767,7 @@ class ClientIO { } } - [ServerSession]Hello() { + [ServerSession]Hello([bool] $ViewOnly) { <# .SYNOPSIS Initialize a new session with remote Viewer. @@ -786,7 +786,8 @@ class ClientIO { $sessionInformation | Add-Member -MemberType NoteProperty -Name "TransportMode" -Value $this.TransportMode $sessionInformation | Add-Member -MemberType NoteProperty -Name "SessionId" -Value $session.Id - $sessionInformation | Add-Member -MemberType NoteProperty -Name "Version" -Value $global:PowerRemoteDesktopVersion + $sessionInformation | Add-Member -MemberType NoteProperty -Name "Version" -Value $global:PowerRemoteDesktopVersion + $sessionInformation | Add-Member -MemberType NoteProperty -Name "ViewOnly" -Value $ViewOnly Write-Verbose "Sending Session Information with Local System Information..." @@ -856,6 +857,7 @@ class ServerIO { [bool] $TLSv1_3 = $false [TransportMode] $TransportMode [string] $Password + [bool] $ViewOnly = $false [System.Net.Sockets.TcpListener] $Server = $null [System.IO.StreamWriter] $Writer = $null @@ -885,10 +887,13 @@ class ServerIO { X509 Certificate used for SSL/TLS encryption tunnel. .PARAMETER TLSv1_3 - Define whether or not SSL/TLS v1.3 must be used. + Define if TLS v1.3 must be used. .PARAMETER TransportMode - Define transport method for streams (Base64 or Raw) + Define stream transport method. + + .PARAMETER ViewOnly + Define if mouse / keyboard is authorized. #> [string] $ListenAddress, @@ -896,7 +901,8 @@ class ServerIO { [string] $Password, [TransportMode] $TransportMode, [System.Security.Cryptography.X509Certificates.X509Certificate2] $Certificate, - [bool] $TLSv1_3 + [bool] $TLSv1_3, + [bool] $ViewOnly ) { # Check again in current class just in case. if (-not (Test-PasswordComplexity -PasswordCandidate $Password)) @@ -909,6 +915,7 @@ class ServerIO { $this.TLSv1_3 = $TLSv1_3 $this.Password = $Password $this.TransportMode = $TransportMode + $this.ViewOnly = $ViewOnly if (-not $Certificate) { @@ -1015,7 +1022,7 @@ class ServerIO { else { # STEP 2 : Create new Session - $this.Session = $client.Hello() + $this.Session = $client.Hello($this.ViewOnly) } } catch @@ -1344,7 +1351,10 @@ $global:IngressEventScriptBlock = { { # Keyboard Input Simulation ([InputEvent]::Keyboard) - { + { + if ($Param.ViewOnly) + { continue } + if (-not ($aEvent.PSobject.Properties.name -match "Keys")) { break } @@ -1355,6 +1365,9 @@ $global:IngressEventScriptBlock = { # Mouse Move & Click Simulation ([InputEvent]::MouseClickMove) { + if ($Param.ViewOnly) + { continue } + if (-not ($aEvent.PSobject.Properties.name -match "Type")) { break } @@ -1409,6 +1422,9 @@ $global:IngressEventScriptBlock = { # Mouse Move ([MouseState]::Move) { + if ($Param.ViewOnly) + { continue } + [W.U32]::SetCursorPos($aEvent.X, $aEvent.Y) break @@ -1420,6 +1436,9 @@ $global:IngressEventScriptBlock = { # Mouse Wheel Simulation ([InputEvent]::MouseWheel) { + if ($Param.ViewOnly) + { continue } + [W.U32]::mouse_event([int][MouseFlags]::MOUSEEVENTF_WHEEL, 0, 0, $aEvent.Delta, 0); break @@ -1796,6 +1815,10 @@ function Invoke-RemoteDesktopServer - "Receive": Update local clipboard with remote clipboard only. - "Send": Send local clipboard to remote peer. - "Both": Clipboards are fully synchronized between Viewer and Server. + + .PARAMETER ViewOnly (Default: None) + If this switch is present, viewer wont be able to take the control of mouse (moves, clicks, wheel) and keyboard. + Useful for view session only. #> param ( @@ -1808,13 +1831,11 @@ function Invoke-RemoteDesktopServer [string] $EncodedCertificate = "", # 2 [TransportMode] $TransportMode = [TransportMode]::Raw, - [switch] $TLSv1_3, - + [switch] $TLSv1_3, [switch] $DisableVerbosity, - [int] $ImageQuality = 100, - - [ClipboardMode] $Clipboard = [ClipboardMode]::Both + [ClipboardMode] $Clipboard = [ClipboardMode]::Both, + [switch] $ViewOnly ) @@ -1900,7 +1921,8 @@ function Invoke-RemoteDesktopServer $Password, $TransportMode, $Certificate, - $TLSv1_3 + $TLSv1_3, + $ViewOnly ) $server.Listen() @@ -1944,7 +1966,8 @@ function Invoke-RemoteDesktopServer # Create Runspace #2 for Incoming Events. $param = New-Object -TypeName PSCustomObject -Property @{ Reader = $clientEvents.Reader - Clipboard = $Clipboard + Clipboard = $Clipboard + ViewOnly = $ViewOnly } $newRunspace = (New-RunSpace -ScriptBlock $global:IngressEventScriptBlock -Param $param) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index e69cf5c..1ca072a 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -620,7 +620,8 @@ class ClientIO { (-not ($sessionInformation.PSobject.Properties.name -contains "SessionId")) -or (-not ($sessionInformation.PSobject.Properties.name -contains "TransportMode")) -or (-not ($sessionInformation.PSobject.Properties.name -contains "Version")) -or - (-not ($sessionInformation.PSobject.Properties.name -contains "Screens")) + (-not ($sessionInformation.PSobject.Properties.name -contains "Screens")) -or + (-not ($sessionInformation.PSobject.Properties.name -contains "ViewOnly")) ) { throw "Invalid session information data." @@ -634,6 +635,11 @@ class ClientIO { You cannot use two different version between Viewer and Server." } + if ($sessionInformation.ViewOnly) + { + Write-Host "You are only authorized to view remote desktop (Mouse / Keyboard not authorized)" -ForegroundColor Cyan + } + # Check if remote server have multiple screens $selectedScreen = $null @@ -1357,11 +1363,6 @@ function Invoke-RemoteDesktopViewer .PARAMETER ServerPort Remote Server Port. - .PARAMETER DisableInputControl - If set, this option disables control events on form (Mouse Clicks, Moves and Keyboard) - This option is generally set to true during development when connecting to local machine to avoid funny - things. - .PARAMETER SecurePassword SecureString Password object used to authenticate with remote server (Recommended) @@ -1395,8 +1396,7 @@ function Invoke-RemoteDesktopViewer #> param ( [string] $ServerAddress = "127.0.0.1", - [int] $ServerPort = 2801, - [switch] $DisableInputControl, + [int] $ServerPort = 2801, [switch] $TLSv1_3, [SecureString] $SecurePassword, @@ -1523,7 +1523,7 @@ function Invoke-RemoteDesktopViewer }) # WinForms Events (If enabled, I recommend to disable control when testing on local machine to avoid funny things) - if (-not $DisableInputControl) + if (-not $session.SessionInformation.ViewOnly) { enum OutputEvent { Keyboard = 0x1 diff --git a/README.md b/README.md index cdb0e92..bbe96c6 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ Supported options: * `Receive`: Update local clipboard with remote clipboard only. * `Send`: Send local clipboard to remote peer. * `Both`: Clipboards are fully synchronized between Viewer and Server. -* `OnlyView` (Default: None): If this switch is present, viewer wont be able to take the control of mouse (moves, clicks, wheel) and keyboard. Useful for view session only. +* `ViewOnly` (Default: None): If this switch is present, viewer wont be able to take the control of mouse (moves, clicks, wheel) and keyboard. Useful for view session only. If no certificate option is set, then a default X509 Certificate is generated and installed on local machine (Requires Administrative Privilege) From 5c40716f104c8f544da4213d0dbce6df2a915e3b Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 13:54:26 +0100 Subject: [PATCH 15/25] Readme updated --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bbe96c6..02ffa33 100644 --- a/README.md +++ b/README.md @@ -294,13 +294,14 @@ Detail Fingerprint ![Server Fingerprint Validation](Assets/server-fingerprint-validation.png) -### XX January 2022 (1.0.5 Beta 6) +### 18 January 2022 (1.0.5 Beta 6) * Multiple code improvements to support incoming / outgoing events. * Global cursor state synchronization implemented (Now virtual desktop mouse cursor is the same as remote server). * Password Generator algorithm fixed. * Virtual keyboard `]` and `)` correctly sent and interpreted. * Clipboard synchronization Viewer <-> Server added. +* Server support a new option to only show desktop (Mouse moves, clicks, wheel and keyboard control is disabled in this mode). ### List of ideas and TODO From b5c2fd2107d80402e48bcbf826eb7c469bab3adb Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 13:59:34 +0100 Subject: [PATCH 16/25] Fix: version updated 1.0.5 b6 --- .../PowerRemoteDesktop_Server.psd1 | Bin 8388 -> 8388 bytes .../PowerRemoteDesktop_Server.psm1 | 4 ++-- .../PowerRemoteDesktop_Viewer.psd1 | Bin 8458 -> 8458 bytes .../PowerRemoteDesktop_Viewer.psm1 | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psd1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psd1 index 95aa3c2d9707f56c08153a4291ba23e7d9a9391e..95fd3918326a4fdde985a7df836215a2e41418f5 100644 GIT binary patch delta 25 hcmX@&c*Jo-5fh{7=3*v!8Ah|ohBCsNm&wU70RVAF2Z;ax delta 25 hcmX@&c*Jo-5fh`y=3*v!8Aj8|hBCsNm&wU70RV9<2ZsOv diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index e8cf0b2..54c7353 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -54,7 +54,7 @@ Add-Type -Assembly System.Windows.Forms Add-Type -Assembly System.Drawing Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool SetProcessDPIAware();[DllImport("User32.dll")] public static extern int LoadCursorA(int hInstance, int lpCursorName);[DllImport("User32.dll")] public static extern bool GetCursorInfo(IntPtr pci);' -Name User32 -Namespace W; -$global:PowerRemoteDesktopVersion = "1.0.4.beta.5" +$global:PowerRemoteDesktopVersion = "1.0.5.beta.6" $global:HostSyncHash = [HashTable]::Synchronized(@{ host = $host @@ -1438,7 +1438,7 @@ $global:IngressEventScriptBlock = { ([InputEvent]::MouseWheel) { if ($Param.ViewOnly) { continue } - + [W.U32]::mouse_event([int][MouseFlags]::MOUSEEVENTF_WHEEL, 0, 0, $aEvent.Delta, 0); break diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psd1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psd1 index 03f6f4d19f86ddb8559259b4910b96a64585d48e..6649e7bb4dcabd35804d42fb090f690f2a529873 100644 GIT binary patch delta 21 ccmeBj>T=pp#KdU2xtJ+chS6;EO*um*08iisumAu6 delta 21 ccmeBj>T=pp#KdT_xtJ+chS7BMO*um*08h;Zt^fc4 diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 1ca072a..f5ad63f 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -53,7 +53,7 @@ Add-Type -Assembly System.Windows.Forms Add-Type -MemberDefinition '[DllImport("User32.dll")] public static extern bool SetProcessDPIAware();' -Name User32 -Namespace W; -$global:PowerRemoteDesktopVersion = "1.0.4.beta.5" +$global:PowerRemoteDesktopVersion = "1.0.5.beta.6" $global:HostSyncHash = [HashTable]::Synchronized(@{ host = $host From 984840f8bdb7f749f668a08bc02a551a3ed9c38b Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 14:32:10 +0100 Subject: [PATCH 17/25] Readme Updated --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 02ffa33..ac81865 100644 --- a/README.md +++ b/README.md @@ -19,18 +19,21 @@ Tested on: ## Features -* Captures Remote Desktop Image with support of HDPI. -* Supports Mouse Click (Left, Right, Middle), Mouse Moves and Mouse Wheel. -* Supports Keystrokes Simulation (Sending remote key strokes) and few useful shortcuts. -* Traffic is encrypted by default using TLSv1.2 and optionnally using TLSv1.3 (TLS 1.3 might not be possible on older systems). -* Challenge-Based Password Authentication to protect access to server. -* Support custom SSL/TLS Certificate (File or Encoded in base64). If not specified, a default one is generated and installed on local machine (requires Administrator privileges) +* Remote Desktop Streaming with support of HDPI and Scaling. +* Remote Control: Mouse (Moves, Clicks, Wheel) and Key Strokes (Keyboard) +* **Secure**: Network traffic is encrypted using TLSv1.2 or 1.3. Access to server is granted via a challenge-based authentication mechanism (using user defined complex password). +* Network traffic encryption is using whether a default X509 Certificate (Requires Administrator) or your custom X509 Certificate. +* Server certificate fingerprint validation supported and optionally persistent between sessions. +* Clipboard text synchronization between Viewer and Server. +* Mouse cursor icon state is synchronized between Viewer (Virtual Desktop) and Server. +* Multi-Screen (Monitor) support. If remote computer have more than one desktop screen, you can choose which desktop screen to capture. +* View Only mode for demonstration. You can disable remote control abilities and just show your screen to remote peer. ## What is still beta -I consider this version as stable but I want to do more tests and have more feedback. +Version 1.0.5 Beta 6 is the last beta before final version. -I also want to implement few additional features before releasing the version 1. +No more features will be added in 1.x version, just optimization and bug fix. ## Installation From b837bc6b7d33aa4582cebb984243ac8e497ec788 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 14:35:37 +0100 Subject: [PATCH 18/25] Module files header updated --- PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 | 2 -- PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 | 4 +--- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 54c7353..7c42a1f 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -1,8 +1,6 @@ <#------------------------------------------------------------------------------- Power Remote Desktop - Version 1.0 beta 2 - REL: January 2022. In loving memory of my father. Thanks for all you've done. diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index f5ad63f..89dbf01 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -1,9 +1,7 @@ <#------------------------------------------------------------------------------- Power Remote Desktop - Version 1.0 beta 2 - REL: January 2022. - + In loving memory of my father. Thanks for all you've done. you will remain in my heart forever. From 56d6ab91fa06920a351fe6f4dd2cb23232685531 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 15:35:03 +0100 Subject: [PATCH 19/25] Fix: clipboard sync -> server issue --- .../PowerRemoteDesktop_Server.psm1 | 12 ++++++------ .../PowerRemoteDesktop_Viewer.psm1 | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index 7c42a1f..f303779 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -65,9 +65,10 @@ enum TransportMode { } enum ClipboardMode { - Receive = 1 - Send = 2 - Both = 3 + Disabled = 1 + Receive = 2 + Send = 3 + Both = 4 } function Write-Banner @@ -1320,14 +1321,13 @@ $global:IngressEventScriptBlock = { } } - $keyboardSim = [KeyboardSim]::New() while ($true) { try { - $jsonEvent = $Param.Reader.ReadLine() + $jsonEvent = $Param.Reader.ReadLine() } catch { @@ -1444,7 +1444,7 @@ $global:IngressEventScriptBlock = { # Clipboard Update ([InputEvent]::ClipboardUpdated) - { + { if ($Param.Clipboard -eq ([ClipboardMode]::Disabled) -or $Param.Clipboard -eq ([ClipboardMode]::Send)) { continue } diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 89dbf01..ba4b860 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -1517,7 +1517,7 @@ function Invoke-RemoteDesktopViewer # Create a thread-safe hashtable to send events to remote server. $outputEventSyncHash = [HashTable]::Synchronized(@{ - Writer = $session.ClientEvents.Writer + Writer = $session.ClientEvents.Writer }) # WinForms Events (If enabled, I recommend to disable control when testing on local machine to avoid funny things) From 23b08929d1514e7e61d25d91dda49eeff0f749fb Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 18:35:06 +0100 Subject: [PATCH 20/25] Fix: deprecated method for importing certificated replaced with new version --- PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 index f303779..d53614f 100644 --- a/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 +++ b/PowerRemoteDesktop_Server/PowerRemoteDesktop_Server.psm1 @@ -1903,11 +1903,11 @@ function Invoke-RemoteDesktopServer $Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 if ($CertificateFile) { - $Certificate.Import($CertificateFile) + $Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $CertificateFile } else { - $Certificate.Import([Convert]::FromBase64String($EncodedCertificate)) + $Certificate = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 @(, [Convert]::FromBase64String($EncodedCertificate)) } } From ba6c5530a56d7d4f7aff7502a702d18f86ed0be6 Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 19:32:42 +0100 Subject: [PATCH 21/25] Fix: SizeAll/Size mouse cursor --- PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index ba4b860..1000bf1 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -1080,8 +1080,8 @@ $global:IngressEventScriptBlock = { { continue } if (-not ($aEvent.PSobject.Properties.name -match "Id")) - { continue } - + { continue } + switch ([InputEvent] $aEvent.Id) { # Remote Global Mouse Cursor State Changed (Icon) @@ -1090,6 +1090,8 @@ $global:IngressEventScriptBlock = { if (-not ($aEvent.PSobject.Properties.name -match "Cursor")) { continue } + $HostSyncHash.Host.Ui.WriteLine($aEvent.Cursor) + $cursor = [System.Windows.Forms.Cursors]::Arrow switch ([CursorType] $aEvent.Cursor) @@ -1107,7 +1109,7 @@ $global:IngressEventScriptBlock = { ([CursorType]::IDC_UPARROW) { $cursor = [System.Windows.Forms.Cursors]::UpArrow } ([CursorType]::IDC_WAIT) { $cursor = [System.Windows.Forms.Cursors]::WaitCursor } - {($_ -eq ([CursorType]::IDC_SIZE)) -or ($_ -eq [CursorType]::(IDC_SIZEALL))} + {( $_ -eq ([CursorType]::IDC_SIZE) -or $_ -eq ([CursorType]::IDC_SIZEALL) )} { $cursor = [System.Windows.Forms.Cursors]::SizeAll } From b6c48d2720e5fba06f7afec494d1212d926f186c Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 19:35:40 +0100 Subject: [PATCH 22/25] Fix: code refactor --- PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 index 1000bf1..fa051eb 100644 --- a/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 +++ b/PowerRemoteDesktop_Viewer/PowerRemoteDesktop_Viewer.psm1 @@ -1088,9 +1088,7 @@ $global:IngressEventScriptBlock = { ([InputEvent]::MouseCursorUpdated) { if (-not ($aEvent.PSobject.Properties.name -match "Cursor")) - { continue } - - $HostSyncHash.Host.Ui.WriteLine($aEvent.Cursor) + { continue } $cursor = [System.Windows.Forms.Cursors]::Arrow From be25409c7054dac96e09e799e62f21eb4a1954df Mon Sep 17 00:00:00 2001 From: Jean-Pierre LESUEUR Date: Tue, 18 Jan 2022 19:54:37 +0100 Subject: [PATCH 23/25] Demo video added --- Assets/demo.mp4 | Bin 0 -> 11249872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Assets/demo.mp4 diff --git a/Assets/demo.mp4 b/Assets/demo.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c0490bbf6b29f1054d6604e701422ec210689e55 GIT binary patch literal 11249872 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 <9C;n=s`(OPp3axR4+=8<0y{j57?(0AaIF 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

Uka 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⁢ksuNw~{LUU(< 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 z z-RZXd&r>T{c+QgGcN5=u)+b4aj_L;>P z4Laz{uT-yyA1zKza18pIULnnNzhciy?#IH)**2R?Y5fw>qnETMHZ(<{lF6c_U3%3> zt}TBZa%HG8DBP;AQ0&2zWXmg=S)MUTI-5-?ehuG62ph$9@V8N?w8Q?m10NLR9L1F$ zYAw8*DF1qv4ZH}epEvVkbFtyxJ_abg>UAOO@D3-(0v?mg*(tb)tnl<^Ydv zv{+pxt~!hNVs|dGN#orEBn1Ze)|owfJth!xK2ZwUq;iK19T8n=3q7_ojEVKaVyEZx zLYl~GKX$nV;AEMHZ`LKFcf7d2zILpjjr(r1? zjhD>-W^iVA!5f92P4Hsl8PkJv^-imrl1W-Bh;=hx29Ov40E)^&*fh%IasB5iqL_pH}^X7DZwz%Nf%PS!Y^IKmh}aw zCCay{QevhE!bT2^T6FOqQ=-FCdFusE^3hL;UBCD*5Gp1pKkUqmKof-8RR%Fw>jws6 za%l@h(Q@eKEx3fJ3Zgb>7DyBf9kXOj;*u91Ga{v>Od7YWZXVb}(!GclGdH%l@ggkc zG~WI|&0Q}`&bzPxswB1eN1ccJS*}5KXbhqFNR)$-z*KitU2@ zB@4AwqPT?W5wqBWGXgAe`0@nR95 zuOFBMV^q;m?@22(NvR3Q^WE8~$hC!E@>`qh%-W-h*^Fz!^UIzVwtcA%`FAW z&p4P5NaEMOw*C0^V3;+9sd8L>qkxGzi7$Iu%W~ukG(hUQIKC{WrNDje6igND<_BJ! z65?!CYf+RQHRc@kkBL17PkXty=HQYp#YB(l6A)nCzrZmFZ?8uj$fjdt>_C`H-03LK zFk+s+*(n}x?l(1OM)4W>i8|ym(j#Mv>!#q9lW$dZ6YL!GBojIKRejapuGQiyIWU39 zZDM&$Xk!<``X)ul-wtulxABrQJHH-N4b2;{tm(NxDOFw! zh9Xk!IVc_uk|5efvP*c~B(4VeUOP-nq^|yirEQip+odJLk~;^!ND+?JfAwf;5oDqH zCw}qU=VEp3lkqP?*n524L7jjmlBh;jRbB(75a}rS#-S9#HTRX|qw4*%S(?$LZtcl~ z!vn%^Q$+k$sd{25VsocPNB;J87V}-$l?Al4*fzBP=Nj43WJwK53N4pYdIOnOrO&mX zQo&IlA5{70;DT;VUx%q5kKby$P$VaOnaO}J2jeh|7gj;1C5HJIcR5e13q@qPNU)lC zHS@b4>71b&}*K zO?bTs3Ojy}_uae%-{N>)M-5H}uU6RwZ5(Y$?n_q)Gc$k%UoP^B2yvlvB_7U+iD|vd z3eGvcDyv2#rK?rvM(5ItJSJWTu_4^Q%pC1m$oDIustG96FPa* zr#IU{XxY5A>7V`=T*75(=(Ib`9bGR>)N|wcvHkIPO;7Qsfg`$}B&mggD4hQ{*&abkN02Pvt2!c~va{EwiS@>hahZ1+> zi$9QkMI++NN?I_#x%Qyk!aIUlo>}=kr@^m~0&4j^4t?gfl74mv1C1jBTP%;J%6}7( z+wZ3(s0a#Xy_tz|hvX$l)bd0>_B`nzOYTz^wyl426>v2C{&R1EG}hf8JH)Sw3R#LI zW$Stz%l0-8G;ClbRkiU+^0SdmB`XzwCWBwKGks*~OD~^U5Lu!ny-mbOub>q82Zu-8YCcwKyp(&*O1fTqho~T zOUTKsu7zm9DxL+^Y1R0TaqB7kdBa0m;@8NPbJ304=BA?C7m&4?OvUafuvCh-T4+;0 z+Z7$3(^bE>71WDIiV1Od6rv6h^VxUlv(DC(0m7;n*M*FL(7+A0xs+;=c8vnD2_$!Q z&94Lc3*6pO+Phjd>8~jE7w=07@EF?HK5S@GMNK{TG+)mSR@EjwQd8;F7(EA}m(SRD zb>+Q1m1QT>cbS-7QID9l>nGQuEO&zN1zvXpCTA1*n#(?C>FUD<8Cj`=nn3o6vf;>m zH`9#mVm-rfu_}?=I@9@V?+4&k(XDKwH8;*1EYcDA3lzMT$nez%?FF#LGLj|HoZyc# zi*t?iW2ZMocM(z(Stgk*O8peq_8cc~Oi1H?n>Ms599U>_>kq{dlr9p4HXK|zk1ICC zud9;re_^237v{~lzfJbhJZ2W1y^&XMeT-SSp1j1e1vSLe#G5CZ6gpp4qh&~(0y*3d zEr@3?(H*Fs)ZicgK}np=nwUBux{5IM7?g{Ba7uUzRELaIaHXm3oLhPussLk~*jNaz0*sS&bsoqm^tm58vX&hDq@K*C zUv=WS1-4#}(Aq!RRN@kbRdIgjeOO=r%=jF;w`KnL67!71YEj)H?D&LYAsD+1*m+vh zq9^l%yl#=SCdnPTAJ~jKLk@M3_v{8f1YCEWTmvk2WepVR&^KIUDe#+Z{(jDD)bp+{Bqn^JSrPS?`IbAhvw1XD352(6>#`XbRVz5qg$pl*V~P8s-o?_> z3Gp{8ktrD36`)Elk~hT;t9G(lZ_0o=m99R7_6sk8p2GWq@ii|@ACc@)vTdJUto-$= zB0Q8#N)E1#h4622n%J5(>Fwp(3zXO~PYH}Sh5575W$6xPjYAF>lLU_xf*bHKvh}9`O z;(zkEK4?qOU`fRjqSp79z|lZP3ug)eS#zsNv(j5KJV&ccBJ8mH<*izG1NYnzBgb(* zRxmE6KzJWH;H|T=W7p>MEm{W`_!9cuE;il|A#~{!2+QX_svl{d=ce*HlX%3xDB}&b zA%8-Azebr2k()En1Nq}Vw@?WVZp>f*9wu5}EX+nJYa`C!Ho_pxD*1-S zsdcLBAP_L>(S7S%M{#mf7%7Pje_|L~@s$Xg)XP6d(>XB2QMIF=-uT+5 z_^MhX^10>w_pgn5$%8JtpnquDbgc(7^Yh0j*_wymk_C#oTsiLJ;XOUpmXQ&@26BNX zE$oNZ*UG@Jt~=5Wl-(70VmbD%IK^Y2;E6#H`En zB_jwQ7JDC3amN)ket~F8#R0NRHrR`N4MjQF(>T2OL zN*)o5Kj1e#>5qcma=6s_6EXFnCuydl-<^y*Q;Lk4*kmMR z(&NO~?PqL@LS}&6p<&|+^Es$Ih!GB7=ic9uj)inPfzEz-LLNN!Kd#>PPq3oqnF}?T z12ySM(4{q%O@h0Q!r+ghQN2HompVk7-MR-C>LEG!hy@-MrJl0mnUZu?Z$EeBm?$enxqg?g zBHW4F`VBi>r!avL+v-XQ4`^M58}?jRT&Al$$=kW^RRe5>mB^}Okf zfDoF#-s*2Z7^ZyS-bo~MnvjE89`+qw-_ySI=Ggrs8ek~JHaacT(NjSmfA-b`du!(_ zw~DaRS@_9?jguFF5{w6J@IUO9`HT8m`KCs^d;d#WsrPmlzR3iN1#I@!iaA*Suq!M* zgBky3k#+LiyQT5PumnN=Oew6Y8INRjUI(TC63Gf(vwH`7t$_{~1NryeJrdr6S~-hAf4BaVB#J5{bx))j)E++QwY6BGXN|V;KC@FLP<$aVqslp(i8o$jN=>bimRv z2DT^rBB|wxIpHuZ9S)036{Yf)Z^l1re7TSSHk{qiZ=9-45BU+JQpBYrE+)M!FJxGc zq$lune#X+S%JL86g@ zE^(khn~45>n8Od*%B5||U}3cjNZdt>0mYI34r;o-Z6--eo)!8<3r}|i>!*vqYGSFa zlFp9KyG-VMRsdKG-B4b0&j{)RTCbvcunBq1XE=0yayq6)KmXRsY!tLXU9EcqSh%Z3 zw4K|J>=%*|Zvm6~R{__$-pKYsi9PXDID3wu7f)RGrZ=|B68pstAPuAUryw884v*D( z#!IEwqTmK1fTI$3%QNS7c9m!yVauFJj^)`1^D5AjjeDplus;*==LVYRar)#@gDM6j z$9_=axdfEA{Je4kRKdf117oFRa!jJz6qGFAS|EfDJ~<)V6IzeuUO={zn;CNmbOBXu zbdnmdhHl<4KQeZ;;E>g_&KtAAGjs0qA~dWS)Hz={(#QCz#M0SR>D}!V1LSe?)3|H;0N7#ix)!{%&?>6V z9Brrsi$V_XvP)FCTXMd#)H{4CgvcfVhzOedYExAbbfe5<*}=n_%JKMjpwTG(B3@_< z{y@%CW{MK1dnbxqTEo+Q^d>JGE2D|0r_CNoV1>WaNc>tK@*yWYc)EQ%s$cQ=2L4 zA}VPVPiv_%j^|)UgB==a`}Lq5_PtJN7%1}oE`vl#TLbo49NV&+J(%m=^X48n=@dNy zCZ8T()hk+4zqB>~K)ZV}`K8-AGwc3^y-^yc$Gfx-^Dq#9BXPJ^xleh0tN+y{R|${h zT8p%}8a%{qh65%@>sx-WuA;YPwM@55bag7Eutu0GQRcyp?vrAd7ph~A_?M6Kxd2-% z%XuD^7l`Y0yT+vn2z-7$w0$V!EGRd!R|TxWQFn#8y-!>0UR;agB#=P&mlHzi-G)ip zS5e&_oJY~bBckrT*x!~{7LqecqB<1fS7CS_L(|KtpZ|L)qXiz{cUDZgOC}U9qEXKn zeV4RpEOu4|?Vg(S0cr~533FEWdkz31rPSzkXB?LIGViic7}EWv%V#TMz1+ao8sr~> z%`Tmqe#}t=V60xqnDYW#D}{8C$=t}4$!%aY)XyLr5=f(ARc>wKDub$*r|0nq)dc91Xb~t|$=UM)lBtF-$?Yk%u}Dm%q?yvddS4%IvY%K^R`ZJeWk-Vu+Lw z;=;Ghlm)yA_M(Mn5-6amTBIbI)BTgw^A}Lk`N4eyZo-Q1vI$AVMBj;kBihqaaY2W2+ED~|ht(g@*nXb!IlhAR#h1G&shbp8 zbf2`|6HA;HR3!Mf>oCZCkpEY&wLRbD__m_{_gXDnZq50eCb#{|w*|2JL)2{oxvz~L z$Kz(dlw?G=`ZVv{-gr0cz!DfX~TVt=7EV{c@}9W5R8>970$VicG=DqMte|) zbqr3(A5z+NtoQ`UZO5!y(#FSM5Mw)29O(U^$xuq2R|w5+Awih^js#cYzJ6zT{giCN3k=^5+K{ypN@P3K3K{N`RQ9Wg+3I zl;75@zw~Ps(pp!zhpDlnTpj^YWp=bvBqucyiAIV%ZWE zX?Bf4U98||!M`37wmUH+Qq`sFn;-N+0_e5+Td;7N>+N8u<0zR#_@q18^9iV~@i1XEo+i<8PcAdfu3|_R|$KI1HQx z%-^+L9#IAZLY1!xQIV~q*VJrSK*8IMDUO33LO#>X{!=%kNOexeFJ#|5`zHC59Nb2D z@U=O7#01^=tB23@#Vu#r>UUG*hv`${t2QA?nvS=k@U}josCDqV-I{gUki;qBx@&b$ z7Pc#V+;`=?;;BX5`O*9|0GoT*y zCD(p&A1^ewoeO@BGoEY(53aR@Xr>LWb$Tp&kpDGvQ;i6=G9@)3|(q(tdL1)$A$b5Nye2b6D|0nC(hFE}xt zy;9EByG(1%p4EP3bOpRKyV8}kBL&S(%j5P=lrQFfg8eMa26dmw&`V6hTmA#H2})~@ z)qAXS|G;y0<)7s@Mf<1i#HOBFUD4_VKHIwF#yn6CGkR4+~#Aus((rX z)XeJ=@t{5Hx1*3p^n|oFt$Ni+{)_eBJ3^ZDlDlNrW$q?6KmAs-5M-+GJN&lXbPjTY ztAJkv26t|%167rSQj+g^h;?A8(Nx_x3)adI;03=V@@rUH-rcm*g2BIlkWDcecoAFY z<5x*`HLARu*E3;@wfN8m^03 zCh5nlc)E_8N3a!ZK2#IMzjsYb`}lrM5{i=ikh^3`1Dw-ymudj|i5p_=Am7T8HMdet zvwr#>gRAuCt-kW{??6c!6(`A{pP@R){Wst501XxL;#))wnloc6)KfZPh*AO2-Hq8z z0|fP=t&1qB97rzU0N-#LE#R15s8ol->r`XPuM_l#oW#h1)JWZ*-&wrMn>{~575%_9 zqm<`ir4UghI$bQONl69^e~vDR>C46@wSs+CE(zVtDv5!F-Dl%lJflD$Ir_%Hy6C|5 zLmzgQaHCcI_KHzkQARcb%>PqJ0eO{cyJUNpAc6*!&7^_cS74t zA)hV|C7bZVN~WCwtwSo+4vMksV{n>=yGh)*@V^m00YZ2Gq>vQzqdkwbl#-&yQ0}dK zr;cJbz;HYy$O{BlXxfr&e{XL5dbnrA(ZXq7;y;7hA(y$kILQ&Yac2%Mfe~@Rz^wn0 z>M;LIo*=GWK3k~0iqC`}bU%2PXz~X(Uz8o6$2U(F5Gss9r7?*>E~cIJWZ0Z|#@$wV zC_8gJ;mIzBY%w4n%@pUc3b&NE?XTp}T>FdxeV&>V7O23X4MB&@ToOgbL21S2z`TI! zDJG1=2)FbNd(eC1%SPR+e6e<&&R%2E>9MzP_1z6XZFH1J7l`$_5on+)Bn zH>#s!S^=Nil;-T0AwL|1RwvnirKDiDaw#F}Ki}%!$RuxIhSx}Q17Hemc_DSf5!qfu zO{>|I1dUl6Qi^4-{)90Nj4BD!>Ggvg?Ypz~4iJ9e#rCfL_-hm6AVz(k@*vaL#nXp{jZ}Y#aeR1wtXiSJRBfz%R)DS) zYh0PK7RxIFUzWBwyW0S0VQ)4GRf=HeqOatq6C#Vs@|Z2LH<}(@FXYR@aq>scKh_!7 zxpDkR?C(*Y^5de6PUl;|$1k}r_UBzani29u5yxsQ(43h82>nz)7tJj~2s9S^(A~th z|4Uq!X;A}_!!Wba%%UAvzEei%(NnQmhyLxCOIFb%?DmtH3(JXf4oD+9KoaAE$mGEe ziou#K;l(82%tY@JA@1lPX5@A0g>Pk4OSWp!r%a-H?SiNNSx(HVyL3fHts|3u3Cv=}nw6Z81ipNl^(N8`>7}FRGF`ceWDVV(1)c<@2!u#PoZNb+Lk5 zR5b!F-Sa6M=1eqEDWxtq_`9*B&{rvTs}m!fxSk-w`6shQQ#wJ)gc_WcHo@%^eTal{{P*tDHI@S884b6vWW;7RY9+V;@ zmboFAzb;Sv{OHuKGbl)8bfltB_=BAhqP`2GsWLmkj=5uxq226!&k858jQW;0$5z0+ z0XxAVd=^Qp|4A#ia9Av{S#tSi*@Z045`eTPfoE4*r%=QGs^wusELtMyYIR2u?Ab^S zH-gB3fz4t&Y^w!1avgF+)+sSZaG*;|aIK~agt&Hj1t(Yo%1Czs5z?dUt2UN>mU~=M zqUK9Nc=Dk6M7Ah~6}e<^Mg&Z>2#tUWkWq0|*7CE-CH(a+KsO$QQLJ?s)eTWRX_G10 ztrnw=*Kcc}ZQ7HbQb7q=vaNde^{5;F;a*p_brioH&B(Ed3MSx}SBj*K()WEdh`EZ|I@U*%x(`U-UJGe)t`8h2NuK z_M+E__-`WbyZ??0Fi$vi6rj3n5ada1V#4GZC(@^x2;#cI<+D=fE_~CgF|qE?m7Su7 zTJPne^qs#_Jpr7?!VA;b&{|>9DbblSX*1>!p=2%>%tS}i zf_R!O(4a646`dj9o8~|lxR~7y%?}WT1d6lp)L;6T$K3?ovP(*H>2jKIU;ta)LO~aV zkwbDK^UBYp5GkZ-uej)}Mtk(-A1cK5Q*i|yK6doYFTs>tT$_ZP{2M!Eo?8s6x>c~c z2PUAX1#;8K1@as}zl`NZ-?P3v4kE%ve(Hd&v6tlaSzS!k_`}?6xn(j>w(|zrZ*anZ z<)E{NtM_yPXKZ=_iXIWer>fRhxia9{iK6<=0C_E3C1Pj60Gy2uS+8Ti5iqmt)>?NZ9IGO29#Rpe+mDs6xh9RI%7HtDoofE*Ss@-ywA+J)wL+k=ilRCu1>#s zyk^(kOhX=GE8jKeDtSgtRo(xhiaY>}w)AByPaM$=`$dJ?_>xh4E5v&B4zw;{o>!}X zjLk(_%q%%VXsyhoen$u^;L!#u&nw*kYfxY;IK-Y-$^dXm+L)ue;3p$d1dF>cmc4eI@zMpH0HgkOOu?BOSYw_os#kh&Y*i{AaSwhJ&@yQZE>OWzWDw zlqY+3D%I3u+lsoEH4A~LSdf>{<+}z|lf9w%rZKT+TvdqpguPsw*Y@%wr<@RB6qrrr z1s*ohx%lj=B4tL1J2iC3^vwhHKh0M72u2I1YO1-e*e%pW+-r!wc#psEznD@XCw}U`cJrjvE%`2B1yKG(rcr|? zExu_0l(v2*W1=U5Gdyn8u#35W`YV;&rrwz<$+{cfTn0bkDrh3N9AjD2)kW^= zaaN54n~hd%KO*BcHE60c42Dxd9nk>(G6G#>sOB3Gr8%{CaE~+REsd8SxX3?EM7Gwc zB@iZTGOZUdCaK!9b?s9NW15=ySgFBvP*=soDM!77xD~7V6MjhqCZh!|J@^h*Dx;z! zCUlPYnbb+eHr!^inp~6vlPvxcq}HOi}bkLQCh3%q$fYW*)UQpy+FEPV7#e z#dD9&cL_>i}O0a5j3tL86MQBKZYr^VDQW~>d9s93WP$8d(o)^7EhP-6iFs8U)5 zNf=s}AZ>9{X+bXGf7h~q0sn_pc$R@9w{@q<9c%I~Tn+3#4SZyi~ zfBcC;0oo#ULPVd4F=G=&VNJjf+zK7RKUWmvh7^ZF)9^SP26g_ovz?6cOa(OVE|Z+B zB}VPg>;6iJbZM44V3aRnNb|qH8PPc+yEYwu_|c8C=6digY82jrjS%V3IPtPb_A*Q` zW6}ORc}*E@OrcfB65}Fo!^K800zIWMzXGR<<9W7L0obk&5=8K-#xl^yxb)FjS>gGm zs!+58N-^eb>40uDOVe_u)Y1xZ%9HPX< z_-+D`VH0kh+C6&4H=gm2$(?dd=O=5w*f@6yoYT}9A7L66i06ls{sj7Zh%?6y*e>e= z8U@|L2a_GxNAoh}-mvWbAlPK0e|kKkLHoOfSVChGj;5cy_odguTX9PSGL zNgXkvNYXbReuZ>$2f-{Za?A-nER6G{N9OyfW{d2d6|4fmDQ#r#I6UaA*L3AOY2Nge zVhz{_3yMEa(8+c~d)>+}N^XXulyNQI!@>3smXNOSh}FmQ25fU>3UP7f28e z)ZO<3>T%W_BP%mv$?89BCjD8cd-U16Vuq(C-vWRf_#V3MU&7Z^`?YSebrjew+$LmS zYa1I|o;7a@KdJY{)Y3ChM=QP)HP&3AxU0f7{in#}DQnWlg}05+OHQh7rD{h@)qU5J zt((@X){WIMkZe$(BJfPUGhgZi*>Y?n2hHYuenByqCzmQyQ9NTORH%B6wk-h+-UKo( z{?NxR;9Vt>YZq86g&(!7wr7;kP|CZa{1WHCjO;!5K7ChdFR!;6Y>UgS5?FMvZW9_+ z;q=(5S0ja=a*3#xUHC*GX}%20o9D-NakB$;5tzV0{W|870<8gV`vZd{m6XVVX!7d? z{=A8y3hE==Db#T|F|}@~Z8y-+*T)D$-E^wD7QscQe-H$9c;;uTEXj6OOSLKb zXe$p)5uYxFnuI~CWu#hs=Qy&ysNC0;C-pAxM z3OZpI)&Wfu*|k=S1?E7Ww05AcTx^EA<_C5q7;tizmvwpdJ>JXwnl?2gny_yE{I6b& zntlk4_l$TK%9SdtQe@X;nlgIuSgBba#JPIRQpIkEFQ)7i1^;k=u*WK$i7bf?|0Gt{ zj4bZiEQ>tEJhhJ4ycPXkC9Utx=Mx%`DH+aP}BRDGVdIgKT><_Tm`-7 zoAaU?`5ieSK^NZ(C3J?-0S{N?kP=!yIG3HOlmTArMI#8G29Ds`|(*||WL_Ms6!gzheU=a`lxR{hr zP*)5BuNh7g$%nSP|8C@#`-#W(FOow^Na6ZssS6NCsC{x-*dV$}AFw*@Y*NF0Lr4EOkjPAb+IaI7pR>P>5Bn9Kfoy+#I} zeALw0wQ~nPg_ySglI+5z1$!r&x`*nJ11&2vq9I&`MRXHI$XIp*U*YJ#!+`(o&8V8l z9a*>7O!~Y~1IOW&)&}`lA%WM!A^-I)5&%(gEvifvHQ(q(H|L6WV&{m?+!7=$C&K!; z|5JW32PUkllzqhB5jx4*FQFsHvI0i#t1MW|Rjz$#Y_(a0E50$I?X0g zHlcDaxS0#~ek=!txin_Y&q|X)#dmxc!rD z`ZfEHomEnin%)R@*d5}&(nDTbn}VkFB$W2%Jt$0-zjgGuXjw_+sivs?s3VlvDZ4+u zu=6#Ne0a8VuP2TtcUG|;;@w5=_1no`XnZ0)EaIe>sO{^5+D8{?6^|n_V|hrbNcRqu{an^J}Aj> zcKumHo47RLBDcBMWR&1W&SCOZAgv9pwx&vVRQo9UMi|OTScwjj=CT|6N%D-}c|K9& z{|-up6vzMfcl1J6=aaVgo%BoOoKoI47Y~h)dKk{-lG^FxZuh-hgTy z`ucl=EMn(tqS@*LzulM3)kBNI2KZu9Y=lK-oxfg{<0&I*eL>;)yb!10$-3#0?Y{84 zz$P16Nl8{|io3T)(O?|fm*Utku!2rqQ6b!SjdH~(@exuNn(`6`NsgR^;aiot#@xc$!kx4Hr#&)g>`wcV!-3qH zE%I>`@1F~I^xdKd5E*=X1 z&26fUgV*768xctjLOsM_szhSUb`pUJAWbw>haW0RXB}n_QQm5<*>mvOJ=ky!v0TC#ImlgV z;45x8dGvu=X93$ajKLN<;Gb>2#!OB(7oCnn0z3z?b-nH5F0CsjHdL$liv6xN9W030 z^Ow|4YJMLd!YgJ&jj#Q@-M5-^b7XtN=WV0vy)cB$Zuw}usRvcBbE2m!+xJ?s0ThZ+ zZ3vQw%Zylc@;RQT{_y^i)Hc_qFq}xhW}mlF0;re94Djk=inTB8i#Sz0u0sI|H8MS+ z6*I5w1V3J++K%=Y-3J@=gMRY9!3~s0rgE0Z9A}=~ec$QtSyVAl4o;I)mLq-+`Zl9|F4arE= zvx-QRoe_u;j9884_Kyhplkk<`Bd9wNJuIvKlW|KX^Gk<_5^9jfSWBDAR9CYLid4UY zd$!K$ZzG@@Cf~~Nh&0+#{)Y^>8b;0*LCnlJD=^}8>Y=7$paQSd@X-gx=e|S@EE-3t zY&nfY9;&c`a#lwkWbULh)~W5JW^SC8xrIFV{lURJKm~LAeORWPMVK6xt4bhg;vGjesYk05bLI{jFbdv(r6DwCE*L{3DSQEA+k8SraMr~{y*CCCV7 zZ?M{d88#6y=bTw|8WD=M>M&bcv#-*LTHuPi4_WeV5--<(HMbOpTm)f&Tt=}p6_J3o za(8HShg@I>nS&t~?+6qO6$AdO$q7Z?)^B$;%TZFDxE3pMzvU=G!*NeAXW;t_K^@KETn|2mAwOo#TwybNHWa(c6r_K! zF#j^?xc7i;ae|lK|9V(_EFE2AbVzeFBzo}Iz0XdaOfh-(17H7xbLH@Zpgug^PW02s_pu{W*Qr53+S-t2$@_is3 z22INpN!J_+J4@lOE19QXhbh@bekHTJnNL%G90e1&vj4(nL7mTafIfhf2sfYZDU_bk zwE~uYqHdkWUMx_bYC$$WV6QdL-r(h`U1R&h7PrBQ6NNm!GyZ(I;6BiA>)~Q)!2N0A zJat474=#(-Ngr%4h;+neOm7~P`MpW^em~LlBUTUuSYFHXtp-y-+_oUAEyuaBhHP&N^$OVo4+u_=Ft-- zAojD1Z$N`M@k+#k!(8~=&qwoFB^na50`IPv#N1VKb{irC?pQOpH|o|rL{RCP)p_zA z?k-h4w$Fh^$9~FYpjG}q&tw2z8FzoT5UKqP>OSg>&C=MLl#$UlyC|?RgN^`2G^WZD zDqV`T!l#1D*tKelK#wO537ZekLLSZg;87xQ^F##F+#ZP=w_Kk*z4$dxE0hNg*t9fZ zdbT=twMfb*b*J?un>6r8ApSK0&2l0;YP&-TLNX{sVC<-N2VWmX~sz3In?1{z$@44{&c?#1zOR|2n;0!7MsF!oc@QA*9zZ^ zyUvykDbVs{wCzN4c`P`+msiOhw>X#ju?Mu1y38aj7LmTrnu5h^6}6wOur^T?FXjn| zDGvZzX_r)Z`~Pr9*?OiBq)5aIFr*KQOvZiDc+m;IFHJ;Jw*$EP*`5aBOJUmgF{GuA zt!SViVY6v^brq&cC{ilu_IvLeyNzKYkPFOyX87Q2r>gHB#){^$>{8gty>5=Jy34!0 zf}5~0=>WU3-wDqU9o+Z_|BJo6Cf^{MQFlo0S$w*P}%#pNTM{JnE5O`>rIq~w-3xqWSe)2Sv49sv} za@px9TuiY$R@pfJDjsn{O#UP21JiHwA9k3cQjyUQR5aJaG1tcVh-6o*Cv+FkYoc8F zoHJoCY)xZyeydqcGlSLXUYqc3(g&z(J4K=Bu6)xX+jJlHuQtzHBquZ_#!DwABp;VX ze3Sw*?+T*IUNAx1&N3U;z1syo8q2sL5Z3}S(N~RFeM}Nxf|xXuNyQH&7^7pU07Q?{ zLc8VL50>*!)~B50{&z>iP?}NBZS%T*X2UEOz^a~-@S8+FDMgQs9h8D zHYWIfsljO4prD%+MMb_ zC_l>w>@}~EWfFke4-m3xqpR~ogpO{+pHuO~njCRg!ZfzP+C%4+>2=#>XHoT`U){Y& zCEd{$AJLOA^ckcBaujOKFJK`nfYK!K*O0;;2dVV;t0{AVe9hz?)AcRLvPuAo6~W)p zSoxN7J!P)UNjotEFCX0DTexoFllmJ+W&Z z;eT5eE=}SRO|)|_Zmc3QxblL^mmhz=djMOZJ72tZXjd!S@}j^muZEV`9Hn5lm`MA_ zhhduUxd``ZMZ&-qE%N6Pj#a?tiJ2EuiZ7N-`B|KJS3I^Y1B`$dR2JMMM-E>=IHk2) zFLRW0MZf*LR%Oob&fydpECEV`YIDOHS_*I^62x3$msNN#tk@^OUgo9~bqkpANYJU2 z&ga&tT)=|kh&Vg(Of&<&^i4_S#UZ_E&9F{~k8f8|>;AB7(wX1}WzW#+`wgZ+9DXqR znLvM`{Yl^E0k10uU*yRM85JNRXdfz^DBfNK;y^(K=|0S~#^pv#1IY=c55C>m zPMfH%X+to*zYbY*`{Ny3w}m1$BHXG)uOYUByXvTVbW?8I|BkIYR}@>M4|Q#qWOt** zQP0DKQif5CcgXbVMW`ZfxivK%JT_o~KA6=|YkQC@cG(wL$t9}Zm+fnHCtYRH`jX4x zYKsPOHAIyHjzJ50h&&vM=GuC$kkOU&b4kLPX>P*m5W7(-PDK_H5F4;!tTRHf~d*vlNis9u!yT<%8i-JH+-joVJw4h zcF8gqn5+ie%(>znEQ=%%f}su|<4cTO)*(Mf`|(H| z$c8V3hYx0P2!6Y+laMOt0=L8kyL_k;+HyHGW}mPHY56WZ`iNm0A*5o2emfj{>GG67 zg^#Xv0V-;mrvfMpD31yIfkG@+6^z)J>!q-Py6ICIt>mKu<7huzN^qkd^XNX*jCdh# zmue(nf<%BGbVDQ2yquCTRu_ zFW|f}hBVL!$|^{x&6YxT*t_G_l~NiH<27N*g5oPAu5)nv$bS6@cUuO+jZWe+x_~7e zI!I&#gC`-TR4LQIVKH;q0^>h1__Q-Z3)H-f`M`kjziEZQDbscBe`0qivV3u;o7}BC+x}^KeQc~?>jZ5Y-a|Saci?`?g$BFxVlgklkGBBe+>;yT zj;N}fba9v8_dt5ylJ3>zO2k`YuiD~j_M3kkB{OUI6wj3g$N@Iyu7El$Yjc6nEP!!` zyE|zq600+o<#sz;cb_hl6p7Wy-Cnhl!EYMhUi;Ok#zZ>9pt@Wb7o|(>EJ~tgdzIPD zxNC<=zJ0q5;u%Y>XFVxGkbL=Nk2{|m@E4?&5B|{eJ`VhYrv(g5)j&tO4P{shb%?uC zU{-)Sy6_c^az zG4$n;lgmIFk1knEi7nP!{!<%!0$Robgf{tV>ktLh%1<%Y z=vM_mDI70g^K%P_oHcwkH3?8C3X zx%7p;&!3=diMDT({A@n_rsFe2)vP6a(Rp&pGhWQz&J8h@&sh-!r@t4gnz=OcY&-A< zOIJTmgxC2BW#00~`|?3sveHs)=r%C$JTi$s-wU4n*tkhhbfEIh8q-sth$rahs+xLyU9!T#0C0BB((&8db#SAtiICQOPJ|-3 zq|Ne$9}hTWhgr^TZWLFV@dJkz>&Fbq-7!LLdIsIr2(hYA+?_9rK}<^RX-|KTS3?wZ z&0o3z?4xatrzAzECQ1_MDH7C{+A(Xz-(b}t7i@iBP-R|QAZ#Qf;rPyCkq7m*473S^ zJ^+rAxKcZg6Uuwfz4Uz&>}LT|2V69b0`1F~G(&aeo-+F?u^ozM+PE;q=9Q+|@n)TA zU4Dr3VW2_Ow%p+_EdwG1WSH8;qHOx(d~s9LKXcRMIB=RnafNZ>0MV z;bn-=xzG=Ts(W`o*Pi6y+@n-@&7EAIUkpFJSf!(ws)svheXP% zKwG?Ldu7p#pJ%uXR9s(XTu_YL|}*Yoh#(k8bB21`Te@KgC zas9hTcKIYctt}1X9aSO1zu+oja9TL-qdj8!&EV$LFSlWaur|)*71nonh#5{_;$iW# zHz0Hv$(#!1W-rE2rM!Hkg{3qKiZUBDg)5ZCX%{%!Kj zoP&VlLIfzQT`78j>rx-Un;$#oVu!9*ruoe@(f9@6em-7V$ zXU-apIvX`nrN(;I{=vr4`nzdu@Cy1B3fE{vK)hm$t^pv4CB@pklQZ5Su@eNL-QO2> z%{R>;2sW$|tYJHZqMo2HMi_apmi$8Zoa^y3Oov; z)0&$8yg-r>zQB~CXUvs2HET(oHhv?M_KQR;meOcA?!#w$Y(uH-GJv{wpds*VCuRt5 zeMs^H7ut^jLGQ|P$p&a*ql6vwR)y0*0@0+xil3(nq|BPxmCC6Fbj*&2R`}?=PEK2~ z%C0FVgovVugEX95V&qh;kK9pAmFQ^V`WE=CF_vBtI6AMXR6gSh-3X?uYhoRXKwkmI z+%wMsK_qHQ6K%f&s%B4L^k`{qHA2pBP5gJWEd1apanW<5Nb}bWP%Cw1k^t-Gbcj38 zrc%I`2sOSMdADM#v^l?@F8Y^6XiwwVf4k@@J{BA>Okpg#p@rsn06j&+e(q_o1qUAd z;=l`s6}QmT68lW8x24PY}rdjn@HYiI0d45<4u|M0jz9P{-D6}ym$lj z71(lUL3}@Tcq{QQW$zCo(XwYkT{~s;E;i1qhazv@QrlgwPz0loq*s_92?ef1bjd61 zp-Mp{Ft^#jQ5Y7tY6=xIsqf0?^DzQG(71Uh5DDuabTM_Gcz zO2h+dw6?FRr3AU-p9eFM5OjAIdpvF^uoFo&sP;9v#d(^pV2fuWTJXCz<2L32j!b-~nb z?wI0D^mGWEa?sQmmLNmnMrpS9CgV~fE~v;t10&gRt*#es_Q%!|b$UymT*`~PuPACy z5GtqfuV%Qe>#z-RUozl^kP;bq{&LL`xkGR6KOl>U(Amarz6Cul0w1a1a2KOn;FAmg zL+ovlRL)m0;p}Ar7k%ENyE&R^O1#?HH-6nOpq}U1q&~UU(X!qIPlAKZAX`i)TKU%_ z-;6ZI))Mf*D~`p&|1iU41!ol~BJ|&8MG$>xsz~hKHz}NV>g&evno!sE`{qeD(pyDi>|KW=4`f)c1>XBH~Ual_N|u$tG_? zL{Ix>2q6zjSFRLZ{|&K~h0vF6?Y!u+;c`hG?U=Kz0)GS-|Ia8IMdAQ}p%-%OSorh> z<}xIyCn|#~j~nk^+qkyxM2=;TZZ75)j3=}}GcSX1yrZwOHzcpt#H8ZzH4Llx{Cwv9 zi|scz+&=)Yz-kvj|AVwUcFB*^g9mv&LdHtXb9Y@T5yDm$fmiJ#7^H7*XjMaT< zm;q3*f4tevveO$4)HfPeTNs~+iAMB=8zp9u_Wm!)7r02dXrM;gmI7N(qZ%-TfZ^QaI@B<_#c&9`h3+D5vgv#w+Ln{esgG5r$JmhP?y z85aC6$*l{U)nYvyyBd3dt|j|$xrYW?iMa*RQ=$c1LvK<~hi`5&!rq|I68Oueq`)7> zivI~Y;pHU2`l$3q{z>xmc)F2V5=B=7<=Bx)!iNxSm=7XVs4=FObPV+f5a08;Hcy+% ztF&r;4mB=TG?-)=SW?97ASlQt81ryQ}0-uk#`P?wad4+ zMzr#2>sFs`xDEB{)ye?1r6+m*Vr)X%uHU}ZuIhndkZuouzD|!U^hPK&6}`545%(X3 zEKG$yCp!~4(EZf?;ZrH1I`{;J{SemJVmShpLAobzG_m%5DuhWfO7c7Ny??Clnr}rm z3%2ovqA7*FN}u5fj1pQ6X9Uw6=vz&)&SyCpaxz$~&2j{n`=<_9^>j8xF-AlgTaa?I ztHpaE9;Ey3OUc5k&w=f|Ac8th1k)NyKmz12EcnjgJp;1fQf21ymzaIVB-C&)VUDt} zAG`^0i{2mD2C`2G{j&ITGpU(UfOfUOfid-L(--$uz>^6P|9vB(KS&y zE?We%gCZCu+S!tQ^-%4*88FFAZUcGjS(uVK&y@`#8pl-fr) z1FMjvSot>>8+fDtSQpk#;w%j1*3!hXAOJQp@@%tYxR{ZO=H)YJkiZCg*+Yi_8vaQ# zaF~L~8Ur%{SZmmB)YUDuD*lAB_}4GDnTn4yQwwKl_RY;?v0_A6>ie`aLxxK9*9nEq zeI1avDM|1;+=6r#{I!5Q%QE}q&)~sUG$Mx)+)1B6fd88A{gyAj%Gpzngn${r15fFh zaq`L+eYagt={ep`pCiDDchV##m*{Qep7W6M4oC2KR{fBU;=AFORSv9f85rZ0{hme$ zN&uAG(y-o5LX=EdX8z4?*ojX$6DE>74ZBQL08cKKav|Yx`GeN?;1 zbw0up9!_%*YzZtDk4sq@$l+;?5&1?dc9cDM7Bu5PtZ*GhY?JNiBhUD{2wXpi=!uy} zrdxkW^ev$t6snMS#hpie8&9N2aufrs|uaiNQ0y9R2UqOf2hgTAb3+?;Gz&#T!k6aN>2JO@cJ*M zB&8~!P1erQ^I1w`Vy6U~0&yxqqkK`2@S~J?i0@QW3H_6%%Q%mWP_)Rc5POolni28P z%rfAyKGP~c3xfwnR~`h;o#G5qJU%cMBH9eE?iO}wIU~~#oV>~gBTvyj(%-3