Захват событий клавиатуры Linux/dev/inputX

Я пытался захватить события клавиатуры. например Я хочу развернуть кейлоггер с нуля. После 2 часов боя я обнаружил следующее

[email protected]$ ls -l /dev/input/by-id
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd -> ../event1
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-mouse -> ../event2
lrwxrwxrwx 1 root root 9 2010-05-05 21:33 usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-mouse -> ../mouse1

Но когда я попытался

[email protected]$ sudo cat /dev/input/usb-Plus_More_Enterprise_LTD._USB-compliant_keyboard-event-kbd

Это ничего не дает НЕТ НЕТ ВЫХОДА

после немного большего поиска Теперь я думаю, что что-то в Xorg блокирует его.

Значит, больше информации? и в конце сказанного, как я могу прочитать ввод из этого файла? или есть ли другой способ захвата событий клавиатуры?

Ответ 1

Вы читаете неправильное устройство. Или попробуйте все /dev/input/event * или посмотрите в /var/log/Xorg.0.log, для которого устройство используется для вашей клавиатуры.

Ответ 2

Здравствуйте,

Недавно я пытался добиться чего-то подобного.

Посмотрите на проект logkeys:

http://code.google.com/p/logkeys/

Если вы загружаете исходный код и смотрите файл logkeys.cc, вы найдете один способ автоматического определения того, какой /dev/input/event используется вашей клавиатурой. Это позволит вам читать необработанные коды сканирования с клавиатуры, независимо от того, какая программа в настоящее время имеет фокус. Программа logkeys также показывает, как перевести коды сканирования в символы и другие полезные трюки.

Надеюсь, что это поможет,

Markus.

Ответ 3

Простая операция grep в файле /proc/bus/input/devices приведет к включению всех клавиатур в машину:

 grep -E  'Handlers|EV=' /proc/bus/input/devices | \
 grep -B1 'EV=120013' | \
 grep -Eo 'event[0-9]+'

Где EV=120013 - битмаска для событий, поддерживаемых устройством. Как описано здесь.

Так он реализован в logkeys

Ответ 4

Я бы рекомендовал использовать приложение evtest, он перечисляет все ваши устройства ввода и позволяет отслеживать их события.