elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Porque no me funciona este codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Porque no me funciona este codigo  (Leído 2,597 veces)
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Porque no me funciona este codigo
« en: 10 Junio 2012, 13:38 pm »

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:
Código:
#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 Desconectado

Mensajes: 1.908


Ver Perfil
Re: Porque no me funciona este codigo
« Respuesta #1 en: 10 Junio 2012, 19:18 pm »

y como vamos a adivinar si siquiera sabemos que hacen las funciones de tus .h,.cpp's


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Porque no me funciona este codigo
« Respuesta #2 en: 10 Junio 2012, 21:30 pm »

Es una especie de xev, no? bueno, algo así sería el código estando más limpio ...

Código
  1. #include <X11/Xlib.h>
  2. #include <X11/Xutil.h>
  3. #include <X11/Xatom.h>
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7.  
  8. #define XBUFFER_SIZE 255
  9.  
  10. int main(int argc, char** argv)
  11. {
  12.  
  13.    Display* xDisplay;
  14.    XEvent   xEvent;
  15.    Window   xWindow;
  16.    char     xKeyBuffer[XBUFFER_SIZE];
  17.  
  18.    unsigned long blackPixel, whitePixel;
  19.    int xLoop = 1, xScreen;
  20.  
  21.  
  22.    /* Abrimos el display y pantalla respectiva  :0.0 ... sin verificar errores */
  23.    xDisplay = XOpenDisplay(0);
  24.      xScreen = XDefaultScreen(xDisplay);
  25.  
  26.   /* Color */
  27.   blackPixel = BlackPixel(xDisplay,xScreen);
  28.   whitePixel = WhitePixel(xDisplay,xScreen);
  29.  
  30.   /* Creamos la ventana (sin verificar errores, deberia) */
  31.   xWindow = XCreateSimpleWindow(xDisplay, DefaultRootWindow(xDisplay), 200, 200,200,200, 200, blackPixel, whitePixel );
  32.  
  33.   /* Nos registramos para obtener el evento de "cerrado" de ventana  .. idem, sin verificar, corrre por tu cuenta */
  34.   Atom wmDeleteMessage = XInternAtom(xDisplay, "WM_DELETE_WINDOW", True);
  35.    XSetWMProtocols(xDisplay, xWindow, &wmDeleteMessage, 1);  
  36.    XMapWindow(xDisplay,xWindow);
  37.    XSelectInput(xDisplay,xWindow,KeyPressMask);
  38.  
  39.   /* Mientras no se cierre la ventana ...*/
  40.   do
  41.   {
  42.     XNextEvent(xDisplay,&xEvent);
  43.  
  44.     if (xEvent.type == KeyPress && XLookupString(&xEvent.xkey, xKeyBuffer, XBUFFER_SIZE, 0, 0 ) == 1 )
  45. printf("Tecla presionada : %s !\r\n",xKeyBuffer);
  46.  
  47.     if (xEvent.type == ClientMessage && xEvent.xclient.data.l[0] == wmDeleteMessage ) xLoop = 0;
  48.  
  49.    } while (xLoop);
  50.  
  51.    /* Destruimos ventana y display ... */
  52.    XDestroyWindow(xDisplay,xWindow);
  53.    XCloseDisplay(xDisplay);
  54.  
  55.    return EXIT_SUCCESS;
  56. }
  57.  
  58.  


Código
  1. gcc -ansi -lX11  ../main.c -o myXev # o clang
  2. ./myXev
  3.  


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 Desconectado

Mensajes: 1.077



Ver Perfil
Re: Porque no me funciona este codigo
« Respuesta #3 en: 11 Junio 2012, 00:40 am »

Gracias por el code, lo probare + tarde, ahora no puedo, y mirare lo de Wayland.

Saludos ;D
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿porqué este programa símplemente no funciona?
Programación C/C++
Lotharsan 8 3,648 Último mensaje 19 Julio 2012, 18:45 pm
por rir3760
¿Porque no funciona? codigo vb6
Programación Visual Basic
RuniksFelipez 1 1,024 Último mensaje 20 Noviembre 2012, 23:28 pm
por Elemental Code
Porque no funciona este codigo?
Programación C/C++
FKT 5 1,968 Último mensaje 9 Agosto 2015, 22:58 pm
por FKT
Podrian decirme porque no funciona mi codigo en el sevidor..
Desarrollo Web
Lupin 4 1,524 Último mensaje 24 Diciembre 2015, 12:22 pm
por eLank0
porque no me funciona este script.bat ??
Scripting
stR_ruBen 4 1,954 Último mensaje 23 Enero 2017, 23:36 pm
por stR_ruBen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines