Usando logkeys
como um keylogger
Existem vários programas de keylogger disponíveis, eu uso logkeys
dos repositórios aqui. Seus comandos básicos são:
sudo logkeys -s # start logging
sudo logkeys -k # stop logging
Por padrão, logkeys
registra o dispositivo de entrada padrão em /var/log/logkeys.log
. O programa fornece opções para especificar, e. o dispositivo a ser logado, o caminho do arquivo de log e o mapa de teclado em uso, todos eles podem ser encontrados em man logkeys
. Além disso, o o README do github fornece dicas úteis e ajuda na solução de problemas.
Monitorando logkeys
output
Para monitorar o arquivo de saída dos keyloggers, inicio um shell com permissões de root e uso um simples while
loop para constantemente grep
para a palavra de segurança banana
yt . Se a string for encontrada, echo
sobrescreve o arquivo de log, efetivamente excluindo seu conteúdo para que grep
não encontre a mesma string duas vezes. Depois disso, scrot
tira uma captura de tela e a salva em, por exemplo. /home/user/2017-11-08_10:00:00_screenshot.png
.
while :; do
grep -q banana /var/log/logkeys.log &&
(
echo >/var/log/logkeys.log
scrot "/home/user/$(date +%F_%T)_screenshot.png"
)
done
É claro que o script também precisa ser iniciado com permissões de root. Você pode adicionar outros comandos dentro dos colchetes ou outros testes com grep
linhas adicionais, por exemplo,
grep -q apple /var/log/logkeys.log && echo "I found an apple!"
Testando se um programa específico tem o foco
Para executar apenas as teclas de log quando um programa específico tiver o foco, use xdotool
para obter o nome da janela em foco com:
xdotool getactivewindow getwindowname
Colocando tudo junto
#!/ind/bash
# The script takes two arguments, the first being the keyword which triggers
# the below commands and the second being the name of the window to monitor,
# with support of extended regular expressions.
# Example call: sudo bash /path/to/script "banana" '.*Kate'
sleep_time="1" # sleep time between tests for focused window in seconds
logfile="/var/log/logkeys.log" # path to the keylogger's logfile
logkeys_options="-o $logfile" # options for logkeys
commands(){ # command(s) to run
scrot "/home/user/$(date +%F_%T)_screenshot.png"
}
while :; do
# test if a window with the given name is focused
if [[ "$(xdotool getactivewindow getwindowname)" =~ $2 ]]; then
# start logkeys if not running
[ -e /var/run/logkeys.pid ] || logkeys -s $logkeys_options
# search logfile for given keyword
grep -q "$1" "$logfile" && ( echo >"$logfile"; commands )
else
# stop logkeys if running
[ -e /var/run/logkeys.pid ] && logkeys -k
fi
# sleep for $sleep_time seconds before testing again
sleep $sleep_time
done
Sugiro iniciar o script com, por exemplo, sudo bash /path/to/script "banana" '.*Kate'
em uma janela de terminal que por si só não é monitorada, desta forma você pode terminá-la com segurança com Ctrl + C .