ayuda con keylog.. porfavor..

Iniciado por Proxy Lainux, 24 Febrero 2008, 23:05 PM

0 Miembros y 1 Visitante están viendo este tema.

Proxy Lainux

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


{
            caracter+=32;
            printf("%c",caracter);
        }


se escriben las minusculas.. pero si kito


            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?



#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

juas juas juas

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.

Proxy Lainux

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

Proxy Lainux

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

botella

este experimento de keylogger funciona pero solo si dejo la tecla apretada màs de lo normal, sino no toma la letra.

Proxy Lainux

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

Proxy Lainux

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

Proxy Lainux

#7
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


#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...


#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...

juas juas juas

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:


#include <stdio.h>

int main()
{
    char tecla;
    printf("introduce una letra:\n");
    tecla=getche();
    if(tecla>=97 && tecla<=122)
    {
         printf("\nEs minuscula\n");
         // Aqui guardas en fichero o haces lo que quieras
    }
    if(tecla>=65 && tecla<=90)
    {
         printf("\nEs mayuscula\n");
         // Aqui tambien guardas en fichero o lo que te apetezca
    }
    fflush(stdin);
    getche();
    return 0;
}


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.

Proxy Lainux

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