Маленькое дополнение для тех кого интересует тема пересылки изображения десктопа. Програмка для провкрки разлияных способов захвата и воспроизведения изображения экрана. В ней есть 4 способа захвата экрана это: D3d09, D3d11, Magnify, GDI; и два варианта воспроизведения D3d11 и GDI. Прога может записть и воспроизвести все что происходит на экране дефолтового монитора. В принципе можно записывать и весь десктоп в смысле все мониторы. Файл который получается в результате - это что-то типа дампа трафика который передается между клиентам и сервером в проге из первого поста. Для примера в архиве есть файл test.vid. Интерфеис убогий - для начала записи нужно нажать кнопку "Write" в появвшемся диалоге указать название файл, потом указать размер файла в мегабайтах и время задержки между кадрами, и снова нажать на эту кнопку чтобы запись началась. Для воспроизведения выбираем файл и давим "Play".
РАЗБОР
Скелет для программы пересылки экрана.
[ обложка статьи ]
Режим чтения
Привет всем, хочу предложить вашему вниманию результаты моего эксперимента с интерфейсом IDXGIOutputDuplication. Из описания в MSDN интерфейс просто волшебный, однако пришлось повозиться для того чтобы приспособить его для пересылки экрана. В результате получилась пародия на RDP или маленький скелетик удаленного управления. Маленький в прямом смысле – неупакованный сервис с сервером в ресурсах весить 50 кбт, если его упаковать, то получится 30 кбт. Выложить это все я решил потому, что я удовлетворил свое любопытство и мне надоело возиться с этим проектом.
Итак, получилось три модуля:
Первый модуль, это клиент для просмотра удаленного экрана; второй модуль, это сервер – захват и сжатие удаленного экрана; третий модуль, это сервис для управления работой сервера т.е. решет проблемы с переключением пользователей.
Все эти модули дают возможность управлять удаленным компом наподобие RDP и подобных ей программ. Есть возможность, обратного вызова, в смысле, когда сервер соединяется с клиентом. Классический вариант, когда сервер висит на каком-либо порту и ждет запросы клиента тоже есть.
Логика работы предельно простая: при помощи интерфейса IDXGIOutputDuplication делаются скриншоты, являющиеся кадрами видеопоследовательности. Для уменьшения трафика изменил цветовую палитру каждого кадра, и на сервер отправляю разницу между кадрами, которая сжимается zlib. Мышь и клавиатура пересылается асинхронно через UDP сокет. Сервис запускает сервер от имени системы при помощи дублирования токена winlogon. Также, сервис перезапускает сервер если изменяется пользователь. Для установки сервиса нужны права админа. Можно сервер использовать и без сервиса. У Сервера есть три режима работы: первый - сервер слушает торт 443 и периодически ищет возможность соединиться с клиентом через порт 7788: второй – сервер не слушает порт и только делает попытки соединиться с клиентом; третий – сервер только слушает порт и все. UDP, порт для пересылки, ввода выбирается произвольно. Обратный вызов работает так: нужно сделать акк. на freedns.afraid.org и связать DNS имя с IP адресом компа на котором запущен клиент для примера: serg.chickenkiller.com связан с 127.0.0.1. ДНС имя серверу известно, через него сервер узнает ИП. В результате, если вы запустите на своем компе сервер и клиент, то через минуту сервер подключится к клиенту и вы увидите копию экрана своего компа. Авторизация между клиентом и сервером происходит автоматически типа примитивный handshake.
В архиве есть исходник и три бинарика. Возможно кому-нибудь все это пригодиться. Нпример пошпионить за кем-нибудь
Итак, получилось три модуля:
Первый модуль, это клиент для просмотра удаленного экрана; второй модуль, это сервер – захват и сжатие удаленного экрана; третий модуль, это сервис для управления работой сервера т.е. решет проблемы с переключением пользователей.
Все эти модули дают возможность управлять удаленным компом наподобие RDP и подобных ей программ. Есть возможность, обратного вызова, в смысле, когда сервер соединяется с клиентом. Классический вариант, когда сервер висит на каком-либо порту и ждет запросы клиента тоже есть.
Логика работы предельно простая: при помощи интерфейса IDXGIOutputDuplication делаются скриншоты, являющиеся кадрами видеопоследовательности. Для уменьшения трафика изменил цветовую палитру каждого кадра, и на сервер отправляю разницу между кадрами, которая сжимается zlib. Мышь и клавиатура пересылается асинхронно через UDP сокет. Сервис запускает сервер от имени системы при помощи дублирования токена winlogon. Также, сервис перезапускает сервер если изменяется пользователь. Для установки сервиса нужны права админа. Можно сервер использовать и без сервиса. У Сервера есть три режима работы: первый - сервер слушает торт 443 и периодически ищет возможность соединиться с клиентом через порт 7788: второй – сервер не слушает порт и только делает попытки соединиться с клиентом; третий – сервер только слушает порт и все. UDP, порт для пересылки, ввода выбирается произвольно. Обратный вызов работает так: нужно сделать акк. на freedns.afraid.org и связать DNS имя с IP адресом компа на котором запущен клиент для примера: serg.chickenkiller.com связан с 127.0.0.1. ДНС имя серверу известно, через него сервер узнает ИП. В результате, если вы запустите на своем компе сервер и клиент, то через минуту сервер подключится к клиенту и вы увидите копию экрана своего компа. Авторизация между клиентом и сервером происходит автоматически типа примитивный handshake.
В архиве есть исходник и три бинарика. Возможно кому-нибудь все это пригодиться. Нпример пошпионить за кем-нибудь
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Продолжить чтение
Следующий разбор
Написание NSE скриптов для Nmap: от основ к бою
Комментарии
20