LINUX.ORG.RU

Mouse and keylogger

 ,


0

2

Имеются ли исходники или какая то документация по сабжу? Нужно - для проверки была ли активность пользователя за заданный промежуток времени, функции иксов XGrab* не подходят, т.к. это не логгинг а именно граббинг :) Я пока что нашел только вариант с чтением устройства клавиатуры и то не полный, и требующий прав root. Хотя, если без root'a никак то это, в принципе, небольшая проблема.


Ответ на: комментарий от aol

Спасибо, фактически готовое решение для того что мне нужно, если найти ещё и mouse logger такого типа, то вообще сказка, но в любом случае, если что и этот допилю.

batbko
() автор топика
Ответ на: комментарий от batbko

по сути, если «для проверки была ли активность пользователя за заданный промежуток времени», то тебе бОльшая часть всего этого не нужна, а только «открыл устройство, ждешь событий. события не парсишь и не записываешь, только отмечаешь факт их наличия»

а ты хочешь нехорошего - пароли там снифать, логины итд.. ;)

aol ★★★★★
()
Ответ на: комментарий от aol

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

batbko
() автор топика
Ответ на: комментарий от batbko

весь проект по ссылке выше и есть «снипет как слушать события» ;)

я , глядя на него, налабал вот так:

    int input_fd = -1; // input event device file descriptor
    // open input device for reading
    input_fd = open(devname.c_str(), O_RDONLY);
    if (input_fd == -1) {
        //        error(EXIT_FAILURE, errno, "Error opening input event device '%s'", argv[1]);
    }

    struct input_event event;
    // infinite loop: exit gracefully by setting shutDown to true
    fd_set set;
    struct timeval time;

    time.tv_sec = 2;
    time.tv_usec = 0;
    while (!shutDown) {
        FD_ZERO(&set);
        FD_SET(input_fd, &set);
        if (select(input_fd + 1, &set, NULL, NULL, &time) > 0) {
            if (read(input_fd, &event, sizeof(struct input_event)) > 0) {
                if (event.value == EV_MAKE) {
                    //тут что-то надалось
                }

            }
        }
    }
    close(input_fd);

но у меня цели другие ;)

P.S.: выдрано из моего проекта, так что, может быть лишний мусор не по делу.

aol ★★★★★
()
Ответ на: комментарий от batbko

посмотри в том проекте, что на гуглокоде. там есть функция для этого

aol ★★★★★
()
Ответ на: комментарий от aol

ну то есть что бы без риска, лучше реализовать в отдельной службе, дабы пользовательское приложение уже с ней общалось ?

batbko
() автор топика
Ответ на: комментарий от aol

без риска что пользователь останется без нужного ему функционала из-за того что что то нужно настраивать. Вроде как перенастроить udev при установке пакета будет не комильфо ?

batbko
() автор топика
Ответ на: комментарий от batbko

это тебе придется решить самому.

я сую в пакет нужные правила удева. мне так удобно, одобрено командным обсуждением и соответствует запросам заказчика.

aol ★★★★★
()
Ответ на: комментарий от aol

а чем хуже использовать libudev и udev_monitor? Или это я не то нашел? udev_monitor мониторит все события или только подключения устройств ?

batbko
() автор топика
Ответ на: комментарий от batbko

на самом деле, я в это не вникал сильно - времени нет. но, что-то мне кажется, что, да, udev_monitor мониторит только события подключения/отключения устройств.

удивительно, что в эту тему еще никакие «эксперты» не «понабижали»..

aol ★★★★★
()
Ответ на: комментарий от aol

:) Хз я редко на лоре бываю ибо в основном MS специфик или кроссплатформу делаю:) Вроде прошлый раз когда спрашивал тоже всё адекватно было.

batbko
() автор топика
Ответ на: комментарий от batbko

А ещё такой вопрос, я реально не силен в Linux dev, если у меня есть дескриптор устройства, могу ли я как то связать его с неблокирующим сокетом?

batbko
() автор топика
Ответ на: комментарий от batbko

Ну от себя добавлю что в Qt можно использовать QSocketNotifier, а для такой задачи можно и не таскать за собой libudev, если только хидер, т.к. в любом случае нужно слушать /dev/input/event*, т.к. лично я не нашел надежного способа различить клавиатуры от мышек или например от кнопок выключения питания.

batbko
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.