P2P RDP с Python - PullRequest
       21

P2P RDP с Python

2 голосов
/ 21 марта 2011

Я хочу написать Простой P2P RDP-клиент и сервер на Python.Вот как я это набросал.

  1. Сделайте короткие снимки экрана с интервалом
  2. Сожмите их и отправьте на сервер приложения
  3. Получить события клавиатуры, мыши из приложения сервера,Сериализуйте их и отправьте клиенту.Клиент будет десериализовать их и будет использовать CallInput Calls, чтобы отразить их

, и что мне нужно знать, это

  1. Есть ли в Python библиотека rdp, которую я могу использовать дляупростить мою работу?
  2. Как получить событие клавиатуры или мыши от оператора сервера с Python?
  3. Какой самый простой и простой способ сериализации событий?
  4. Как можно измеритьотносительные координаты X, Y Mouseevent?
  5. Можете ли вы привести любой пример, которому легко следовать?
  6. и последний вопрос, который я слышал, будет проще сделать это в .net, еслиобе платформы используют производную от Microsoft ОС.Это правда?

Мое клиентское приложение будет работать в Windows XP, Vista, 7, а серверное приложение будет работать в Windows / Linux, а также, пожалуйста, укажите, если я что-то упустил.

Ответы [ 3 ]

1 голос
/ 08 августа 2011

Некоторое время назад я написал что-то под названием easyrfb , которое тоже основано на python-vnc-viewer , но я никогда не публиковал его.Это не охватывает именно то, что вы просили, но это очень похоже.В надежде, что это будет полезно, его части теперь можно найти по адресу http://hydra.geht.net/easyrfb/

. Обратите внимание, что файлы там не всегда находятся в рабочем состоянии, потому что файлы напрямую связаны с моей рабочей копией.Но я не часто редактирую.

Теперь он доступен и на GitHub: https://github.com/hilbix/pyrfb/tree/easyrfb

Это то, что он делает на моей стороне:

  • Подключиться клокально работающий Xvnc (технически подойдет любой VNC-сервер)
  • Постоянно записывать текущее содержимое экрана в сильно сжатый тест. jpg
  • Некоторые веб-страницы захватывают это с помощью AJAX и обновляют изображение
  • Щелчки мыши на этом изображении перенаправляются на сервер VNC как щелчки мыши
  • Ввод с клавиатуры можно моделировать с помощью форм
  • И можно делать снимки экрана без потерь в формате PNG
  • Существует файл edit.html для нечеткого сопоставления, основанный на снимках экрана PNG (называемых шаблонами)
  • Сценарии оболочки могут проверять соответствие таких шаблонов или ожидать их сопоставления.

Внутренняя связь осуществляется с использованием TCP, Unix-Sockets и некоторых файлов, поэтому нетрудно изменить его так, чтобы каждый компонент работал в другом месте:

  • VNC-сервер (экранn, чтобы показать)
  • rfbimg.py (который делает VNC -> image и предлагает элемент управления .sock)
  • Сценарии оболочки (при необходимости, используя sendsock.py для разговора .sock)
  • Веб-сервис (AJAX и GET image) с заглушками (команды перенаправления на .sock)
  • Управляющий веб-клиент (любой браузер, даже lynx)или telnet можно сделать)

Пожалуйста, не спрашивайте меня о документации! Используйте источник, Люк!

Предупреждение о психическом здоровье! Полная картина представляет собой большую и уродливую нечистую груду порождающей головную боль рождающей части, которая создает кусочки в основном несвязанных случайно размещенных сложных сценариев с неправильными и вводящими в заблуждение именами, нечистыми копиями, некомментированными и незавершенными половинными правками, все жестко закодировано ровно в одинмашина, вероятно, нуждающаяся в недокументированных локальных 10-летних изменениях в пакетах без обновлений, или даже в старых версиях.Поэтому я не буду раздавать все.(И даже если это звучит знакомо, нет, я не работаю на Microsoft.)

0 голосов
/ 07 января 2018

Согласно этому комментарию GitHub , вы можете использовать libfreerdp через ctypes в Python.

См .: Библиотека FreeRDP на GitHub .

FreeRDP - бесплатная библиотека протоколов удаленного рабочего стола и клиенты http://www.freerdp.com/

0 голосов
/ 22 марта 2011

Ну, кроме "в Python", звучит так, будто вы просто заново изобретаете другой VNC . Большинство современных производных основаны на TightVNC , который с открытым исходным кодом . Если вы понимаете код VNC (C ++) и протокол RFB , который он использует, вы найдете ответы на все свои вопросы.

Эта реализация Python клиента VNC также может быть вам интересна. Однако обратите внимание на комментарий на этой странице:

Для чего это хорошо? Ничего ;-) использовать оригинальный просмотрщик VNC для лучшего производительность.

Может быть, вы сможете достичь своих целей, используя каким-либо образом технологию VNC? (например, создание привязок Python для кода VNC C ++ и / или использование протокола RFB, чтобы вы могли взаимодействовать с существующими серверами / клиентами VNC?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...