Suite à mon petit utilitaire Yubikey, j’ai continué à approfondir l’interface proposée par Linux sur les périphériques entrée/sortie.

J’ai donc repris mon code pour capturer les événements d’un périphérique de type clavier. Comme on récupère ceux-ci directement du kernel, toute la phase de traduction côté userland n’est pas faite : les événements font référence à un clavier Américain. Le programme gère le support des touches spéciales ( Control, Alt, Shift, …) pour essayer de savoir si on a fait C ou Ctrl-C. Le code est disponible à l’adresse http://www.murlock.org/code/keylogger-0.1.tar.bz2

Bien sûr, je décline toute responsabilité pour toute utilisation frauduleuse de cet outil.

Pour lancer l’utilitaire (en tant que root), les logs sont disponible dans le fichier trace.log.

# keylogger path_to_dev_entry

Comment détecter l’outil ?

# lsof /dev/input/event1
 Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
acpid     1615 root    4r   CHR  13,65      0t0 3043 /dev/input/event1
hald-addo 2290 root    4r   CHR  13,65      0t0 3043 /dev/input/event1
Xorg      2378 root   28u   CHR  13,65      0t0 3043 /dev/input/event1
keylogger 8338 root    3r   CHR  13,65      0t0 3043 /dev/input/event1

Exemple: avec changement d’onglet dans un Terminal et exemple de texte capturé

# ./keylogger /dev/input/event1 &
BusType : 17
Vendor  : 1
Product : 1
Version : 43841
Name : AT Translated Set 2 keyboard
Physical Location : isa0060/serio0/input0
# tail -f trace.log
Detected default keyboard layout :
XKBLAYOUT="fr"

<RIGHTCTRL=1><PAGEDOWN><RIGHTCTRL=0>ceci est un exe;ple de keylogger
<UP><HOME><DELETE><RIGHTSHIFT=1>c<RIGHTSHIFT=0>

Autre outil disponible : http://code.google.com/p/logkeys/