Poker-AI.org http://poker-ai.org/phpbb/ |
|
Mouse + Keylogger http://poker-ai.org/phpbb/viewtopic.php?f=26&t=2594 |
Page 1 of 1 |
Author: | HontoNiBaka [ Wed Sep 18, 2013 3:33 am ] |
Post subject: | Mouse + Keylogger |
Since someone requested a mouseclick logger, I created a mouse and keyboard logger in C++ Code: #include <iostream> #include <Windows.h> #include <stdio.h> #include <stdlib.h> #include <thread> #include <chrono> #include <fstream> #pragma comment(lib, "user32.lib") std::string path = "C:\\test\\clicks.txt"; HHOOK kHook = NULL; HHOOK mHook = NULL; using namespace std; void UpdateKeyState(BYTE *keystate, int keycode){ keystate[keycode] = GetKeyState(keycode); } void MoveMouse(int x, int y){ MOUSEINPUT m; m.dx = x*(65536/GetSystemMetrics(SM_CXSCREEN));//x being coord in pixels m.dy = y*(65536/GetSystemMetrics(SM_CYSCREEN));//y being coord in pixels m.dwExtraInfo = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; INPUT inPut = {}; inPut.type = 0; inPut.mi = m; std::this_thread::sleep_for(std::chrono::milliseconds(2)); SetCursorPos(x, y); SendInput(1, &inPut, sizeof(inPut)); } LRESULT CALLBACK LowLevelKeyBoardProc(int nCode, WPARAM wParam, LPARAM lParam){ //WARAM is WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, WM_SYSKEYUP //LPARAM is the key information cout << "key pressed"; KBDLLHOOKSTRUCT cKey = *((KBDLLHOOKSTRUCT*)lParam); wchar_t buffer[5]; //get the keyboard state BYTE keyboard_state[256]; GetKeyboardState(keyboard_state); UpdateKeyState(keyboard_state, VK_SHIFT); UpdateKeyState(keyboard_state, VK_CAPITAL); UpdateKeyState(keyboard_state, VK_CONTROL); UpdateKeyState(keyboard_state, VK_MENU); //Get keyboard layout HKL keyboard_layout = GetKeyboardLayout(0); //Get the name char lpszName [0x100] = {0}; DWORD dwMsg = 1; dwMsg += cKey.scanCode << 16; dwMsg += cKey.flags << 24; int i = GetKeyNameText(dwMsg, (LPTSTR)lpszName, 255); //convert Key Info int result = ToUnicodeEx(cKey.vkCode, cKey.scanCode, keyboard_state, buffer, 4, 0, keyboard_layout); buffer[4] = L'\0'; char ch[260]; char DefChar = ' '; WideCharToMultiByte(CP_ACP,0,buffer,-1, ch,260,&DefChar, NULL); string s = ch; cout << "key: " << cKey.vkCode << " " << ch << endl; return CallNextHookEx(kHook, nCode, wParam, lParam); } void saveClick(std::string path, int x, int y){ ofstream file; file.open (path.c_str(), std::ios_base::app); if(file.is_open()){ file << "X: " << x << " Y: " << y << std::endl; file.close(); } else std::cout << "unable to open file" << std::endl; } LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam){ MSLLHOOKSTRUCT lP = *((MSLLHOOKSTRUCT*)lParam); if(wParam == WM_MOUSEMOVE){ int x = lP.pt.x; int y = lP.pt.y; cout << "x: " << x << " y: " << y << endl; //comment this out, if you dont want to cout the mouse position every time it moves } if(wParam == WM_LBUTTONDOWN){ int x = lP.pt.x; int y = lP.pt.y; saveClick(path, x, y); } return CallNextHookEx(mHook, nCode, wParam, lParam); } int main(){ MSG msg; kHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyBoardProc, NULL, 0); mHook = SetWindowsHookEx(WH_MOUSE_LL, LowLevelMouseProc, NULL, 0); if(kHook == NULL){ cout << "KeyBoard-Hook failed!"; } if(mHook == NULL){ cout << "Mouse-Hook failed!"; } while(GetMessage(&msg, NULL, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } It can print the mouse coordinates to the screen, whenever the mouse moves and it also prints pressed keys. It saves mouseclicks to a txt file. Saving keyboardstrokes to a file should be no problem with the code provided. |
Page 1 of 1 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |