Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Connect Desk 🖥️✨

O Connect Desk é um software de suporte e controle remoto de alto desempenho baseado em tecnologias modernas de web e APIs nativas do Windows. Ele permite que você visualize e controle computadores remotamente em tempo real diretamente pelo seu navegador, sem a necessidade de instalar clientes pesados no lado do visualizador.

Com um design premium de última geração — utilizando dark mode, glassmorphism e efeitos fluidos —, o Connect Desk combina facilidade de uso com excelente performance.


🚀 Funcionalidades Principais

  • Captura Ultra-Rápida de Tela: Motor de captura nativo escrito em C# e executado dinamicamente via PowerShell em segundo plano (GDI+), garantindo alta taxa de quadros e excelente nitidez para leitura de textos.
  • Controle Interativo Completo:
    • Mouse: Movimentação, cliques (esquerdo e direito) e rolagem (scroll).
    • Teclado com Atalhos Completos do Windows: Envio de texto, teclas especiais e todos os atalhos de sistema (Ctrl+C, Ctrl+V, Ctrl+Z, Ctrl+A, Alt+Tab, Alt+F4, Win, F1–F12, PageUp/Down, Insert, etc.) via mapeamento nativo de Virtual Key Codes (VK) do Windows.
  • Transferência de Arquivos: Envie arquivos do seu computador local diretamente para o Desktop da máquina remota de duas formas:
    • Drag & Drop: Arraste o arquivo sobre a tela remota — uma borda vermelha indicará a zona de soltura.
    • Botão de Upload: Clique no botão "Enviar Arquivo" no painel HUD da sessão para selecionar o arquivo via diálogo do sistema.
  • Sincronização de Área de Transferência (Clipboard Bidirecional): O conteúdo copiado na máquina remota é automaticamente sincronizado com o clipboard do seu navegador local, e vice-versa.
  • Painel de Controle Web Responsivo: Interface web incrível baseada em fontes modernas (Outfit e Inter) com controle dinâmico de zoom/escala ("Ajustar à tela" ou "1:1 Real").
  • Conectividade Segura por Sessão: Cada máquina de destino recebe um endereço exclusivo de 9 dígitos formatado e uma senha temporária aleatória de 4 dígitos gerada a cada inicialização do cliente.
  • Servidor Web Coordenador Embutido: O próprio cliente consegue inicializar um painel web local na porta 4500 caso esteja em rede local, permitindo controle direto.
  • Empacotamento Standalone: O cliente pode ser compilado em um único arquivo executável .exe de clique único usando a ferramenta pkg.
  • Solução Inteligente para VPS Windows: Integração nativa de instruções e alertas para evitar o travamento de tela/tela preta comum ao minimizar ou desconectar sessões RDP em servidores virtuais.

🛠️ Arquitetura do Projeto

O projeto é dividido em duas partes principais:

  1. server/ (Servidor Coordenador):

    • Baseado em Node.js, Express e Socket.io.
    • Atua como um intermediário leve e de baixa latência que apenas redireciona os comandos de mouse/teclado dos visualizadores para a máquina alvo, e redistribui os frames de vídeo da máquina alvo para os visualizadores.
  2. client/ (Cliente Host / Máquina Alvo):

    • Um aplicativo Node.js que inicia um processo persistente e otimizado do PowerShell.
    • O script do PowerShell carrega dinamicamente código C# nativo para interagir diretamente com as APIs do Windows (GDI+, user32.dll para movimentos de mouse e teclado).
    • Envia os frames de tela como JPEG comprimido em qualidade de alta fidelidade via conexões de WebSocket (Socket.io).

📋 Pré-requisitos

  • Servidor Coordenador: Qualquer sistema operacional (Windows, Linux, macOS) com Node.js v16+ instalado.
  • Cliente (Máquina a ser controlada): Sistema Operacional Windows (devido ao uso de APIs nativas Win32 e GDI+) com Node.js v16+ instalado.
  • Visualizador (Viewer): Qualquer dispositivo moderno com um navegador web atualizado (Chrome, Edge, Firefox, Safari).

⚙️ Instalação e Execução

Passo 1: Instalação das Dependências

Primeiramente, baixe ou extraia o projeto. No terminal do diretório raiz, instale as dependências gerais do projeto e do servidor:

npm install

Em seguida, navegue até a pasta client/ e instale as dependências específicas do cliente remoto:

cd client
npm install
cd ..

Passo 2: Inicializar o Servidor Coordenador

Inicie o servidor de conexão para que as máquinas possam se registrar e se comunicar. Por padrão, ele escutará na porta 4500:

node server/server.js

Você verá a seguinte saída no terminal:

Server (Controller) running at http://localhost:4500

Nota: Se você for implantar o servidor em uma VPS ou nuvem, certifique-se de expor a porta 4500 (ou a porta configurada na variável de ambiente PORT) em seu firewall.


Passo 3: Configurar e Inicializar o Cliente

No computador que você deseja controlar:

  1. Verifique as configurações no arquivo client/config.json:

    {
      "id": "411988342",
      "serverUrl": "http://localhost:4500"
    }

    Substitua http://localhost:4500 pelo IP público ou domínio do seu servidor coordenador, se ele não estiver rodando localmente.

  2. Inicialize o cliente:

    node client/client.js
  3. O console do cliente limpará a tela e exibirá as credenciais de conexão seguras formatadas:

    ==================================================
          CONNECT DESK REMOTE CONTROL CLIENT (PoC)    
    ==================================================
      Endereço Remoto:      123 456 789
      Senha Temporária:     4321
    ==================================================
      Conectando ao Coordenador: http://localhost:4500
    ==================================================
      ► SE DETECTAR TELA PRETA EM VPS WINDOWS:
        Caso sua sessão RDP caia ou seja fechada, a GUI trava.
        Para desconectar mantendo a tela ativa, rode no cmd:
        tscon 1 /dest:console (troque 1 pelo ID da query session)
    ==================================================
      ► PARA CONTROLAR OUTRO COMPUTADOR:
        Pressione [Enter] para abrir o Painel de Controle
    ==================================================
    

Passo 4: Realizar o Controle Remoto

  1. No computador do suporte (Visualizador), abra o navegador e acesse o endereço do servidor coordenador (ex: http://localhost:4500 ou o endereço IP público/domínio da sua VPS).
  2. Na belíssima tela inicial do Connect Desk, insira o Endereço Remoto de 9 dígitos exibido no console do cliente.
  3. Clique em Iniciar Conexão.
  4. Uma janela pop-up estilizada solicitará a senha. Digite a Senha Temporária de 4 dígitos gerada no console da máquina alvo e clique em Confirmar.
  5. Pronto! A tela da máquina remota será renderizada de forma ultra fluida. Use o mouse e o teclado para operá-la como se estivesse na frente dela.

⌨️ Atalhos de Teclado do Windows

O Connect Desk transmite todos os atalhos nativos do Windows para a máquina remota usando Virtual Key Codes (VK), mapeados diretamente para as APIs keybd_event do user32.dll. Basta pressionar as teclas normalmente na janela do visualizador:

Atalho Ação na máquina remota
Ctrl + C Copiar
Ctrl + V Colar
Ctrl + X Recortar
Ctrl + Z Desfazer
Ctrl + A Selecionar tudo
Ctrl + S Salvar
Alt + Tab Alternar janelas
Alt + F4 Fechar janela ativa
Win (Meta) Abrir menu Iniciar
F1F12 Teclas de função
PageUp / PageDown Rolar página
Home / End Início / Fim de linha
Insert / Delete Inserir / Excluir
Setas direcionais Navegar

Como funciona: Cada tecla é transmitida como um evento keydown + keyup com o código VK correto. Modificadores (Ctrl, Alt, Shift) são mantidos pressionados enquanto você segura a tecla, permitindo combinações exatas como Ctrl+Shift+N, Alt+Tab, etc.


📁 Transferência de Arquivos

O Connect Desk permite enviar arquivos do seu computador local diretamente para o Desktop (Área de Trabalho) da máquina remota.

Método 1: Drag & Drop

  1. Com uma sessão remota ativa, arraste um arquivo do seu computador para qualquer área da tela remota exibida no navegador.
  2. Uma borda vermelha animada aparecerá, indicando a zona de soltura.
  3. Solte o arquivo — ele será transferido e salvo automaticamente no Desktop da máquina remota.
  4. Um toast de confirmação será exibido com o status da transferência.

Método 2: Botão de Upload

  1. Durante uma sessão ativa, clique no botão "Enviar Arquivo" (ícone de upload) no painel HUD superior.
  2. Selecione o arquivo desejado no diálogo do sistema operacional.
  3. O arquivo será transmitido e salvo no Desktop da máquina remota.

Nota: Arquivos de qualquer tipo e tamanho podem ser enviados. O arquivo é convertido para Base64 no navegador, transmitido via WebSocket (Socket.io) e gravado diretamente no disco da máquina alvo pelo cliente Node.js.


📦 Compilando para Executável Standalone (.exe)

Para facilitar o uso por parte de clientes ou usuários de suporte final, você pode compilar o módulo client em um único arquivo executável para Windows. Isso elimina a necessidade de instalar o Node.js na máquina que será controlada!

Para fazer isso:

  1. Abra um terminal na pasta client/:
    cd client
  2. Execute o comando de compilação:
    npm run build
  3. A ferramenta pkg irá empacotar todos os scripts, dependências do node_modules e arquivos estáticos da pasta public no executável.
  4. O arquivo gerado estará disponível em client/dist/connectdesk.exe.

Agora você pode enviar este arquivo diretamente para o usuário. Ele só precisa dar um duplo clique no executável para gerar as credenciais de suporte instantâneo!


💡 Dica Especial para VPS Windows (GUI Inativa / Tela Preta)

Ao utilizar o controle remoto em VPSs Windows (como as contratadas na AWS, Azure, Google Cloud ou provedores locais), é comum se deparar com uma tela preta se você fechar ou minimizar a janela de Conexão de Área de Trabalho Remota (RDP) padrão do Windows. Isso ocorre porque o Windows desativa o renderizador GUI de tela ativa para economizar recursos quando não há nenhum usuário RDP ativo.

Para solucionar isso e manter a tela ativa para o Connect Desk continuar funcionando perfeitamente, siga estas etapas antes de fechar o seu RDP:

  1. Abra o Prompt de Comando (CMD) como Administrador na sua VPS.
  2. Execute o seguinte comando para obter o ID da sua sessão RDP ativa:
    query session
  3. Você verá uma lista. Procure pela linha com o nome do seu usuário (normalmente Administrator ou Administrador) sob a sessão com nome ativo rdp-tcp#... e anote o número exibido na coluna ID (geralmente é 1 ou 2).
  4. Execute o comando a seguir substituindo o ID_DA_SESSAO pelo número anotado:
    tscon ID_DA_SESSAO /dest:console
    Exemplo: tscon 1 /dest:console
  5. A sua janela do RDP padrão será fechada imediatamente. Porém, o Windows irá transferir a interface gráfica ativa diretamente para o console local, mantendo a GUI em execução ativa.
  6. Agora, o Connect Desk poderá transmitir a tela e aceitar comandos de mouse e teclado sem nenhum travamento ou tela preta!

🎨 Design Premium e Personalização

O Connect Desk foi desenvolvido sob os mais rígidos padrões de design moderno para proporcionar a melhor experiência do usuário:

  • Tipografia Fluida: Utilização das fontes Outfit e Inter via Google Fonts.
  • Aparência Premium Glass: Efeitos de desfoque de fundo (backdrop-filter) e gradientes elegantes que acompanham as interações.
  • Responsividade Dinâmica: O visualizador é compatível tanto com monitores ultrawide quanto com notebooks e telas menores, graças à capacidade inteligente de ajuste e redimensionamento automático do canvas.

💖 Contribuição e Doações

Se este projeto foi útil para você ou se você deseja apoiar o desenvolvimento contínuo do Connect Desk, sinta-se à vontade para fazer uma doação de qualquer valor!

Toda contribuição é extremamente bem-vinda e nos ajuda a manter o projeto ativo, aprimorando funcionalidades e trazendo novas atualizações.

QR Code para Doação
Escaneie o QR Code acima para doar qualquer valor via Pix 🚀


💬 Suporte e Comunidade

Para esclarecer dúvidas, reportar problemas ou interagir com outros desenvolvedores e usuários do Connect Desk, participe do nosso grupo oficial no WhatsApp:

👉 Acessar Grupo de Suporte no WhatsApp


📄 Licença

Este projeto é desenvolvido para fins educacionais e de demonstração de conceito (PoC). Sinta-se livre para customizar, expandir e integrar em suas próprias soluções de suporte de TI!

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages