Código mais curto para key-logger

8

Ok, proponho um desafio para o menor logger de chaves. Conforme explicado pelo senhor em " São permitidas perguntas do keylogger? ", Regras estritas devem ser impostas para tornar esse desafio válido para o PPCG.

  1. O registrador de chaves deve ser executado no Windows, Linux ou Mac OSX (qualquer linguagem de programação é bem-vinda).
  2. Na execução, ele deve mostrar a mensagem: "Vou registrar você" (em um console ou usando a GUI).
  3. As chaves relevantes para o registro neste desafio são letras (maiúsculas e minúsculas) e números, todas as outras, como símbolos, teclas de controle e espaços em branco, são opcionais e podem ser ignoradas.
  4. Todas as teclas pressionadas relevantes que ocorrem durante o tempo de execução (mesmo quando o aplicativo não está em foco) devem ser salvas em um arquivo de log que pode ser lido e verificado usando qualquer editor de texto (mesmo que seja esotérico, desde que eu possa verificar usando editor de texto).

Alguém quer isso? Whatdayatink?

MathuSum Mut
fonte
1
"4. [...] salvos em um arquivo de log" em que formato?
Leak Nun #
Atualizei minha pergunta para especificar o formato pretendido.
Mathsum Mut
Posso registrar facilmente o que é digitado no REPL do meu programa, isso é suficiente ou deve funcionar quando digito qualquer coisa no meu navegador ou em qualquer outro aplicativo também?
Coredump3
Sim, deve funcionar para qualquer coisa, "mesmo quando o aplicativo não estiver em foco".
Mathsum Mut
1
Podemos escrever um programa que roda em mac (AppleScript), se fornecermos um exemplo de gif em execução?
Downgoat

Respostas:

10

Bash, 90 bytes

Isso funciona no Ubuntu e requer evtest. Ele escolhe um dispositivo que é um teclado e salva evtesta saída no arquivo l. Se você quiser uma saída mais formatada, eu posso fazer isso com mais bytes.

echo I\'m gonna log you
sudo evtest /dev/input/by-path/`ls /dev/input/by-path/|grep kbd`>l
Trebuchette
fonte
1
Você merece respeito.
precisa saber é o seguinte
5

AutoHotKey, 1171 bytes

Sim, é incrivelmente grande, mas faz o trabalho.

#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
fonte
Criativo, não me ocorreu usar um monitor de atalho: P
MathuSum Mut
O nome do arquivo de log pode ser um único caractere, economizando 9 bytes por chave . Você deve poder iterar todas as chaves em um loop for, economizando muitos, muitos, muitos bytes. Como está, não estou convencido de que essas respostas atendam aos nossos critérios sérios de candidatos.
Mego
De acordo com as regras da nossa Central de Ajuda , todas as soluções devem ser um candidato sério aos critérios de vitória em uso. Para um concurso de código de golfe, isso significa que todas as entradas devem mostrar alguma tentativa de golfe no código.
Dennis