Удаленное управление компьютером через браузер

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

На определенной стадии понял что для этих целей хорошо подходит технология WebRTC. Такое решение есть у Chrome браузера, оно устанавливается через расширение. Но хотелось сделать маловесную программу, которая будет работать без установки.

Сначала попробовал использовать библиотеку которую предоставляет Google, но после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB. Друг помог с интерфейсом на JS, вот что в итоге получилось.

Запускаем программу:

image

Открываем ссылку во вкладке браузера и получаем полный доступ к рабочем столу:


Небольшая анимация процесса установки соединения:


Поддерживается Chrome, Firefox, Sаfari, Opera.

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

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

  • SDP протокол описания потоковых данных
  • ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
  • DTLS соединение и передача ключей в RTP сессию
  • RTP и RTСP протоколы с шифрованиям для передачи медиа данных
  • Передача H264, VP8 и Opus по RTP
  • SCTP соединение для передачи бинарных данных

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 77

    +1
    Крутотень! А где для не винды? В лендинге указано: Подключение возможно к компьютерам работающим на всех популярных операционных системах: Windows, MacOS, Linux. А скачать только exe можно…
      +3
      MacOS версию скоро выложим, Linux версия еще в разработке.
        +3
        В Хром же свой удалённый рабочий стол есть, работает на маках точно remotedesktop.google.com
          +1
          но там нужна учетка гугла =\
            0
            На Linux тоже работает. Вообще не очень ясны преимущества того, что сделал автор перед станадартным chrome remote desktop.
          +2

          дайте урл на гитхаб

            +4

            Что-то подсказывает, что исходники закрыты...

              –7
              К сожалению, на гитхаб исходников нет
                +21
                Не понимаю тогда ценность статьи… Вот я с другом сделал, никакой технической информации
                  +10

                  Денег они делать будут, вот ценность
                  А так все плотно на таймвьювере сидят, поэтому может не аыстрелить

                    +1
                    Если ценник будет более демократичным, то может и выстрелить. Учитывая, что TeamViewer стоит баснословных денег для малого бизнеса.
                      +1

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

                      +2
                      Можно и подвинуть, конкурентов мало, в браузере вообще первый раз вижу, на киллерфичу вполне тянет.
                        0
                        Продукт — Удаленный рабочий стол Chrome

                        Может не так удобно, но как бы решение вполне себе рабочее
                        А вот что будет с этими, после очередного обновления Chrome- вопрос хороший
                        Мы сами пишем для своих нужд расширения к хрому, ломаются они с хорошей переодичностью, потому что возникают новые требования хрома.
                        +1
                        А так все плотно на таймвьювере сидят, поэтому может не аыстрелить

                        Тимвьюер сделал всё, что мог, чтобы захотеть о нём забыть. А AnyDesk сделал это возможным.
                          0
                          AnyDesk рулит.
                          Но есть вопросы.

                          1. Как крутить колёсико?
                          2. Как бы включить Передачу 1:1 клавиатуры? Надоедает постоянно переключать.
                          3. Почему не пишет сеансы? Ни на одном компе не удалось настроить
                            0
                            1. Как обычно, пальцем. Если у вас вместо прокрутки страницы на удалённом компьютере происходит масштабирование, то это «залипание» Ctrl, лечится перезапуском AD на удалённом (перезагрузкой удалённого наверняка).
                            2. Есть в последних версиях, работает. Когда подключение состоялось, вверху есть панель, на ней кнопка со значком клавиатуры.
                            3. Не пользуюсь, но пишут, что есть: support.anydesk.com/Session_Recording
                  0
                  Это получается некоторый аналог noVNC?

                  github.com/novnc/noVNC
                    +11
                    — Getscreen.me лучше, чем VNC.
                    — Ну чем, чем лучше?
                    — Чем VNC. (tm)
                    Шутка.
                    На самом деле неплохая штука (судя по рекламе).
                    Если будут исходники, ага.
                    Иначе же — очередной тимвьювер.
                    +3
                    … библиотеку которую предоставляет Google, после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB
                    :)
                      0
                      Выглядит интересно. Присоединяюсь к вопросу про гитхаб и другие ОС.
                      Есть сравнение с существующими webrtc remote desktop? Типа webrtc-desktop-sharing, screencat и т.д.?
                      И самое интересное — работает ли с телефонами?
                        0
                        С андроида работает.
                          0
                          Хотелось бы наоборот — с браузера заходить на телефон.
                        0
                        Идеальная штука для энтерпрайз. Очень интересно было бы прочитать как это все работает более подробнее
                          +1
                          Идеальная? А как же проверка балансом этого ПО? Завтра все SOC будут исследовать модификации ПО хакерами которое используется в злых целях
                            0
                            К сожалению, для энтерпрайз лучше удаленный доступ от MS SCCM. Если SCCM не требуется — это не энтерпрайз.
                            0

                            Сделайте Платный Коммерческий продукт с дополнительным функционалом и развивайте. У вас есть все шансы догнать тимвивер

                              0
                              Жаль, но ещё живые старички типа WinХР в пролёте… Не запускается.
                                +1
                                А ничего что последнюю версию самого Chrome уже не поставить на ХР. Если лет 5-7 назад я бы еще понял желания остаться на ХР в угоду выигрышу по скорости работы. Но сейчас то что? Множество софта уже не поддерживается, сама винда тоже (танцы с бубном вокруг прикладывания POS версий не берем) а железо, которое уже нормально потянет семерку стоит копейки.
                                  +7
                                  Мне что, со своей зарплаты пойти купить больше сотни машин в контору?
                                  И еще столько же принтеров с рулонной подачей?
                                  А денег не дают, документы набираются и ладно…
                                  Не все же строят космические корабли и создают виртуальные реальности.
                                  Так вот приходится и ХР шевелить.
                                    0
                                    Так я претензий вам не предъявляю. Но можно таки объяснить руководству о необходимости апгрейда. Документы набираются и ладно, но если очередной вирус Petya бомбанет сотню машин за один день, будет интересно посмотреть на последствия. Несколько лет назад я лично участвовал в разруливании такой ситуации в одном из казначейств Украины. Тогда резко начали находится деньги, лишь бы все опять заработало.
                                      0
                                      К сожалению у власть имущих очень короткая память, и скоро ситуация начнет повторяться, уже с Windows 7
                                        0
                                        А обновлённые Windows 10 от Пети не пострадали?
                                          +1
                                          Если честно, Windows 10 у них не припомню вообще. Помню что рабочими остались несколько машин на Windows 7. Все ПК с ХР были заражены, никаких бекапов не было. Сотрудник, который отвечал за ИТ инфраструктуру, оргтехнику был сокращен год до этого :-)
                                            0
                                            Даю справку :)
                                            Из около 30 компьютеров (два сервера + половина W10, половина XP) у нас уцелели только те, что не были включены (сотрудники в отпуске). Бэкапы серверов были, пользовательские устанавливались начисто клонированием, потом месяц восстанавливали уцелевшие файлы (целых оказалось мало, в основном — зашифрованные). Вирус пришёл с обновлением ПО, захватил сервера, через них пользовательские компьютеры. Потом в течение суток спокойно шифровал всё.
                                              0
                                              Я во время эпидемии админил сеть из 270 ПК + 5 серверов в организации. Один сервер на винде, компьютеры пользователей Windows 10\8\7\XP в процентном соотношении примерно 60\6\30\4. Не заразился никто. Реальный IP на серверах, пользователи за NAT и Firewall на микротик, на ПК пользователей штатный антивирус от МС.
                                              Уже на спаде эпидемии одна из руководителей открыла письмо на gmail от неизвестного источника с вложением типа «Счет №243». Не долго думая, она открыла посмотреть что там такое ей прислали и появилась консоль и «побежали буковки». Шифратор-вымогатель хотел 800$ в биткоинах. Она работала на ХР, еще и под админом, поскольку какой то древний специфический софт по архитектуре и строительству иначе не работал. В итоге пришлось форматнуть винт, а из даных осталось только то что она время от времени скидывала на флешку, не прям катастрофа, но неприятно.
                                              Кстати, у бухов также был софт «Медок», через обновление которого вроде б как прилетал Петя, но и там все ОК, что даже странно было.
                                    0
                                    Firefox крайний для Windows XP был сильно новее, чем Chrome. А форки, вероятно, можно даже почти актуальные найти.
                                    Firefox 52 was the last to run on Windows XP and long-term support has been terminated with the release of 62. It's estimated that based on current trends, only two per cent of users were on XP anyway.
                                      0
                                      Я имел в виду, что софтина как сервер под ХР не запускается, пишет, что не «приложение Win32». Ну да ладно. Главное, что если сервером работает более свежая ось, то с ХР смотреть можно, как раз через Фырфокс 59 и его клоны (симанки, к примеру).
                                      Замечено сегодня, что связь каждые пять минут рвётся. Не выяснял почему, мож микротик с параноидальными настройками чудит…
                                      Ну и через прокси не ходит, но мы и не ожидали.
                                        0
                                        пишет, что не «приложение Win32».

                                        Как минимум можно посмотреть версию ОС, которая прописана в PE заголовке, и изменить. А после посмотреть в подключаемые dll на предмет отсутствующих импортов. И если все импорты корректны, то можно запускать.
                                    0
                                    А какие порты он требует? хотел зайти на компьютер, у которого разрешены только tcp 80 и 443, но не смог подключиться. Я как раз думал, что WebRTC должно решать эту проблему — ведь это браузерная технология. Или у меня проблема в другом?
                                    0

                                    Не слушайте этих остряков. Материал очень интересный, пишите по всем вопросам и не одну статью

                                      0
                                      Спасибо, начну готовить первую статью
                                        0
                                        Если можно:
                                        «ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера»
                                        Пожалуйста.
                                        Ниже скинули ссылку, но там не всё верно.
                                      +4

                                      Где исходники

                                        +1
                                        А на какую целевую аудиторию рассчитываете? Кроме дорогого и сверхпопулярного Тимвьювера есть еще и дешевый AmiAdmin.

                                        А еще могу раскрыть страшную тайну. В Хроме есть совсем бесплатное приложение Удаленный рабочий стол Chrome. И это не единственное его преимущество: у него нет пароля с латинскими буквами. А цифры тётки из бухгалтерии называют гораздо бодрее, чем «с как доллар» и «ж как ручка от зонтика».
                                          +1
                                          Ammyy Admin знаменит тем, что его компроментируют раз в три года и несколько месяцев с официального сайта раздается зараженный бинарник.
                                          Ну, такое. Многие антивирусники в СНГ его считают по умолчанию зараженным, любую его версию :)
                                            +1

                                            Есть еще litemanager, правда интерфейс адовый

                                          +31
                                          Запустить проприетарный закрытый EXEшник от непонятных людей на своем ПК
                                          Дать ему полный доступ в Интернет
                                          Дать ему полный доступ к экрану ПК
                                          Дать ему полный доступ к файловой системе

                                          @
                                          Нууууу, я подууууууумаю конечно, нооо…
                                            0

                                            По моему ответ очевиден.

                                              +5
                                              Установить немедленно!
                                              0

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

                                                0

                                                TeamViewer тоже закрыт и без исходников. Но миллионы людей им пользуются

                                                +8

                                                Без исходников ценность статьи стремится а пределе к нулю. Вряд ли кто-то будет на каждодневной основе использовать этот продукт. Запустят на виртуалке, потакают и откатятся.

                                                0
                                                Offtopic/2: есть ли альтернативы ТимВьюер Host для Android? Т.е. удаленный полный контроль с коннектом без подтверждения юзером через любой тип Internet-соединения, включая 3G-4G. (может и через свой сервер)
                                                  0
                                                  Теоретически можно намутить с VNC router.
                                                  Но это чисто умозрительно и предмет исследований.
                                                    0
                                                    https://github.com/Genymobile/scrcpy
                                                    Управлять Android-смартфоном по USB или TCP как по VNC (с графикой).

                                                    Работает по ADB и без рута: включил на телефоне режим отладки, подключил к компьютеру, запустил scrcpy и вперёд.
                                                    Мышкой работаем как тачскрином (ПКМ == назад, колёсико == домой), клавиатура, к сожалению, всегда печатает на английской раскладке (возможно, это можно исправить). На телефон ничего устанавливать не нужно, работает с минимальной задержкой
                                                      0
                                                      Нужно именно очень удаленное управление. К компьютеру подключения «не удаленного» не предполагается.
                                                    +4
                                                    Сугубо моё личное мнение:
                                                    Если планируется для бизнеса, то будет огромный плюс, открытые исходники клиентской части, при том, серверную можно будет оставить закрытую. Это сразу вынесет вас вперед перед конкурентами.
                                                      0
                                                      >Это сразу вынесет вас вперед перед конкурентами.
                                                      ИМХО в клиентской части сама фишка и не появится ли куча клонов?
                                                      И не сойдет ли рынок вообще на нет?
                                                      Если у ребят цель часть рынка забрать себе, то это одна линия поведения, если альтруизм или этот продукт просто идет паровозом, который тащит другой основной продукт, то это другая линия, тогда может и выложат все. Но раз еще не выложили исходники, значит хотят монитезировать свое творение.
                                                      PS:
                                                      Аналогичный функционал уже есть у другого продукта, лет 7 точно.
                                                      Европейцы ставили свое ПО и обслуживали его, через этот сервис, аналогичный тимвьюверу, с возможностью ч/з веб.браузер управлять удаленной машиной.
                                                      Если шибко надо, могу залезть в документацию, посмотреть, но ч/з неделю т.к. в отпуске.
                                                        +3
                                                        >> не появится ли куча клонов?
                                                        Ну я подозреваю, что нет. Например есть Chrome Remote Desktop, открытая клиентская часть с закрытым сервером (хотя может и не закрытый, поправьте если я не прав), тем не менее множества аналогичных программ основанных на нем я не вижу.

                                                        Для захвата рынка нужна какая-то фича. Иначе просто будут пользоваться, чем пользовались раньше.
                                                        С открытым клиентом, можно смело заявлять «у нас все безопасно, смотрите исходники!»
                                                        Ни TeamViewer, ни anydesk, ни ammyy такого заявить не могут.

                                                        Опять же касаемо клонов: часто дешевле оплатить не большую АП за использование, чем поднимать и поддерживать свои сервера.
                                                          0

                                                          Я считаю очень недальновидным планы по завоеванию рынка, путем привязывания к браузеру, который ко всему считается шпионским.
                                                          Завоевать рынок, это найти 10к корп клиентов аля газпром, а так опенсорс вытеснит, просто никто серьезно не занимался

                                                        0
                                                        с чего ктото взял что это конкурент тимвьюверу? у них там дофига функционала которого тут ещё долго не будет, как связанных с безопасностью так и с разными фичами для удобства, жалко что не опен сорс, вот тогда бы можно было поговорить о конкуренции, а так можно разве что попробовать продать в качестве импортозамещения :D

                                                        но тема интересная голосую за опенсорс, денег наверно меньше заработаете, но и париться надо меньше, помошников должно хватить чтоб проревьювить безопасность и дописать полезные фичи
                                                          0
                                                          Долго искал ссылку «скачать» или на сайт :)
                                                          Потом понял — на скрине видно куда идти.
                                                            0
                                                            А что используется в качестве сервера WebRTC для передачи видео?
                                                              0
                                                              Присоединяюсь, + интересно сигналинг сами делали или готовый. Мы вот coturn используем, а с клиента через PeerJS работаем, там и сигналинг есть
                                                              0
                                                              Что за реклама из песочницы? Как то работает?
                                                              Объясните, пожалуйста, в общих чертах, хотя бы, как через ссылку на ваш сайт я попаду на свой ПК? Особенно, если мой ПК за NAT. Спасибо.
                                                                0
                                                                Простое описание как работает установление соединения через ICE между клиентами за NAT
                                                                forasoft.github.io/webrtc-in-plain-russian
                                                                  +1
                                                                  Спасибо, конечно. Но это описание, по крайней мере в части работы STUN сервера, является неверным. Неверно описан алгоритм работы NAT, в таблице не учитывают адрес и порт STUN сервера. Из-за этого делают неверный вывод:
                                                                  Что же дальше? Какая от этого всего польза? Польза – это запись в таблице r1_nat. Если теперь кто угодно будет отправлять на роутер r1 пакет с портом 888, то роутер перенаправит этот пакет узлу p1. Таким образом, создался небольшой узкий проход к спрятанному узлу p1.
                                                                  Там всё сложнее и применять за NAT получится только UDP, потому что stateless. Но подробности были бы интересны. Так что я голосую за:
                                                                  ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
                                                                  .
                                                                    0
                                                                    в таблице не учитывают адрес и порт STUN сервера.

                                                                    Но ведь учитывают же?


                                                                    Например, в симметричной таблице NAT сохраняются еще 2 параметра — IP и порт удаленного узла.
                                                                0
                                                                На следующей неделе попробую связать два компа, оба за NAT, с помощью этой программки.
                                                                Если всё заработает, да ещё и не потребует админских прав — это будет просто прекрасно! И если в дальнейшем при монетизации политика будет более вменяемой, чем у конкурентов, то проект ждёт хорошее будущее.
                                                                Удачи Вам!
                                                                  0
                                                                  Очень круто, я вот как раз задумывался над тем, как бы мне удаленно управлять
                                                                  телевизором (когда я за NAT), возможно и вашу идею по изучаю, спасибо.
                                                                    0
                                                                    Есть еще такой проект — github.com/phoboslab/jsmpeg-vnc, с помощью него можно даже в игры играть таким образом.
                                                                      0
                                                                      По заголовку померещилось, что это о чём-то типа бэкдора — то есть управление компьютером, на котором установлен браузер.

                                                                      А оказалось, что имеется в виду использование браузера для реализации клиента удаленного доступа.
                                                                        0
                                                                        Блин, круто выглядит. Жду на Линукс!

                                                                        Only users with full accounts can post comments. Log in, please.