Pregunta ¿Enviar pulsaciones de teclas en tiempo real a la máquina desde una fuente externa sin instalar software en esa máquina? ¿Quizás un dispositivo USB que se registre como teclado?


Tengo algunos sistemas básicos que ejecutan el software heredado en hardware chirriante. Quiero ser capaz de automatizar muchas tareas mediante el uso de secuencias de comandos automáticas de teclas para tareas que actualmente se deben realizar manualmente. Realmente no quiero instalar ningún software en estas máquinas, y en algunos casos no puedo (ya que ya están al máximo en recursos, o ejecutando compilaciones de Linux, o ejecutando extrañas versiones de Windows simplificadas desde la edad de piedra)

Necesito una solución por la cual pueda recibir pulsaciones de teclas en una máquina en tiempo real sin instalar cualquier software en él. Sin embargo, requerir controladores o software en la máquina que envía pulsaciones de teclas no es problema.

Ese es el problema que necesito resolver. Dada la restricción en la máquina receptora, solo puedo imaginar que una solución podría ser que la entrada sea a través de un dongle Bluetooth o un receptor USB que se registre como un teclado, pero en realidad recibe pulsaciones de teclas que se originan en otra computadora. Si alguien sabe si existe tal pieza de hardware, ¿podría publicar a continuación? O, como alternativa, cualquier otra solución que cumpla los objetivos.


4


origen


¿Qué tal un teclado y receptor bluetooth? ¿Estás evitando eso? Solo tendrías que instalar un controlador para uno de esos. - Datarecovery.com MK
¿Puedes obtener un teclado bluetooth que acepte pulsaciones externas desde un segundo dispositivo? - Some_Guy
Publiqué una respuesta porque fue demasiado larga - Datarecovery.com MK
Por cierto, yo estaba en la universidad durante la edad de piedra de la computadora (antes del bluetooth), y un investigador necesitaba esencialmente lo que describes. Construyó una plataforma que se asentaba encima de un teclado, con un émbolo activado por solenoide para cada tecla. Luego envió las instrucciones de tipeo a su dispositivo desde otra computadora. Supongo que no sería una solución práctica para ti. - fixer1234
Aprecio los comentarios que me piden que cree una respuesta, pero quería sembrar una solución sin perder el tiempo para crear una buena respuesta. Estoy seguro de que aceptará que un comentario que lo señale (y que otros estén dispuestos a escribir una respuesta más completa) en una dirección práctica es mejor que nada. Personalmente, podría conectar un módulo Ethernet y hacer que se convierta en un cliente de eco a través de la red en lugar de serial o bluetooth como sugieren algunos otros, pero de cualquier forma debería resolver su problema. - ssnobody


Respuestas:


Puede usar un KVM remoto basado en IP para generar pulsaciones de teclas en otra máquina en tiempo real.

Simplemente conecte el teclado del KVM (y opcionalmente el video y el mouse) a la computadora a la que desea enviar las pulsaciones de teclas remotas.

A continuación, se conecta a la IP en el KVM a través de su navegador web o la aplicación de sistema nativa proporcionada, y envía las pulsaciones de teclas que desee.

Uno de esos productos es Control remoto del servidor Tripp Lite, KVM externo sobre IP y otro es el Lantronix Spider KVM

Alternativamente, puede reconstruir una versión de uno de estos con solo soporte para teclado (en lugar de soporte para teclado, video y mouse) usando un Teensy USB Dev Board conectado a un Módulo de Ethernet WIZ712MJ con el Kit adaptador Ethernet WIZ812

En ese punto, podrías usar Teensy's ethernet y teclado bibliotecas para escribir un pequeño programa que genera un servidor usando Server.begin(), espera una conexión y luego tiene un bucle while infinito con algo así como el siguiente contenido para crear un servidor de eco de red unidireccional:

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

Es probable que desee completar eso con algunas comprobaciones de errores y similares, pero debería funcionar como un esqueleto.


5



Si bien esto parece una buena solución, mi preocupación aquí sería cuán difícil sería conectarme a un KVM basado en IP. Una gran parte del tiempo estoy lidiando con una máquina de hardware atornillada que no tiene ninguna capacidad de internet, o incluso ninguna conexión de red. Quiero decir, hay un puerto Ethernet en la máquina, pero ¿es bueno para algo? ... - Some_Guy
Además, creo que esto no cumple con el requisito de no instalar el software en la máquina seguidora - Some_Guy
@Some_Guy: los dispositivos KVM de hardware no requieren software en la máquina seguidora. Aparecen como dispositivos de hardware K, V y M. Si considera que un teclado está conectado a una máquina como "software de instalación", entonces sus requisitos son imposibles de cumplir. Además, ¿cómo planea enviar las pulsaciones de teclado a la máquina en tiempo real si no hay conexión de red? Todavía no tenemos transmisores subespaciales ... - qasdfdsaq
Exactamente correcto. El líder se conecta al dispositivo KVM a través de la red y el dispositivo KVM aparece como un teclado (las versiones USB y PS2 están disponibles) para el seguidor. Entonces su líder --ethernet-> kvm --USB-> seguidor - ssnobody
Yo agregaría que dependiendo del dispositivo KVM, algunos tienen clientes Java y otros tienen interfaces IPMI. IPMI es algo inseguro, pero es ampliamente compatible y fácilmente programable incluso desde un teléfono móvil. - qasdfdsaq


Aquí hay una posible solución, se requiere ensamblaje.

Puede usar un microcontrolador para recibir pulsaciones de teclas a través de la red y transferirlas a la computadora a la que está conectado. Una posible opción sería Arduino plataforma y es teclado biblioteca, ya que puede ser más simple que hacer el hardware y las bibliotecas usted mismo. También necesitará software de bricolaje para enviar las teclas y, en el caso de Arduino, se puede escribir en su IDE (entorno JAVA simplificado). Existen otras plataformas y la mayoría pueden reducirse en el entorno de producción si considera que es demasiado grande o costoso de implementar (ya que puede necesitar más de uno).


4



Esta es una buena sugerencia, pero me parece que el USB teensy es probablemente un poco más fácil (mirando esto pjrc.com/teensy/td_keyboard.html), y un poco más barato. Sin embargo, me encantaría su opinión ya que no tengo mucha experiencia. - Some_Guy
Además, ¿cree que sería posible enviar pulsaciones de teclas en tiempo real desde una computadora conectada usando esto, en lugar de preprogramado? - Some_Guy
@Some_Guy Parece una versión escalonada de Arduino de la que estaba hablando, por lo que debería funcionar bien. Pero necesitaría conectarse desde dos computadoras al mismo tiempo para tener pulsaciones de teclas en tiempo real y eso no es posible a través de un puerto USB. Arduino de tamaño completo puede admitir blindajes de red listos para conexiones separadas, por ejemplo, enviar pulsaciones de teclas a través de la red desde su computadora portátil y reenviar a USB a la computadora receptora. - Enis P. Aginić
Sí, el plan era recibir a través del puerto serie y salir a través de USB durante los años - Some_Guy


Esto está lejos de ser una solución lista para usar, pero es posible que pueda adaptar algo como el USB Teensy para lograr esta misión Me imagino configurando el Teensy USB para que aparezca como un teclado, luego cargando un programa en el Teensy USB que

  • recibe pulsaciones de teclas sobre una conexión en serie conectada a sus pines de E / S y
  • envía esas teclas a la máquina de destino a través de su conexión USB.

Personalmente conecté uno a un pedal y lo programé para que enviara la tecla "s" cuando pisé el pedal, pero ese proyecto fue mucho más simple de lo que necesitaría.


3



Fallar algo más fácil, parece una buena solución (pero espero una más fácil). Anteriormente estaba buscando una construcción Arduino que parecía más difícil, más costosa y más grande que esto, ¡así que gracias! - Some_Guy
Apenas tengo experiencia en el uso de microcontroladores (hace años, hice un proyecto muy fácil en el que un libro sostenía mi mano todo el tiempo). Digamos que fui con los adolescentes (se ve muy bien). ¿Conectarías un teclado directamente al USB pequeño con el programa cargado, o pasarías a través de una computadora portátil con una interfaz cargada? ¿Qué tipo de conectores necesitaría? - Some_Guy
El TeensyUSB es el teclado. Luego conectaba la computadora portátil al TeensyUSB usando una conexión serial (soldaba un DB9 a los pines de E / S del TeensyUSB y luego conectaba el portátil a ese DB9). Luego, utilice algún software de terminal (kermit?) En la computadora portátil para escribir sus caracteres a través de la conexión en serie. Escribir el programa que se ejecuta en el USB Teensy que recibe la serie y envía las pulsaciones de teclas no sería trivial, pero tampoco sería un proyecto de ingeniería importante. - Mutant Bob
Creo que hay soluciones bluetooth que envían / ​​reciben datos del puerto serie. BlueSoleil es un software comercial que probablemente lo haga - manualslib.com/manual/534847/Ivt-Bluesoleil.html?page=49 "El puerto serie Bluetooth (SPP) proporciona un puerto serie virtual a través de Bluetooth como alternativa a un cable serial cableado entre una computadora y un dispositivo. Cualquier programa que use un puerto serial estándar puede usar el puerto serie Bluetooth sin ningún cambio". bluesoleil.com/bssoftware/BSoftware.aspx  De hecho, es posible que desee hablar con ellos y ver lo que dicen sobre su proyecto. - Datarecovery.com MK
Hola, quería crear otra recompensa y también adjudicarla a esta pregunta, pero parece que tengo que duplicar mi recompensa para hacer eso. Realmente aprecio esta respuesta, ¡así que gracias! - Some_Guy


Sería un poco extraño que un teclado reciba entrada. Creo que entiendo un poco mejor su ángulo para enviar una secuencia de teclas desde una computadora portátil. El receptor bluetooth (dongle USB) recibe desde un teclado bluetooth. Así que olvídate del teclado ya que tienes un portátil que te envía. Puede que haya un receptor bluetooth que sea de propósito general y que te permita vincular y recibir datos de teclado desde algún otro dispositivo bluetooth. Los datos del teclado forman parte del perfil bluetooth para HID ("Human Interface Device Profile"), al menos eso está cubierto. Pero un receptor que viene con un teclado Logitech, por ejemplo, podría no permitir recibir nada más que un teclado Logitech. La búsqueda en Amazon de "bluetooth data receiver usb" trae algunos que podrían funcionar como los de Mediastic.

¿Ya tiene una forma de enviar los datos desde la computadora portátil a través de Bluetooth? Preguntaste sobre recibir, pero no enviar. Ya hay un par de preguntas interesantes sobre esto:


0



Bueno, es posible que en realidad pueda recibir datos bluetooth de dispositivos que no sean de Logitech usando un receptor Bluetooth Logitech después de todo, forums.logitech.com/t5/Keyboards-and-Keyboard-Mice/... - Datarecovery.com MK
La segunda viñeta enlaza a github.com/lkundrak/btkbdd/blob/master/btkbdd.pod, que parece describir la solución solicitada, al menos para Linux. La última viñeta también parece casi un duplicado de esta pregunta. +1 - fixer1234


Perfectamente posible. De hecho, es el ataque vectorial exacto detrás de lo que se llama BAD USB.

Puedes leer en detalle sobre esto en aquí.

Básicamente, se trata de cambiar (reprogramar) la memoria USB del dispositivo de almacenamiento a otro dispositivo HUD. No es tan fácil de hacer, pero si tienes el tiempo y las habilidades, sí, es posible. Ciertamente no es fácil sin embargo.

Un dispositivo BadUSB puede incluso haber reemplazado el BIOS de la computadora, nuevamente por   emulando un teclado y desbloqueando un archivo oculto en el pulgar USB   manejar.


-1



Esta no es realmente una respuesta. Sé que es posible falsificar las teclas, pero estoy buscando un dispositivo que acepte las pulsaciones de teclas en tiempo real. - Some_Guy
Esto no está expresado claramente en la pregunta. Sin embargo, creo que es más probable que use mi solución y haga que el dispositivo USB ejecute comandos en la computadora. Esos comandos pueden ser: 1. Mandato powershell para descargar netcat en la computadora, 2. Ejecución de netcat para conectarse a la dirección IP designada del servidor en espera de conexión. 3. netcat también vincula el shell local a la conexión 4. La conexión que recibe el servidor ejecuta secuencias de comandos / comandos especificados en la computadora conectada. Esta es la forma de completar su tarea. Es probable que otras soluciones involucren algún tipo de instalación, - mnmnc
Además, es mucho más fácil hacer que el dispositivo BADUSB descargue la secuencia de comandos a la computadora y ejecutarla localmente, aunque por razones de seguridad la ejecución de la secuencia de comandos powershell tiende a bloquearse en un sistema Windows 7+ para que el enlace inverso de shell sea menos molesto. - mnmnc
He vuelto a escribir esta pregunta (nuevamente). ¿Qué piensas? - Some_Guy
Su comentario no aborda el alcance de esta pregunta. Necesito ejecutar las pulsaciones de teclas en una máquina externa desde una fuente externa, sin ejecutar ninguna secuencia de comandos en esa máquina. En algún caso, me estoy conectando a sistemas basados ​​en DOS. El objetivo de la pregunta es evitar tener que encontrar una solución para cada plataforma individual. Realmente quiero algo que, una vez configurado, sea bueno para cualquier cosa que tenga los controladores de entrada más básicos y puedo escribirlo de forma remota. - Some_Guy