Autor
|
Tema: Porque no me funciona este codigo (Leído 3,597 veces)
|
0xDani
Desconectado
Mensajes: 1.077
|
Bueno sigo haciendo mi keylogger y me he metido con las Xlib, he hecho este codigo para que recoja los eventos del teclado y los guarde en un archivo, pero no me funciona,me abre el fichero pero esta vacio, si alguien me puede decir porque... Dejo el codigo: #include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdio.h>
int main(){ bool bucle=true; FILE* fichero=fopen("string.txt", "a"); XEvent evento; Display* display=XOpenDisplay(NULL); Window ventana; int pantalla; unsigned long negro, blanco; pantalla=DefaultScreen(display); negro=BlackPixel(display, pantalla); blanco=WhitePixel(display, pantalla); ventana=XCreateSimpleWindow(display, DefaultRootWindow(display), 200, 200, 200, 200, 200, negro, blanco); XMapWindow(display, ventana); XSelectInput(display, ventana, KeyPressMask); XFlush(display); while (bucle==true){ XNextEvent(display, &evento); XFlush(display); switch (evento.type){ case KeyPress: {fputc(getc(stdin), fichero); fflush(fichero);} continue; default: continue; } } return 0; }
Saludos y gracias de antemano.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
y como vamos a adivinar si siquiera sabemos que hacen las funciones de tus .h,.cpp's
|
|
|
En línea
|
|
|
|
Foxy Rider
Desconectado
Mensajes: 2.407
Deprecated
|
Es una especie de xev, no? bueno, algo así sería el código estando más limpio ... #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> #include <stdio.h> #include <stdlib.h> #define XBUFFER_SIZE 255 int main(int argc, char** argv) { Display* xDisplay; XEvent xEvent; Window xWindow; char xKeyBuffer[XBUFFER_SIZE]; unsigned long blackPixel, whitePixel; int xLoop = 1, xScreen; /* Abrimos el display y pantalla respectiva :0.0 ... sin verificar errores */ xDisplay = XOpenDisplay(0); xScreen = XDefaultScreen(xDisplay); /* Color */ blackPixel = BlackPixel(xDisplay,xScreen); whitePixel = WhitePixel(xDisplay,xScreen); /* Creamos la ventana (sin verificar errores, deberia) */ xWindow = XCreateSimpleWindow(xDisplay, DefaultRootWindow(xDisplay), 200, 200,200,200, 200, blackPixel, whitePixel ); /* Nos registramos para obtener el evento de "cerrado" de ventana .. idem, sin verificar, corrre por tu cuenta */ Atom wmDeleteMessage = XInternAtom(xDisplay, "WM_DELETE_WINDOW", True); XSetWMProtocols(xDisplay, xWindow, &wmDeleteMessage, 1); XMapWindow(xDisplay,xWindow); XSelectInput(xDisplay,xWindow,KeyPressMask); /* Mientras no se cierre la ventana ...*/ do { XNextEvent(xDisplay,&xEvent); if (xEvent.type == KeyPress && XLookupString(&xEvent.xkey, xKeyBuffer, XBUFFER_SIZE, 0, 0 ) == 1 ) printf("Tecla presionada : %s !\r\n",xKeyBuffer ); if (xEvent.type == ClientMessage && xEvent.xclient.data.l[0] == wmDeleteMessage ) xLoop = 0; } while (xLoop); /* Destruimos ventana y display ... */ XDestroyWindow(xDisplay,xWindow); XCloseDisplay(xDisplay); return EXIT_SUCCESS; }
gcc -ansi -lX11 ../main.c -o myXev # o clang ./myXev
En términos generales y rudimentarios, así pedís el Input en X ... lo que estabas haciendo era mezclar funciones de consola (bloqueantes, y que toman el buffer de la consola) con las de X (no bloqueantes, y que toman el buffer de X por así decirlo). No te acostumbres mucho a X, usá algún toolkit en lo posible ... No sólo por que la API de X es fea e inestable, sino que también tiene los días contados ya que hay mucha presión de cambiar X a Wayland. Saludos.
|
|
|
En línea
|
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
Gracias por el code, lo probare + tarde, ahora no puedo, y mirare lo de Wayland. Saludos
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿porqué este programa símplemente no funciona?
Programación C/C++
|
Lotharsan
|
8
|
4,669
|
19 Julio 2012, 18:45 pm
por rir3760
|
|
|
¿Porque no funciona? codigo vb6
Programación Visual Basic
|
RuniksFelipez
|
1
|
1,687
|
20 Noviembre 2012, 23:28 pm
por Elemental Code
|
|
|
Porque no funciona este codigo?
Programación C/C++
|
FKT
|
5
|
2,914
|
9 Agosto 2015, 22:58 pm
por FKT
|
|
|
Podrian decirme porque no funciona mi codigo en el sevidor..
Desarrollo Web
|
Lupin
|
4
|
2,578
|
24 Diciembre 2015, 12:22 pm
por eLank0
|
|
|
porque no me funciona este script.bat ??
Scripting
|
stR_ruBen
|
4
|
3,072
|
23 Enero 2017, 23:36 pm
por stR_ruBen
|
|