Código más corto para key-logger

8

Bien, propongo un desafío de registrador de teclas más corto. Como explicó el caballero en " ¿Se permiten las preguntas clave-registrador? ", Deben imponerse reglas estrictas para que este desafío sea válido para PPCG.

  1. El key-logger debe ejecutarse en Windows, Linux o Mac OSX (cualquier lenguaje de programación es bienvenido).
  2. Tras la ejecución, debe mostrar el mensaje: "Voy a iniciar sesión" (ya sea en una consola o usando la GUI).
  3. Las teclas que son relevantes para iniciar sesión en este desafío son letras (el caso no es importante) y números, todos los demás, como símbolos, teclas de control y espacios en blanco, son opcionales y pueden ignorarse.
  4. Todas las pulsaciones de teclas relevantes que se producen durante el tiempo de ejecución (incluso cuando la aplicación no está enfocada) deben guardarse en un archivo de registro que se pueda leer y verificar usando cualquier editor de texto (incluso uno esotérico, siempre que pueda verificarlo usando ese editor de texto).

¿Alguien para eso? Whatdayatink?

MathuSum Mut
fuente
1
"4. [...] guardado en un archivo de registro" ¿en qué formato?
Leaky Nun
Actualicé mi pregunta para especificar el formato deseado.
MathuSum Mut
Puedo registrar fácilmente lo que está escrito en el REPL de mi programa, ¿es suficiente o debería funcionar cuando escribo algo en mi navegador o cualquier otra aplicación también?
coredump
Sí, debería funcionar para cualquier cosa, "incluso cuando la aplicación no está enfocada".
MathuSum Mut
1
¿Podemos escribir un programa que se ejecute en mac (AppleScript), si proporcionamos un gif de ejemplo que se ejecute?
Downgoat

Respuestas:

10

Bash, 90 bytes

Esto funciona en Ubuntu, y requiere evtest. Selecciona un dispositivo que es un teclado y guarda evtestla salida del archivo l. Si quieres una salida más formateada, puedo hacerlo con más bytes.

echo I\'m gonna log you
sudo evtest /dev/input/by-path/`ls /dev/input/by-path/|grep kbd`>l
Trebuchette
fuente
1
Usted señor merece respeto.
MathuSum Mut
5

AutoHotKey, 1171 bytes

Sí, es increíblemente grande, pero hace el trabajo.

#NoEnv ;
SendMode Input ;
ToolTip, I'm gonna log you!

~a::fileappend, a, keylog.txt
~b::fileappend, b, keylog.txt
~c::fileappend, c, keylog.txt
~d::fileappend, d, keylog.txt
~e::fileappend, e, keylog.txt
~f::fileappend, f, keylog.txt
~g::fileappend, g, keylog.txt
~h::fileappend, h, keylog.txt
~i::fileappend, i, keylog.txt
~j::fileappend, j, keylog.txt
~k::fileappend, k, keylog.txt
~l::fileappend, l, keylog.txt
~m::fileappend, m, keylog.txt
~n::fileappend, n, keylog.txt
~o::fileappend, o, keylog.txt
~p::fileappend, p, keylog.txt
~q::fileappend, q, keylog.txt
~r::fileappend, r, keylog.txt
~s::fileappend, s, keylog.txt
~t::fileappend, t, keylog.txt
~u::fileappend, u, keylog.txt
~v::fileappend, v, keylog.txt
~w::fileappend, w, keylog.txt
~x::fileappend, x, keylog.txt
~y::fileappend, y, keylog.txt
~z::fileappend, z, keylog.txt
~1::fileappend, 1, keylog.txt
~2::fileappend, 2, keylog.txt
~3::fileappend, 3, keylog.txt
~4::fileappend, 4, keylog.txt
~5::fileappend, 5, keylog.txt
~6::fileappend, 6, keylog.txt
~7::fileappend, 7, keylog.txt
~8::fileappend, 8, keylog.txt
~9::fileappend, 9, keylog.txt
~0::fileappend, 0, keylog.txt
Michelfrancis Bustillos
fuente
Creativo, no se me ocurrió usar un monitor de teclas de
acceso
El nombre del archivo de registro puede ser un solo carácter que le ahorrará 9 bytes por clave . Debería poder iterar sobre todas las claves en un bucle for, ahorrándole muchos, muchos, muchos bytes. Tal como está, no estoy convencido de que estas respuestas cumplan con nuestros criterios serios de contendiente.
Mego
De acuerdo con las reglas de nuestro centro de ayuda , todas las soluciones deben ser un competidor serio para los criterios ganadores en uso. Para un concurso de golf de código, eso significa que todas las entradas deben mostrar algún intento de jugar el código.
Dennis