Около полугода назад задумал сделать программу для управления компьютером через браузер. Начал с простого односокетного 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 соединение для передачи бинарных данных

Комментарии (74)


  1. Vovanys
    03.10.2019 18:51

    Крутотень! А где для не винды? В лендинге указано: Подключение возможно к компьютерам работающим на всех популярных операционных системах: Windows, MacOS, Linux. А скачать только exe можно…


    1. Rans Автор
      03.10.2019 21:23

      MacOS версию скоро выложим, Linux версия еще в разработке.


    1. Fesik
      04.10.2019 11:56

      В Хром же свой удалённый рабочий стол есть, работает на маках точно remotedesktop.google.com


      1. SaWiF
        04.10.2019 19:43

        но там нужна учетка гугла =\


      1. Gugic
        04.10.2019 22:26

        На Linux тоже работает. Вообще не очень ясны преимущества того, что сделал автор перед станадартным chrome remote desktop.


  1. denaspireone
    03.10.2019 18:55

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


    1. Koneru
      03.10.2019 21:32
      +1

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


    1. Rans Автор
      03.10.2019 21:40
      -1

      К сожалению, на гитхаб исходников нет


      1. androidovshchik
        04.10.2019 05:06
        +2

        Не понимаю тогда ценность статьи… Вот я с другом сделал, никакой технической информации


        1. oller
          04.10.2019 07:32
          +3

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


          1. tolstooo
            04.10.2019 12:15

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


            1. UksusoFF
              04.10.2019 22:01

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


          1. ehots
            04.10.2019 13:26

            Можно и подвинуть, конкурентов мало, в браузере вообще первый раз вижу, на киллерфичу вполне тянет.


            1. oller
              04.10.2019 15:36

              Продукт — Удаленный рабочий стол Chrome

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


          1. dobrev
            04.10.2019 20:31
            +1

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

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


            1. QDeathNick
              04.10.2019 21:23

              AnyDesk рулит.
              Но есть вопросы.

              1. Как крутить колёсико?
              2. Как бы включить Передачу 1:1 клавиатуры? Надоедает постоянно переключать.
              3. Почему не пишет сеансы? Ни на одном компе не удалось настроить


              1. dobrev
                05.10.2019 20:20

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


  1. SlavikF
    03.10.2019 20:36

    Это получается некоторый аналог noVNC?

    github.com/novnc/noVNC


    1. justhabrauser
      03.10.2019 21:48
      +4

      — Getscreen.me лучше, чем VNC.
      — Ну чем, чем лучше?
      — Чем VNC. (tm)
      Шутка.
      На самом деле неплохая штука (судя по рекламе).
      Если будут исходники, ага.
      Иначе же — очередной тимвьювер.


  1. erzi
    03.10.2019 20:56
    +1

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


  1. dominigato
    03.10.2019 21:06

    Выглядит интересно. Присоединяюсь к вопросу про гитхаб и другие ОС.
    Есть сравнение с существующими webrtc remote desktop? Типа webrtc-desktop-sharing, screencat и т.д.?
    И самое интересное — работает ли с телефонами?


    1. lv333
      03.10.2019 22:39

      С андроида работает.


      1. dominigato
        04.10.2019 16:14

        Хотелось бы наоборот — с браузера заходить на телефон.


  1. AkshinM
    03.10.2019 22:00

    Идеальная штука для энтерпрайз. Очень интересно было бы прочитать как это все работает более подробнее


    1. Protos
      04.10.2019 04:15

      Идеальная? А как же проверка балансом этого ПО? Завтра все SOC будут исследовать модификации ПО хакерами которое используется в злых целях


    1. toivo61
      04.10.2019 15:12

      К сожалению, для энтерпрайз лучше удаленный доступ от MS SCCM. Если SCCM не требуется — это не энтерпрайз.


  1. sigmatik
    03.10.2019 22:39

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


  1. rw6hrm
    03.10.2019 23:39

    Жаль, но ещё живые старички типа WinХР в пролёте… Не запускается.


    1. OstJoker
      04.10.2019 02:08
      +1

      А ничего что последнюю версию самого Chrome уже не поставить на ХР. Если лет 5-7 назад я бы еще понял желания остаться на ХР в угоду выигрышу по скорости работы. Но сейчас то что? Множество софта уже не поддерживается, сама винда тоже (танцы с бубном вокруг прикладывания POS версий не берем) а железо, которое уже нормально потянет семерку стоит копейки.


      1. 1delovoj1
        04.10.2019 07:07

        Мне что, со своей зарплаты пойти купить больше сотни машин в контору?
        И еще столько же принтеров с рулонной подачей?
        А денег не дают, документы набираются и ладно…
        Не все же строят космические корабли и создают виртуальные реальности.
        Так вот приходится и ХР шевелить.


        1. OstJoker
          04.10.2019 11:50

          Так я претензий вам не предъявляю. Но можно таки объяснить руководству о необходимости апгрейда. Документы набираются и ладно, но если очередной вирус Petya бомбанет сотню машин за один день, будет интересно посмотреть на последствия. Несколько лет назад я лично участвовал в разруливании такой ситуации в одном из казначейств Украины. Тогда резко начали находится деньги, лишь бы все опять заработало.


          1. Wolches
            04.10.2019 12:15

            К сожалению у власть имущих очень короткая память, и скоро ситуация начнет повторяться, уже с Windows 7


          1. drWhy
            04.10.2019 12:25

            А обновлённые Windows 10 от Пети не пострадали?


            1. OstJoker
              04.10.2019 12:45
              +1

              Если честно, Windows 10 у них не припомню вообще. Помню что рабочими остались несколько машин на Windows 7. Все ПК с ХР были заражены, никаких бекапов не было. Сотрудник, который отвечал за ИТ инфраструктуру, оргтехнику был сокращен год до этого :-)


              1. drWhy
                04.10.2019 13:47

                Даю справку :)
                Из около 30 компьютеров (два сервера + половина W10, половина XP) у нас уцелели только те, что не были включены (сотрудники в отпуске). Бэкапы серверов были, пользовательские устанавливались начисто клонированием, потом месяц восстанавливали уцелевшие файлы (целых оказалось мало, в основном — зашифрованные). Вирус пришёл с обновлением ПО, захватил сервера, через них пользовательские компьютеры. Потом в течение суток спокойно шифровал всё.


                1. OstJoker
                  04.10.2019 18:59

                  Я во время эпидемии админил сеть из 270 ПК + 5 серверов в организации. Один сервер на винде, компьютеры пользователей Windows 10\8\7\XP в процентном соотношении примерно 60\6\30\4. Не заразился никто. Реальный IP на серверах, пользователи за NAT и Firewall на микротик, на ПК пользователей штатный антивирус от МС.
                  Уже на спаде эпидемии одна из руководителей открыла письмо на gmail от неизвестного источника с вложением типа «Счет №243». Не долго думая, она открыла посмотреть что там такое ей прислали и появилась консоль и «побежали буковки». Шифратор-вымогатель хотел 800$ в биткоинах. Она работала на ХР, еще и под админом, поскольку какой то древний специфический софт по архитектуре и строительству иначе не работал. В итоге пришлось форматнуть винт, а из даных осталось только то что она время от времени скидывала на флешку, не прям катастрофа, но неприятно.
                  Кстати, у бухов также был софт «Медок», через обновление которого вроде б как прилетал Петя, но и там все ОК, что даже странно было.


    1. Areso
      04.10.2019 13:09

      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.


      1. rw6hrm
        04.10.2019 19:30

        Я имел в виду, что софтина как сервер под ХР не запускается, пишет, что не «приложение Win32». Ну да ладно. Главное, что если сервером работает более свежая ось, то с ХР смотреть можно, как раз через Фырфокс 59 и его клоны (симанки, к примеру).
        Замечено сегодня, что связь каждые пять минут рвётся. Не выяснял почему, мож микротик с параноидальными настройками чудит…
        Ну и через прокси не ходит, но мы и не ожидали.


        1. sumanai
          05.10.2019 21:34

          пишет, что не «приложение Win32».

          Как минимум можно посмотреть версию ОС, которая прописана в PE заголовке, и изменить. А после посмотреть в подключаемые dll на предмет отсутствующих импортов. И если все импорты корректны, то можно запускать.


  1. lopatoid
    04.10.2019 01:16

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


    1. lv333
      04.10.2019 02:10

      Этого явно мало forasoft.github.io/webrtc-in-plain-russian


  1. vin2809
    04.10.2019 08:20

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


    1. Rans Автор
      04.10.2019 17:10

      Спасибо, начну готовить первую статью


      1. izyk
        04.10.2019 17:17

        Если можно:
        «ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера»
        Пожалуйста.
        Ниже скинули ссылку, но там не всё верно.


  1. olegchir
    04.10.2019 08:24
    +1

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


  1. dronsovest
    04.10.2019 08:34

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

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


    1. Areso
      04.10.2019 13:11

      Ammyy Admin знаменит тем, что его компроментируют раз в три года и несколько месяцев с официального сайта раздается зараженный бинарник.
      Ну, такое. Многие антивирусники в СНГ его считают по умолчанию зараженным, любую его версию :)


      1. oller
        04.10.2019 19:02

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


  1. PowerMetall
    04.10.2019 08:55
    +4

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

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


    1. smind
      04.10.2019 10:52

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


      1. spc
        04.10.2019 13:03

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


  1. Sanctuary_s
    04.10.2019 09:00
    +1

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


    1. Sanctuary_s
      04.10.2019 12:28


      TODO :)


      1. QDeathNick
        04.10.2019 21:31
        +1

        ООО «TODO»


  1. peacemakerv
    04.10.2019 09:37

    Offtopic/2: есть ли альтернативы ТимВьюер Host для Android? Т.е. удаленный полный контроль с коннектом без подтверждения юзером через любой тип Internet-соединения, включая 3G-4G. (может и через свой сервер)


    1. justhabrauser
      04.10.2019 11:52

      Теоретически можно намутить с VNC router.
      Но это чисто умозрительно и предмет исследований.


    1. slavius
      04.10.2019 12:22

      https://github.com/Genymobile/scrcpy
      Управлять Android-смартфоном по USB или TCP как по VNC (с графикой).

      Работает по ADB и без рута: включил на телефоне режим отладки, подключил к компьютеру, запустил scrcpy и вперёд.
      Мышкой работаем как тачскрином (ПКМ == назад, колёсико == домой), клавиатура, к сожалению, всегда печатает на английской раскладке (возможно, это можно исправить). На телефон ничего устанавливать не нужно, работает с минимальной задержкой


      1. peacemakerv
        04.10.2019 12:26

        Нужно именно очень удаленное управление. К компьютеру подключения «не удаленного» не предполагается.


  1. den_admin
    04.10.2019 09:51

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


    1. AWSVladimir
      04.10.2019 11:55

      >Это сразу вынесет вас вперед перед конкурентами.
      ИМХО в клиентской части сама фишка и не появится ли куча клонов?
      И не сойдет ли рынок вообще на нет?
      Если у ребят цель часть рынка забрать себе, то это одна линия поведения, если альтруизм или этот продукт просто идет паровозом, который тащит другой основной продукт, то это другая линия, тогда может и выложат все. Но раз еще не выложили исходники, значит хотят монитезировать свое творение.
      PS:
      Аналогичный функционал уже есть у другого продукта, лет 7 точно.
      Европейцы ставили свое ПО и обслуживали его, через этот сервис, аналогичный тимвьюверу, с возможностью ч/з веб.браузер управлять удаленной машиной.
      Если шибко надо, могу залезть в документацию, посмотреть, но ч/з неделю т.к. в отпуске.


      1. den_admin
        04.10.2019 12:23
        +1

        >> не появится ли куча клонов?
        Ну я подозреваю, что нет. Например есть Chrome Remote Desktop, открытая клиентская часть с закрытым сервером (хотя может и не закрытый, поправьте если я не прав), тем не менее множества аналогичных программ основанных на нем я не вижу.

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

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


      1. oller
        04.10.2019 19:12

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


  1. jetcar
    04.10.2019 13:01

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

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


  1. slavius
    04.10.2019 13:23

    Долго искал ссылку «скачать» или на сайт :)
    Потом понял — на скрине видно куда идти.


  1. shushu
    04.10.2019 13:25

    А что используется в качестве сервера WebRTC для передачи видео?


    1. afrokick
      04.10.2019 13:37

      Присоединяюсь, + интересно сигналинг сами делали или готовый. Мы вот coturn используем, а с клиента через PeerJS работаем, там и сигналинг есть


  1. izyk
    04.10.2019 13:28

    Что за реклама из песочницы? Как то работает?
    Объясните, пожалуйста, в общих чертах, хотя бы, как через ссылку на ваш сайт я попаду на свой ПК? Особенно, если мой ПК за NAT. Спасибо.


    1. alprk
      04.10.2019 15:42

      Простое описание как работает установление соединения через ICE между клиентами за NAT
      forasoft.github.io/webrtc-in-plain-russian


      1. izyk
        04.10.2019 17:11
        +1

        Спасибо, конечно. Но это описание, по крайней мере в части работы STUN сервера, является неверным. Неверно описан алгоритм работы NAT, в таблице не учитывают адрес и порт STUN сервера. Из-за этого делают неверный вывод:

        Что же дальше? Какая от этого всего польза? Польза – это запись в таблице r1_nat. Если теперь кто угодно будет отправлять на роутер r1 пакет с портом 888, то роутер перенаправит этот пакет узлу p1. Таким образом, создался небольшой узкий проход к спрятанному узлу p1.
        Там всё сложнее и применять за NAT получится только UDP, потому что stateless. Но подробности были бы интересны. Так что я голосую за:
        ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
        .


        1. andreymal
          04.10.2019 20:19

          в таблице не учитывают адрес и порт STUN сервера.

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


          Например, в симметричной таблице NAT сохраняются еще 2 параметра — IP и порт удаленного узла.


  1. GlebGleb
    04.10.2019 13:35

    На следующей неделе попробую связать два компа, оба за NAT, с помощью этой программки.
    Если всё заработает, да ещё и не потребует админских прав — это будет просто прекрасно! И если в дальнейшем при монетизации политика будет более вменяемой, чем у конкурентов, то проект ждёт хорошее будущее.
    Удачи Вам!


  1. AlexanderDem
    04.10.2019 17:18

    Очень круто, я вот как раз задумывался над тем, как бы мне удаленно управлять
    телевизором (когда я за NAT), возможно и вашу идею по изучаю, спасибо.


  1. rafaelpro
    04.10.2019 20:35

    Есть еще такой проект — github.com/phoboslab/jsmpeg-vnc, с помощью него можно даже в игры играть таким образом.


  1. juray
    05.10.2019 14:19

    По заголовку померещилось, что это о чём-то типа бэкдора — то есть управление компьютером, на котором установлен браузер.

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