Skip to content
 
 

Repository files navigation

ScreenView

Приложение для просмотра экрана удалённого компьютера и управления им в доверенной локальной сети.

Проект является форком iplexa/screenview.

Возможности

Сервер

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

Клиент

  • передача изображения экрана серверу;
  • запуск с указанием IP-адреса и порта сервера;
  • порт 9999 по умолчанию;
  • автоматическое переподключение после разрыва соединения;
  • работа через pythonw.exe без консольного окна при запуске BAT-файлом;
  • отдельные сценарии запуска и остановки для Windows;
  • хранение PID запущенного клиента в локальном файле client.pid.

Текущее состояние

Реализованы серверная и клиентская части, автоматическое переподключение клиента и сценарии запуска для Windows.

В следующих обновлениях планируются:

  • автоматическая сборка EXE;
  • версионирование приложения;
  • публикация готовых сборок через GitHub Releases;
  • дальнейшая переработка сетевого протокола.

Требования

  • Windows 10 или Windows 11;
  • Python 3;
  • сетевое соединение между компьютерами.

Установка

Клонируйте репозиторий и перейдите в его каталог:

git clone https://github.com/dentatli/screenview.git
cd screenview

Создайте виртуальное окружение:

python -m venv .venv

Установите зависимости:

.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

Запуск сервера

Запустите сервер из исходного кода:

.\.venv\Scripts\python.exe server.py

После запуска нажмите Start Server.

По умолчанию сервер слушает TCP-порт 9999.

Запуск клиента

Через Python

Укажите IP-адрес сервера:

.\.venv\Scripts\python.exe client.py 192.168.0.169

Можно явно указать порт:

.\.venv\Scripts\python.exe client.py 192.168.0.169 9999

Если порт не указан, используется 9999.

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

После потери соединения клиент не завершается и повторяет попытки подключения автоматически.

Через start_client.bat

Запуск с IP-адресом сервера:

.\start_client.bat 192.168.0.169

Запуск с IP-адресом и портом:

.\start_client.bat 192.168.0.169 9999

Если IP-адрес не передан, сценарий предложит ввести его вручную.

Сценарий:

  • запускает клиент через .venv\Scripts\pythonw.exe;
  • создаёт локальный файл client.pid;
  • не запускает второй экземпляр, если текущий клиент уже работает.

Файл client.pid является локальным служебным файлом и не добавляется в Git.

Остановка клиента

.\stop_client.bat

Сценарий читает PID из client.pid, проверяет процесс клиента, завершает его и удаляет PID-файл.

Полноэкранный режим

Переместите основное окно сервера на нужный монитор и нажмите Fullscreen.

Для выхода используйте:

  • Esc;
  • F11;
  • кнопку Exit Fullscreen.

Брандмауэр

Разрешайте входящие подключения к TCP-порту 9999 только от доверенных клиентских компьютеров.

Пример ограничения доступа в локальной сети:

сервер: 192.168.0.169
разрешённый клиент: 192.168.0.136
порт: TCP 9999

Безопасность

Приложение предназначено только для компьютеров, которыми вы имеете право управлять.

Текущая версия сетевого протокола:

  • не использует шифрование;
  • не выполняет аутентификацию клиента и сервера;
  • использует Python pickle для передачи управляющих команд.

Из-за этого приложение нельзя напрямую выставлять в интернет или запускать в недоверенной сети. Используйте его только в изолированной или доверенной локальной сети и ограничивайте доступ средствами брандмауэра.

Структура проекта

server.py          сервер и интерфейс просмотра
client.py          клиент передачи экрана
protocol.py        общий пакетный протокол TCP
start_client.bat   запуск клиента в Windows
stop_client.bat    остановка клиента в Windows
requirements.txt   зависимости Python
tests/             модульные тесты

Проверка

.\.venv\Scripts\python.exe -m unittest discover -s tests -v

Лицензия

Перед распространением форка необходимо проверить условия лицензирования исходного проекта.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages