Skip to content

A simple PowerShell GUI for sysadmins to manage Windows RDP sessions (Shadow, Logoff, Send Message).

Notifications You must be signed in to change notification settings

raeziel/shadowRDP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Shadow RDP - Session Manager

PowerShell Platform License: MIT

Note: This application was developed for practical use in real IT environments, aiming to facilitate RDP session management. It is not a commercial product, but a robust and functional solution for daily IT needs.

Shadow RDP is a lightweight and efficient graphical interface to monitor, shadow-connect, disconnect, and message RDP sessions on Windows servers, developed in PowerShell.


⚠️ Security and Responsibility Notice

Warning: This tool facilitates access to user sessions with elevated privileges, potentially without the end user's consent. Responsibility for ethical use and compliance with your organization's privacy and security policies lies entirely with you. Misuse may result in privacy violations. Use with caution and responsibility.


⚙️ Required Environment Configuration

To use this tool, the Windows Remote Control feature must be enabled on the target computer via Group Policy (GPO):

  1. Run gpedit.msc as administrator.
  2. Navigate to: Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Connections.
  3. Find and enable the policy: "Set rules for remote control of Remote Desktop Services user sessions".
  4. Within the enabled policy, select the desired option under "Options" (e.g., "Full Control with user's permission" or "Full Control without user's permission").

💡 Known Limitations

  • Text Output Dependency: The session list is generated by parsing the output of the query session command. Future Windows updates may change this format, potentially breaking session listing. If this happens, please open an issue in this repository.
  • Use on Windows Client: On non-Server versions of Windows (10, 11), this functionality is only viable with third-party tools (such as RDP Wrapper) that modify the system in ways not supported by Microsoft. Use in such environments is experimental and carries additional security and stability risks.

✨ Features

  • List active and disconnected RDP sessions (local and remote users) by parsing the output of query session
  • Shadow (mirror) connection to RDP sessions
  • Disconnect (logoff) selected sessions
  • Send message to selected session (via msg command)
  • Modern interface with DataGridView
  • Automatic administrator privilege detection
  • Customizable icon for the executable and window
  • Automatic language detection (pt-BR, en)
  • Robust and secure: uses absolute paths for system binaries and avoids path hijacking

🖥️ Preview

Shadow RDP Screenshot


⚡ Requirements

  • Windows 10/11 or Server (with PowerShell 5+)
  • Administrator permissions to execute shadow and logoff commands
  • PowerShell installed (native on Windows)
  • PS2EXE to compile to .exe (optional)

🚀 How to use the .ps1 script

  1. Place the files shadowRDP.ps1 and shadowRDP.ico in the same folder.
  2. Run as administrator:
    • Right-click shadowRDP.ps1 and select "Run with PowerShell".
    • Or, in the terminal:
      powershell -ExecutionPolicy Bypass -File .\shadowRDP.ps1
  3. The interface will appear.
    • Click "Atualizar Sessões" (Update Sessions) to list sessions.
    • Select a session and use the buttons to shadow-connect, disconnect, or send a message.

Sending messages to sessions

  • Use the "Enviar Mensagem" (Send Message) button to send a custom message to the selected session. The message is delivered via the Windows msg command.
  • Limitation: It is not possible to receive an automatic reply from the user through this method. The message is displayed to the user, but any response must be manual (e.g., via chat, phone, etc).

🌐 Automatic language detection

  • The interface automatically detects the Windows language: supports only pt-BR and en. No manual configuration is needed for language selection.

🛠️ How to compile to .exe (optional)

  1. Install PS2EXE:
    Install-Module -Name ps2exe -Scope CurrentUser
  2. Compile the script:
    ps2exe .\shadowRDP.ps1 .\shadowRDP.exe -icon shadowRDP.ico -noConsole
  3. Run the .exe as administrator.

🔒 Best practices and security

  • The app requires administrator privileges to work properly.
  • The path to mstsc.exe is absolute (C:\Windows\System32\mstsc.exe), preventing path hijacking attacks.
  • The icon is loaded both in the executable and in the app window.
  • Clean, commented, and easy-to-maintain code.

🎨 Customization

  • To change the icon, replace the shadowRDP.ico file with one of your choice.
  • To change texts or layout, edit the shadowRDP.ps1 file.

📄 License

Distributed under the MIT license. See the LICENSE file for more details.


Questions, suggestions, or improvements? Feel free to open an issue or submit a pull request.


Shadow RDP - Gerenciador de Sessões

PowerShell Platform License: MIT

Nota: Este aplicativo foi desenvolvido para uso prático em ambientes reais de TI, com o objetivo de facilitar o gerenciamento de sessões RDP. Não se trata de um produto comercial, mas sim de uma solução robusta e funcional para demandas do dia a dia.

Shadow RDP é uma interface gráfica leve e eficiente para monitorar, conectar, desconectar e enviar mensagens para sessões RDP em servidores Windows, desenvolvida em PowerShell.


⚠️ Alerta de Segurança e Responsabilidade

Atenção: Esta ferramenta facilita o acesso a sessões de usuário com privilégios elevados, potencialmente sem o consentimento do usuário final. A responsabilidade por usar esta ferramenta de forma ética e em conformidade com as políticas de privacidade e segurança de seu ambiente de trabalho é inteiramente sua. O uso indevido pode resultar em violações de privacidade. Use com cautela e responsabilidade.


⚙️ Configuração Obrigatória do Ambiente

Para que esta ferramenta funcione, o recurso de Controle Remoto do Windows deve ser habilitado no computador de destino através da Política de Grupo (GPO).

  1. Execute gpedit.msc como administrador.
  2. Navegue até: Configuração do Computador → Modelos Administrativos → Componentes do Windows → Serviços de Área de Trabalho Remota → Host de Sessão da Área de Trabalho Remota → Conexões.
  3. Encontre e habilite a política: "Definir regras para controle remoto de sessões de usuário dos Serviços de Área de Trabalho Remota".
  4. Dentro da política habilitada, selecione a opção desejada em "Opções" (ex: "Controle Total com permissão do usuário" ou "Controle Total sem permissão do usuário").

💡 Limitações Conhecidas

  • Dependência da Saída de Texto: A lista de sessões é gerada através da análise da saída do comando query session. Futuras atualizações do Windows podem alterar o formato deste texto, o que pode fazer com que a listagem de sessões falhe. Caso isso ocorra, por favor, abra uma issue neste repositório.
  • Uso em Windows Cliente: Em versões não-Servidor do Windows (10, 11), esta funcionalidade só é viável com o uso de ferramentas de terceiros (como o RDP Wrapper) que modificam o sistema de forma não suportada pela Microsoft. O uso em tais ambientes é experimental e acarreta riscos adicionais de segurança e estabilidade.

✨ Funcionalidades

  • Listagem de sessões RDP ativas e desconectadas (usuários locais e remotos) por parsing da saída do comando query session
  • Conexão shadow (espelhamento) em sessões RDP
  • Desconexão (logoff) de sessões selecionadas
  • Envio de mensagem para a sessão selecionada (via comando msg)
  • Interface moderna com DataGridView
  • Detecção automática de privilégios de administrador
  • Ícone customizável para o executável e janela
  • Detecção automática de idioma (pt-BR, en)
  • Robustez e segurança: usa caminhos absolutos para binários do sistema e evita path hijacking

🖥️ Exemplo visual

Shadow RDP Screenshot


⚡ Pré-requisitos

  • Windows 10/11 ou Server (com PowerShell 5+)
  • Permissões de administrador para executar comandos de shadow e logoff
  • PowerShell instalado (nativo no Windows)
  • PS2EXE para compilar em .exe (opcional)

🚀 Como utilizar o script .ps1

  1. Coloque os arquivos shadowRDP.ps1 e shadowRDP.ico na mesma pasta.
  2. Execute como administrador:
    • Clique com o botão direito no shadowRDP.ps1 e selecione "Executar com PowerShell".
    • Ou, no terminal:
      powershell -ExecutionPolicy Bypass -File .\shadowRDP.ps1
  3. A interface será exibida.
    • Clique em "Atualizar Sessões" para listar.
    • Selecione uma sessão e utilize os botões para conectar (shadow), desconectar ou enviar mensagem.

Envio de mensagens para sessões

  • Utilize o botão "Enviar Mensagem" para enviar uma mensagem personalizada para a sessão selecionada. A mensagem é entregue via comando msg do Windows.
  • Limitação: Não é possível obter resposta automática do usuário por este método. A mensagem é exibida ao usuário, mas qualquer resposta deve ser feita manualmente (ex: chat, telefone, etc).

🌐 Detecção automática de idioma

  • A interface detecta automaticamente o idioma do Windows: suporta apenas pt-BR e en. Não é necessário alterar manualmente nenhuma configuração para o idioma.

🛠️ Como compilar para .exe (opcional)

  1. Instale o PS2EXE:
    Install-Module -Name ps2exe -Scope CurrentUser
  2. Compile o script:
    ps2exe .\shadowRDP.ps1 .\shadowRDP.exe -icon shadowRDP.ico -noConsole
  3. Execute o .exe como administrador.

🔒 Boas práticas e segurança

  • O aplicativo exige execução como administrador para garantir o funcionamento correto.
  • O caminho do mstsc.exe é absoluto (C:\Windows\System32\mstsc.exe), prevenindo ataques de path hijacking.
  • O ícone é carregado tanto no executável quanto na janela do aplicativo.
  • Código limpo, comentado e de fácil manutenção.

🎨 Personalização

  • Para trocar o ícone, substitua o arquivo shadowRDP.ico por outro de sua preferência.
  • Para alterar textos ou layout, edite o arquivo shadowRDP.ps1.

📄 Licença

Distribuído sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.


Dúvidas, sugestões ou melhorias? Fique à vontade para abrir uma issue ou enviar um pull request.


⚠️ Aviso de Segurança Crítico

Esta ferramenta permite o controle remoto de sessões de usuário sem o consentimento deles. Habilitar e usar essa funcionalidade tem implicações sérias de privacidade e segurança. Use com extrema cautela e apenas em conformidade com as políticas da sua organização.

🧑‍💻 Exemplo de compilação rápida

Para compilar rapidamente o script em um executável com ícone personalizado e sem console, utilize o comando abaixo:

ps2exe .\shadowRDP.ps1 .\Sombreamento.exe -icon shadowRDP.ico -noConsole

About

A simple PowerShell GUI for sysadmins to manage Windows RDP sessions (Shadow, Logoff, Send Message).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published