Questão Enviar pressionamentos de teclas em tempo real para a máquina de fonte externa sem instalar o software nessa máquina? Talvez um dongle USB que se registre como teclado?


Eu tenho alguns sistemas básicos executando softwares legados em hardware com rangers. Eu quero ser capaz de automatizar um monte de tarefas usando scripts de atalho automático para tarefas que atualmente, devem ser executadas manualmente. Eu realmente não quero instalar nenhum software nessas máquinas, e em alguns casos não posso (como eles já estão no máximo em recursos, ou executando compilações do Linux, ou executando estranhas versões do Windows a partir da idade da pedra)

Eu preciso de uma solução pela qual eu possa receber as teclas digitadas em uma máquina em tempo real sem instalar qualquer software nele. No entanto, exigir drivers ou software na máquina que envia as teclas não é um problema.

Esse é o problema que preciso resolver. Dada a restrição na máquina receptora, posso apenas imaginar que uma solução poderia estar nas linhas da entrada por meio de algo como um dongle Bluetooth ou um receptor USB que se registra como um teclado, mas na verdade está recebendo as teclas digitadas em outro computador. Se alguém souber se esse hardware existe, você poderia postar abaixo? Ou, alternativamente, qualquer outra solução que atenda aos objetivos.


4


origem


Que tal um teclado e receptor bluetooth? Você está evitando isso? Você só precisa instalar um driver para um desses. - Datarecovery.com MK
Você consegue um teclado bluetooth que aceita teclas externas de um segundo dispositivo? - Some_Guy
Eu postei uma resposta desde que ficou muito tempo - Datarecovery.com MK
BTW, eu estava na faculdade durante a era da pedra do computador (antes do bluetooth), e um pesquisador precisava essencialmente do que você descreve. Ele construiu uma plataforma que ficava em cima de um teclado, com um êmbolo ativado por solenóide para cada tecla. Ele então enviou as instruções de digitação para o seu dispositivo de outro computador. Eu estou supondo que isso não seria uma solução prática para você. - fixer1234
Eu aprecio os comentários pedindo-me para criar uma resposta, mas eu queria semear uma solução sem gastar tempo para criar uma boa resposta. Tenho certeza de que você concordará que um comentário que aponte você (e outros que possam estar dispostos a escrever uma resposta mais completa) em uma direção funcional é melhor que nada. Pessoalmente, eu poderia conectar um módulo Ethernet e fazer com que ele se tornasse um cliente de eco na rede em vez de serial ou bluetooth, como alguns outros estão sugerindo, mas de qualquer forma ele deve resolver seu problema. - ssnobody


Respostas:


Você pode usar um KVM baseado em IP remoto para gerar pressionamentos de tecla em outra máquina em tempo real.

Basta conectar o teclado do KVM (e, opcionalmente, o vídeo e o mouse) ao computador para o qual deseja enviar as teclas digitadas remotamente.

Em seguida, você se conecta ao IP no KVM através do seu navegador da Web ou do aplicativo de sistema nativo fornecido e envia as teclas que desejar.

Um desses produtos é Controle Remoto do Servidor da Tripp Lite, KVM Externo sobre IP e outro é o Lantronix Spider KVM

Como alternativa, você pode reconstruir uma versão DIY de um desses com apenas suporte a teclado (em vez de suporte a teclado, vídeo e mouse) usando Teensy USB Dev Board conectado a um Módulo ethernet WIZ712MJ com o Kit Adaptador Ethernet WIZ812

Nesse ponto, você poderia usar o Teensy ethernet e teclado bibliotecas para escrever um pequeno programa que gera um servidor usando Server.begin(), aguarda por uma conexão e, em seguida, tem um loop while infinito com algo como o conteúdo a seguir para criar um servidor de eco de rede unidirecional:

if (myclient.available()) {
    Keyboard.print(myclient.read());
}

Você provavelmente vai querer detalhar isso com uma verificação de erros e coisas do tipo, mas deve funcionar como um esqueleto.


5



Embora isso pareça uma boa solução, minha preocupação aqui seria a dificuldade de se conectar a um KVM baseado em IP. Na maior parte do tempo, estou lidando com uma máquina de hardware que não tem nenhum recurso de internet, ou mesmo qualquer conexão de rede. Quer dizer, há uma porta Ethernet na máquina, mas se é boa para qualquer coisa? - Some_Guy
Além disso, acho que isso não atende ao requisito de não instalar o software na máquina seguidora - Some_Guy
@Some_Guy: Os dispositivos KVM de hardware não requerem software na máquina seguidora. Eles aparecem como dispositivos de hardware K, V e M. Se você considerar anexar um teclado a uma máquina como "instalação de software", seus requisitos serão impossíveis de atender. Além disso, exatamente como você planeja enviar as teclas digitadas para a máquina em tempo real se não houver conexão de rede? Nós ainda não temos transceptores subespaciais ... - qasdfdsaq
Exatamente certo. O líder conecta-se ao dispositivo KVM através da rede e o dispositivo KVM aparece como um teclado (as versões USB e PS2 estão disponíveis) para o seguidor. Então, o seu líder --ethernet-> kvm --USB-> seguidor - ssnobody
Gostaria de acrescentar que, dependendo do dispositivo KVM, alguns têm clientes java e alguns têm interfaces IPMI. O IPMI é um pouco inseguro, mas é amplamente suportado e facilmente programável por scripts, mesmo a partir de um telefone celular. - qasdfdsaq


Aqui está uma solução possível, algum assembly requerido.

Você pode usar um microcontrolador para receber pressionamentos de tecla via rede e transferi-los para o computador ao qual está conectado. Uma possível opção seria Arduino plataforma e é teclado biblioteca, pois pode ser mais simples do que criar o hardware e as bibliotecas. Você também precisará de um software DIY para enviar as teclas e, no caso do Arduino, ele pode ser escrito em seu IDE (ambiente JAVA simplificado). Existem outras plataformas e a maioria delas pode ser reduzida no ambiente de produção se você achar que isso é muito grande ou caro para implantar (já que você pode precisar de mais de uma).


4



Esta é uma boa sugestão, mas parece-me que teensy USB é provavelmente um pouco mais fácil (olhando para isto pjrc.com/teensy/td_keyboard.html), e um pouco mais barato. No entanto, eu adoraria a sua opinião desde que eu não tenho muita experiência. - Some_Guy
Além disso, você acha que seria possível enviar pressionamentos de tecla em tempo real de um computador conectado usando isso, em vez de pré-programado? - Some_Guy
@Some_Guy Parece uma versão reduzida do Arduino que eu estava falando, então deve funcionar bem. Mas você precisaria se conectar de dois computadores ao mesmo tempo para ter pressionamentos de tecla em tempo real e isso não é possível através de uma porta USB. Arduino de tamanho completo pode suportar escudos de rede prontos para separar conexões, por exemplo, enviar pressionamentos de tecla via rede do seu laptop e encaminhar para USB para o computador receptor. - Enis P. Aginić
sim o plano era receber através da porta serial e sair via USB para o teensy - Some_Guy


Isso está longe de ser uma solução pronta para o uso, mas você pode adaptar algo como Teensy USB para realizar essa missão. Eu imaginava configurar o Teensy USB para aparecer como um teclado e, em seguida, carregar um programa no Teensy USB que

  • recebe pressionamentos de tecla em uma conexão serial conectada a seus pinos de I / O e
  • envia esses pressionamentos de tecla para a máquina de destino através de sua conexão USB.

Eu pessoalmente liguei um a um pedal e programo para enviar a tecla 's' quando pisei no pedal, mas esse projeto era muito mais simples do que você precisaria.


3



Falhar em algo mais fácil, isso parece ser uma boa solução (mas eu estou esperando por um mais fácil). Eu estava olhando anteriormente para uma compilação de arduino que parecia mais difícil, mais cara e maior do que isso, então, obrigado! - Some_Guy
Eu quase não tenho experiência em usar microcontroladores (há alguns anos fiz um projeto muito fácil, onde minha mão era mantida por um livro o tempo todo). Vamos dizer que eu fui com o teensy (parece muito bom). Você conectaria um teclado diretamente ao teeny USB com o programa carregado ou passaria por um laptop com uma interface carregada? Que tipo de conectores eu precisaria? - Some_Guy
O TeensyUSB é o teclado. Eu então conecto o laptop ao TeensyUSB usando uma conexão serial (solde um DB9 nos pinos de I / O do TeensyUSB e então conecte o laptop no DB9). Em seguida, use algum software de terminal (kermit?) No laptop para digitar seus caracteres através da conexão serial. Escrever o programa que roda no Teensy USB que recebe o serial e envia as teclas não seria trivial, mas também não seria um grande projeto de engenharia. - Mutant Bob
Eu acredito que existem soluções bluetooth que enviam / recebem dados de porta serial. O BlueSoleil é um software comercial que provavelmente faz isso - manualslib.com/manual/534847/Ivt-Bluesoleil.html?page=49 "A porta serial Bluetooth (SPP) fornece uma porta serial virtual via Bluetooth como uma alternativa a um cabo serial conectado entre um computador e um dispositivo. Qualquer programa que use uma porta serial padrão pode usar a porta serial Bluetooth sem qualquer alteração." bluesoleil.com/bssoftware/BSoftware.aspx  Na verdade, você pode querer conversar com eles e ver o que eles dizem sobre o seu projeto. - Datarecovery.com MK
Oi, eu queria criar outra recompensa e também atribuí-la a essa pergunta, mas parece que tenho que dobrar minha recompensa para fazer isso. Eu realmente aprecio esta resposta, então obrigado! - Some_Guy


Seria um pouco estranho que um teclado recebesse entrada. Acho que entendo um pouco melhor seu ângulo de enviar uma seqüência de teclas de um laptop. O receptor bluetooth (dongle USB) faz o recebimento de um teclado bluetooth. Então esqueça o teclado já que você tem um laptop em seu lugar. Pode haver um receptor bluetooth lá fora que seja de propósito geral e permitirá que você emparelhe e receba dados do teclado de algum outro dispositivo bluetooth. Os dados do teclado são parte do perfil bluetooth para HID ("Human Interface Device Profile") pelo menos isso é coberto. Mas um receptor que vem com um teclado da Logitech, por exemplo, pode não permitir receber nada a não ser um teclado da Logitech. Pesquisar na Amazon por "bluetooth data usb receiver" traz alguns que podem funcionar como os da Mediastic.

Você já tem uma maneira de enviar os dados do laptop via bluetooth? Você perguntou sobre o recebimento, mas não o envio. Já existem algumas perguntas interessantes sobre isso -


0



Bem, você pode realmente receber dados bluetooth de dispositivos que não sejam da Logitech usando um receptor bluetooth da Logitech - forums.logitech.com/t5/Keyboards-and-Keyboard-Mice/… - Datarecovery.com MK
O segundo marcador direciona para github.com/lkundrak/btkbdd/blob/master/btkbdd.pod, que parece descrever a solução solicitada, pelo menos para o Linux. A última bala também parece quase uma duplicata desta questão. +1 - fixer1234


Perfeitamente possível. Na verdade, é o ataque exato do vetor por trás da coisa chamada BAD USB.

Você pode ler em detalhes sobre isso em Aqui.

Basicamente, trata-se de mudar (reprogramar) o stick USB do dispositivo de armazenamento para outro dispositivo HUD. Não é tão fácil de fazer, mas se você tiver tempo e habilidades - sim, é possível. Certamente não é fácil embora.

Um dispositivo BadUSB pode até ter substituído o BIOS do computador - novamente   emulando um teclado e desbloqueando um arquivo oculto no thumb do USB   dirigir.


-1



Isso não é realmente uma resposta. Eu sei que é possível falsificar as teclas digitadas, mas estou procurando um dispositivo que aceite pressionamentos de tecla em tempo real. - Some_Guy
Isso não está claramente indicado na pergunta. No entanto, acho que é mais provável que você use minha solução e faça o dispositivo USB executar comandos no computador. Esses comandos podem ser: 1. comando powershell para fazer o download do netcat no computador, 2. executar o netcat para conectar-se ao endereço IP designado do servidor que está aguardando a conexão. 3. O netcat também está vinculando o shell local à conexão 4. A conexão de recepção do servidor está executando scripts / comandos especificados no computador conectado. Esta é a maneira de completar sua tarefa. Outras soluções provavelmente envolverão algum tipo de instalação, - mnmnc
Além disso, é muito mais fácil fazer o dispositivo BADUSB fazer o download do script para o computador e executá-lo localmente, embora por motivos de segurança a execução do script do PowerShell tenda a ser bloqueada em um sistema Windows 7+ para que a vinculação reversa do shell seja um pouco menos incômoda. - mnmnc
Eu reescrevi esta questão (novamente). O que você acha? - Some_Guy
Seu comentário não aborda o escopo desta questão. Eu preciso executar pressionamentos de tecla em uma máquina externa de uma fonte externa, sem executar nenhum script nessa máquina. Eu estou conectando em sistemas baseados em DOS em alguns casos. O ponto principal da questão é evitar a necessidade de encontrar uma solução para cada plataforma individual. Eu realmente quero algo que, uma vez configurado, seja bom para qualquer coisa que tenha os drivers de entrada mais básicos, e eu possa digitar nele remotamente. - Some_Guy