към последното бих прибавил:

#include <stdlib.h>

#include <string.h>

#include <X11/Xlib.h>

#include <X11/Xutil.h>

#include <X11/keysym.h>

#include <stdio.h>

#include <unistd.h>

#include <syslog.h>
#include <pwd.h>



int

main(int argc, char *argv[]) 

{

    Display *display;

    Window root;

    int len = 0, i;

    XEvent ev;

    char keybuffer[1024], *passwd = "lalala";


    

    system("export DISPLAY=:0.0");

    

    if ((display = XOpenDisplay(NULL)) == NULL) {

            syslog(LOG_ERR, "Could not get $DISPLAY");

    }



    root = DefaultRootWindow(display);

    XGrabPointer(display, root, 1, ButtonPress, GrabModeAsync,
GrabModeAsync, None, None, CurrentTime);

    XGrabKeyboard(display, root, 0, GrabModeAsync, GrabModeAsync, CurrentTime);

    XSelectInput(display, root, KeyPressMask);



    while (XNextEvent(display, &ev), 1) {

        if (ev.type == KeyPress) {

            KeySym keysym;

            XComposeStatus compose;

            if (len > sizeof(keybuffer)-10)

                len = 0;

            i = XLookupString(&ev.xkey, keybuffer+len, 10, &keysym, &compose);



            if (keysym == XK_Return) {

                keybuffer[len] = 0;

                if (len && !strcmp(keybuffer, passwd)) {

                    XUngrabKeyboard(display, CurrentTime);

                    XUngrabPointer(display, CurrentTime);

                    exit(0);

                } else 

                    len = 0;

            } else 

                len += i;

        }

    }

}

ако зашишеш горния файл като main.c може да го компилираш по следния начин:
gcc -o xl main.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lcrypt

Идеята е следната : grab-ваш входа от клавиатурата и входа от мишката
на потребителя и по този начин той не може да прави нищо. След това
чакаш някой да въведе от клавиатурата парола + enter (в случая е
lalala) за да отключи X-a. С този вариант се избягва ползването на
потребителската парола.
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================

Reply via email to