11/15/2010

Сигнализация на компьютере с Linux



 Иногда нужно знать, подходил ли кто-нибудь к компьютеру во время вашего отсутствия. Тем самым можно вычислить, заходил ли вообще кто-нибудь домой, пока вас нет, не используя всякие датчики движения, сета и т.п. (Кто же, придя домой не пошевелит мышкой, чтобы скажем, не выключить «случайно» Вами оставленную музыку?).

Нам не понадобятся всяческие сторонние программы, кейлоггеры. Все, что нам нужно уже есть в системе.


Опишу способ для ОС GNU/Linux.


Как известно, все устройства хранятся в каталоге /dev, а устройства ввода в /dev/input. Смотрим, что у нас там:$ls -a /dev/input.

image

У меня имя для устройства мышь mouse0. Смотрим его вывод: #cat /dev/input/mouse0 (от рута, т.к. только ему принадлежат права на чтение /dev/input/mouse0(ну по крайней мере обычно по-умолчанию так). Вы можете посмотреть права командой #ls -l /dev/input/*). Итак, #cat /dev/input/mouse0 не дает нам ничего, но стоит лишь пошевелить мышкой, появляются различные символы. Зацепка есть. Вывод mouse0 мы будем обрабатывать в цикле while.
#!/bin/bash

cat /dev/input/mouse0 | while read i;

do echo "Вместо echo может быть любая команда";

done;


Создаем крохотный bash-скрипт, шевелим мышой, смотрим, что получилось.

image

Работает. Но толку от вывода текста в консоль в этом случае нет. Мы будем извещать пользователя сообщением на jabber(у многих, думаю, есть jabber-клиенты на телефонах). Эту часть я решил реализовать на другом скриптовом языке — python. Нам понадобится библиотека xmpppy для него(ее необходимо установить, если ее у Вас нет или скачать отсюда).
import xmpp

jid = xmpp.JID('bot@jabber.ru')

client = xmpp.Client(jid.getDomain(),debug=[])

conres=client.connect()

authres=client.auth(jid.getNode(),'PASSWORD')

client.Process(1)

client.send(xmpp.Message('dihital@jabber.org','text')) #отсылаем сообщение



Подробно расписывать принцип действия скрипта не буду, почитать о библиотеке xmpppy можно наоффициальном сайте.

Далее правим bash-скрипт для вызова сендера.
cat /dev/input/mouse0 | while read i;

do echo "Вместо echo может быть любая команда";

done;


Запускаем от пользователя, имеющего права на чтение /dev/input/mouse0. Уходим. Если кто-то пошевелит мышью, вам придет сообщение.

Функционал программы минимальный, но самое главное теперь можно расширять скрипт в соответствии с Вашими нуждами(можно, например сделать лог нажатий клавиш на клавиатуре).

Пару слов об операционной системе Windows.

Там есть API функции, mouse_event, GetCursorPos и п.р. Скрипт отправки сообщения останется неизменным. А сам логгер можно сделать на C (windows.h) или опять же на python(для него тоже есть библиотеки для вызова WinApi функций).

Источник: http://habrahabr.ru/sandbox/20410/

Комментариев нет:

Отправить комментарий