Python кейлоггер - PullRequest
       50

Python кейлоггер

0 голосов
/ 24 июня 2018

Я пытался создать кейлоггер в pyhton и наткнулся на этот кусок кода в многочисленных блогах:

file_log='F:\\test\\log.txt'

def onKeyboardEvent(event):
    logging.basicConfig(filename=file_log,level=logging.DEBUG,format='%(message)s')
    chr(event.Ascii)
    logging.log(10,chr(event.Ascii))
    return True

hooks_manager=pyHook.HookManager()

hooks_manager.KeyDown=onKeyboardEvent

hooks_manager.HookKeyboard()

pythoncom.PumpMessages()

Хорошо, у меня тут три сомнения:

Во-первых, насколько я понимаю, chr (event.Ascii) используется для преобразования значений ASCII нажатий клавиш в действительные значения символов. Почему мы делаем это дважды: chr (event.Ascii) logging.log (10, chr(event.Ascii)) .Разве строка: chr (event.Ascii) здесь не нужна?

Во-вторых, какой смысл использовать 's' в формате = '% (message) s'

И в-третьих: я сохранил файл как '.pyw', но когда я дважды щелкнул по немуне получится.Хотя, это работает через Cmd

1 Ответ

0 голосов
/ 24 июня 2018

Насколько я понимаю, chr (event.Ascii) используется для преобразования значений ASCII нажатий клавиш в действительные значения символов. Почему мы делаем это дважды: chr (event.Ascii) logging.log (10,CHR (event.Ascii)).Разве строка: chr (event.Ascii) здесь избыточна.

Да, вы правильно поняли.И это было бы бесполезно, даже если бы оно не было избыточным - это просто оператор выражения, который оценивает выражение без побочных эффектов и ничего не делает с результатами, поэтому он не имеет никакого эффекта, кроме как тратить немного процессорного времени.

Когда вы найдете случайный код где-то в Интернете, нет гарантии, что это блестящий код.

Может быть, автор получал странные значения и решил, что ему нужно иметь возможность установить точку останова прямо передили после этого chr вызова, чтобы они переместили его на свою собственную линию.Или получить исключение, и не знал, как определить, пришло оно из chr или log.Конечно, либо они должны были тогда сделать s = chr(event.Ascii), а затем использовать его в logging.log(10, s) или что-то в этом роде, но, возможно, это была просто быстрая и грязная вещь, которую они просто забыли вернуть.

Или, может быть, авторзнает меньше о Python, чем вы, или идиот, или просто платят по тому, сколько раз они называют встроенными.Кто знает?

...