На определенной стадии понял что для этих целей хорошо подходит технология WebRTC. Такое решение есть у Chrome браузера, оно устанавливается через расширение. Но хотелось сделать маловесную программу, которая будет работать без установки.
Сначала попробовал использовать библиотеку которую предоставляет Google, но после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB. Друг помог с интерфейсом на JS, вот что в итоге получилось.
Запускаем программу:
Открываем ссылку во вкладке браузера и получаем полный доступ к рабочем столу:
Небольшая анимация процесса установки соединения:
Поддерживается Chrome, Firefox, Sаfari, Opera.
Есть возможность передачи звука, аудио звонка, управления буфером обмена, передачи файлов и вызова горячих клавиш.
В ходе работы над программой пришлось изучить с десяток RFC и понять, что в интернете не достаточно информации о работе WebRTC протокола. Хочу написать статью по технологиям которые в нем используются, хочется узнать какие вопросы из нижеперечисленных интересуют сообщество:
- SDP протокол описания потоковых данных
- ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
- DTLS соединение и передача ключей в RTP сессию
- RTP и RTСP протоколы с шифрованиям для передачи медиа данных
- Передача H264, VP8 и Opus по RTP
- SCTP соединение для передачи бинарных данных
Комментарии (74)
denaspireone
03.10.2019 18:55дайте урл на гитхаб
Rans Автор
03.10.2019 21:40-1К сожалению, на гитхаб исходников нет
androidovshchik
04.10.2019 05:06+2Не понимаю тогда ценность статьи… Вот я с другом сделал, никакой технической информации
oller
04.10.2019 07:32+3Денег они делать будут, вот ценность
А так все плотно на таймвьювере сидят, поэтому может не аыстрелитьtolstooo
04.10.2019 12:15Если ценник будет более демократичным, то может и выстрелить. Учитывая, что TeamViewer стоит баснословных денег для малого бизнеса.
UksusoFF
04.10.2019 22:01Да даже и не для бизнеса. Переодически родителям-знакомым надо чето сделать и он уже начинает вопить что я деньги на нем зарабатываю.
Уже неоднократно открывал страницу с ценником, но потом тут же пугался и закрывал.
ehots
04.10.2019 13:26Можно и подвинуть, конкурентов мало, в браузере вообще первый раз вижу, на киллерфичу вполне тянет.
oller
04.10.2019 15:36Продукт — Удаленный рабочий стол Chrome
Может не так удобно, но как бы решение вполне себе рабочее
А вот что будет с этими, после очередного обновления Chrome- вопрос хороший
Мы сами пишем для своих нужд расширения к хрому, ломаются они с хорошей переодичностью, потому что возникают новые требования хрома.
dobrev
04.10.2019 20:31+1А так все плотно на таймвьювере сидят, поэтому может не аыстрелить
Тимвьюер сделал всё, что мог, чтобы захотеть о нём забыть. А AnyDesk сделал это возможным.QDeathNick
04.10.2019 21:23AnyDesk рулит.
Но есть вопросы.
1. Как крутить колёсико?
2. Как бы включить Передачу 1:1 клавиатуры? Надоедает постоянно переключать.
3. Почему не пишет сеансы? Ни на одном компе не удалось настроитьdobrev
05.10.2019 20:201. Как обычно, пальцем. Если у вас вместо прокрутки страницы на удалённом компьютере происходит масштабирование, то это «залипание» Ctrl, лечится перезапуском AD на удалённом (перезагрузкой удалённого наверняка).
2. Есть в последних версиях, работает. Когда подключение состоялось, вверху есть панель, на ней кнопка со значком клавиатуры.
3. Не пользуюсь, но пишут, что есть: support.anydesk.com/Session_Recording
SlavikF
03.10.2019 20:36Это получается некоторый аналог noVNC?
github.com/novnc/noVNCjusthabrauser
03.10.2019 21:48+4— Getscreen.me лучше, чем VNC.
— Ну чем, чем лучше?
— Чем VNC. (tm)
Шутка.
На самом деле неплохая штука (судя по рекламе).
Если будут исходники, ага.
Иначе же — очередной тимвьювер.
erzi
03.10.2019 20:56+1… библиотеку которую предоставляет Google, после компиляции она занимает 500MB. Пришлось реализовать весь WebRTC стек почти с нуля, удалось все уместить в exe файл размером 2.5MB
:)
dominigato
03.10.2019 21:06Выглядит интересно. Присоединяюсь к вопросу про гитхаб и другие ОС.
Есть сравнение с существующими webrtc remote desktop? Типа webrtc-desktop-sharing, screencat и т.д.?
И самое интересное — работает ли с телефонами?
AkshinM
03.10.2019 22:00Идеальная штука для энтерпрайз. Очень интересно было бы прочитать как это все работает более подробнее
Protos
04.10.2019 04:15Идеальная? А как же проверка балансом этого ПО? Завтра все SOC будут исследовать модификации ПО хакерами которое используется в злых целях
toivo61
04.10.2019 15:12К сожалению, для энтерпрайз лучше удаленный доступ от MS SCCM. Если SCCM не требуется — это не энтерпрайз.
sigmatik
03.10.2019 22:39Сделайте Платный Коммерческий продукт с дополнительным функционалом и развивайте. У вас есть все шансы догнать тимвивер
rw6hrm
03.10.2019 23:39Жаль, но ещё живые старички типа WinХР в пролёте… Не запускается.
OstJoker
04.10.2019 02:08+1А ничего что последнюю версию самого Chrome уже не поставить на ХР. Если лет 5-7 назад я бы еще понял желания остаться на ХР в угоду выигрышу по скорости работы. Но сейчас то что? Множество софта уже не поддерживается, сама винда тоже (танцы с бубном вокруг прикладывания POS версий не берем) а железо, которое уже нормально потянет семерку стоит копейки.
1delovoj1
04.10.2019 07:07Мне что, со своей зарплаты пойти купить больше сотни машин в контору?
И еще столько же принтеров с рулонной подачей?
А денег не дают, документы набираются и ладно…
Не все же строят космические корабли и создают виртуальные реальности.
Так вот приходится и ХР шевелить.OstJoker
04.10.2019 11:50Так я претензий вам не предъявляю. Но можно таки объяснить руководству о необходимости апгрейда. Документы набираются и ладно, но если очередной вирус Petya бомбанет сотню машин за один день, будет интересно посмотреть на последствия. Несколько лет назад я лично участвовал в разруливании такой ситуации в одном из казначейств Украины. Тогда резко начали находится деньги, лишь бы все опять заработало.
Wolches
04.10.2019 12:15К сожалению у власть имущих очень короткая память, и скоро ситуация начнет повторяться, уже с Windows 7
drWhy
04.10.2019 12:25А обновлённые Windows 10 от Пети не пострадали?
OstJoker
04.10.2019 12:45+1Если честно, Windows 10 у них не припомню вообще. Помню что рабочими остались несколько машин на Windows 7. Все ПК с ХР были заражены, никаких бекапов не было. Сотрудник, который отвечал за ИТ инфраструктуру, оргтехнику был сокращен год до этого :-)
drWhy
04.10.2019 13:47Даю справку :)
Из около 30 компьютеров (два сервера + половина W10, половина XP) у нас уцелели только те, что не были включены (сотрудники в отпуске). Бэкапы серверов были, пользовательские устанавливались начисто клонированием, потом месяц восстанавливали уцелевшие файлы (целых оказалось мало, в основном — зашифрованные). Вирус пришёл с обновлением ПО, захватил сервера, через них пользовательские компьютеры. Потом в течение суток спокойно шифровал всё.OstJoker
04.10.2019 18:59Я во время эпидемии админил сеть из 270 ПК + 5 серверов в организации. Один сервер на винде, компьютеры пользователей Windows 10\8\7\XP в процентном соотношении примерно 60\6\30\4. Не заразился никто. Реальный IP на серверах, пользователи за NAT и Firewall на микротик, на ПК пользователей штатный антивирус от МС.
Уже на спаде эпидемии одна из руководителей открыла письмо на gmail от неизвестного источника с вложением типа «Счет №243». Не долго думая, она открыла посмотреть что там такое ей прислали и появилась консоль и «побежали буковки». Шифратор-вымогатель хотел 800$ в биткоинах. Она работала на ХР, еще и под админом, поскольку какой то древний специфический софт по архитектуре и строительству иначе не работал. В итоге пришлось форматнуть винт, а из даных осталось только то что она время от времени скидывала на флешку, не прям катастрофа, но неприятно.
Кстати, у бухов также был софт «Медок», через обновление которого вроде б как прилетал Петя, но и там все ОК, что даже странно было.
Areso
04.10.2019 13:09Firefox крайний для 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.rw6hrm
04.10.2019 19:30Я имел в виду, что софтина как сервер под ХР не запускается, пишет, что не «приложение Win32». Ну да ладно. Главное, что если сервером работает более свежая ось, то с ХР смотреть можно, как раз через Фырфокс 59 и его клоны (симанки, к примеру).
Замечено сегодня, что связь каждые пять минут рвётся. Не выяснял почему, мож микротик с параноидальными настройками чудит…
Ну и через прокси не ходит, но мы и не ожидали.sumanai
05.10.2019 21:34пишет, что не «приложение Win32».
Как минимум можно посмотреть версию ОС, которая прописана в PE заголовке, и изменить. А после посмотреть в подключаемые dll на предмет отсутствующих импортов. И если все импорты корректны, то можно запускать.
lopatoid
04.10.2019 01:16А какие порты он требует? хотел зайти на компьютер, у которого разрешены только tcp 80 и 443, но не смог подключиться. Я как раз думал, что WebRTC должно решать эту проблему — ведь это браузерная технология. Или у меня проблема в другом?
vin2809
04.10.2019 08:20Не слушайте этих остряков. Материал очень интересный, пишите по всем вопросам и не одну статью
dronsovest
04.10.2019 08:34А на какую целевую аудиторию рассчитываете? Кроме дорогого и сверхпопулярного Тимвьювера есть еще и дешевый AmiAdmin.
А еще могу раскрыть страшную тайну. В Хроме есть совсем бесплатное приложение Удаленный рабочий стол Chrome. И это не единственное его преимущество: у него нет пароля с латинскими буквами. А цифры тётки из бухгалтерии называют гораздо бодрее, чем «с как доллар» и «ж как ручка от зонтика».Areso
04.10.2019 13:11Ammyy Admin знаменит тем, что его компроментируют раз в три года и несколько месяцев с официального сайта раздается зараженный бинарник.
Ну, такое. Многие антивирусники в СНГ его считают по умолчанию зараженным, любую его версию :)
PowerMetall
04.10.2019 08:55+4Запустить проприетарный закрытый EXEшник от непонятных людей на своем ПК
Дать ему полный доступ в Интернет
Дать ему полный доступ к экрану ПК
Дать ему полный доступ к файловой системе
@
Нууууу, я подууууууумаю конечно, нооо…
Sanctuary_s
04.10.2019 09:00+1Без исходников ценность статьи стремится а пределе к нулю. Вряд ли кто-то будет на каждодневной основе использовать этот продукт. Запустят на виртуалке, потакают и откатятся.
peacemakerv
04.10.2019 09:37Offtopic/2: есть ли альтернативы ТимВьюер Host для Android? Т.е. удаленный полный контроль с коннектом без подтверждения юзером через любой тип Internet-соединения, включая 3G-4G. (может и через свой сервер)
justhabrauser
04.10.2019 11:52Теоретически можно намутить с VNC router.
Но это чисто умозрительно и предмет исследований.
slavius
04.10.2019 12:22https://github.com/Genymobile/scrcpy
Управлять Android-смартфоном по USB или TCP как по VNC (с графикой).
Работает по ADB и без рута: включил на телефоне режим отладки, подключил к компьютеру, запустил scrcpy и вперёд.
Мышкой работаем как тачскрином (ПКМ == назад, колёсико == домой), клавиатура, к сожалению, всегда печатает на английской раскладке (возможно, это можно исправить). На телефон ничего устанавливать не нужно, работает с минимальной задержкойpeacemakerv
04.10.2019 12:26Нужно именно очень удаленное управление. К компьютеру подключения «не удаленного» не предполагается.
den_admin
04.10.2019 09:51Сугубо моё личное мнение:
Если планируется для бизнеса, то будет огромный плюс, открытые исходники клиентской части, при том, серверную можно будет оставить закрытую. Это сразу вынесет вас вперед перед конкурентами.AWSVladimir
04.10.2019 11:55>Это сразу вынесет вас вперед перед конкурентами.
ИМХО в клиентской части сама фишка и не появится ли куча клонов?
И не сойдет ли рынок вообще на нет?
Если у ребят цель часть рынка забрать себе, то это одна линия поведения, если альтруизм или этот продукт просто идет паровозом, который тащит другой основной продукт, то это другая линия, тогда может и выложат все. Но раз еще не выложили исходники, значит хотят монитезировать свое творение.
PS:
Аналогичный функционал уже есть у другого продукта, лет 7 точно.
Европейцы ставили свое ПО и обслуживали его, через этот сервис, аналогичный тимвьюверу, с возможностью ч/з веб.браузер управлять удаленной машиной.
Если шибко надо, могу залезть в документацию, посмотреть, но ч/з неделю т.к. в отпуске.den_admin
04.10.2019 12:23+1>> не появится ли куча клонов?
Ну я подозреваю, что нет. Например есть Chrome Remote Desktop, открытая клиентская часть с закрытым сервером (хотя может и не закрытый, поправьте если я не прав), тем не менее множества аналогичных программ основанных на нем я не вижу.
Для захвата рынка нужна какая-то фича. Иначе просто будут пользоваться, чем пользовались раньше.
С открытым клиентом, можно смело заявлять «у нас все безопасно, смотрите исходники!»
Ни TeamViewer, ни anydesk, ни ammyy такого заявить не могут.
Опять же касаемо клонов: часто дешевле оплатить не большую АП за использование, чем поднимать и поддерживать свои сервера.
oller
04.10.2019 19:12Я считаю очень недальновидным планы по завоеванию рынка, путем привязывания к браузеру, который ко всему считается шпионским.
Завоевать рынок, это найти 10к корп клиентов аля газпром, а так опенсорс вытеснит, просто никто серьезно не занимался
jetcar
04.10.2019 13:01с чего ктото взял что это конкурент тимвьюверу? у них там дофига функционала которого тут ещё долго не будет, как связанных с безопасностью так и с разными фичами для удобства, жалко что не опен сорс, вот тогда бы можно было поговорить о конкуренции, а так можно разве что попробовать продать в качестве импортозамещения :D
но тема интересная голосую за опенсорс, денег наверно меньше заработаете, но и париться надо меньше, помошников должно хватить чтоб проревьювить безопасность и дописать полезные фичи
slavius
04.10.2019 13:23Долго искал ссылку «скачать» или на сайт :)
Потом понял — на скрине видно куда идти.
izyk
04.10.2019 13:28Что за реклама из песочницы? Как то работает?
Объясните, пожалуйста, в общих чертах, хотя бы, как через ссылку на ваш сайт я попаду на свой ПК? Особенно, если мой ПК за NAT. Спасибо.alprk
04.10.2019 15:42Простое описание как работает установление соединения через ICE между клиентами за NAT
forasoft.github.io/webrtc-in-plain-russianizyk
04.10.2019 17:11+1Спасибо, конечно. Но это описание, по крайней мере в части работы STUN сервера, является неверным. Неверно описан алгоритм работы NAT, в таблице не учитывают адрес и порт STUN сервера. Из-за этого делают неверный вывод:
Что же дальше? Какая от этого всего польза? Польза – это запись в таблице r1_nat. Если теперь кто угодно будет отправлять на роутер r1 пакет с портом 888, то роутер перенаправит этот пакет узлу p1. Таким образом, создался небольшой узкий проход к спрятанному узлу p1.
Там всё сложнее и применять за NAT получится только UDP, потому что stateless. Но подробности были бы интересны. Так что я голосую за:ICE кандидаты и установка соединения между двумя точками, STUN и TURN сервера
.
andreymal
04.10.2019 20:19в таблице не учитывают адрес и порт STUN сервера.
Но ведь учитывают же?
Например, в симметричной таблице NAT сохраняются еще 2 параметра — IP и порт удаленного узла.
GlebGleb
04.10.2019 13:35На следующей неделе попробую связать два компа, оба за NAT, с помощью этой программки.
Если всё заработает, да ещё и не потребует админских прав — это будет просто прекрасно! И если в дальнейшем при монетизации политика будет более вменяемой, чем у конкурентов, то проект ждёт хорошее будущее.
Удачи Вам!
AlexanderDem
04.10.2019 17:18Очень круто, я вот как раз задумывался над тем, как бы мне удаленно управлять
телевизором (когда я за NAT), возможно и вашу идею по изучаю, спасибо.
rafaelpro
04.10.2019 20:35Есть еще такой проект — github.com/phoboslab/jsmpeg-vnc, с помощью него можно даже в игры играть таким образом.
juray
05.10.2019 14:19По заголовку померещилось, что это о чём-то типа бэкдора — то есть управление компьютером, на котором установлен браузер.
А оказалось, что имеется в виду использование браузера для реализации клиента удаленного доступа.
Vovanys
Крутотень! А где для не винды? В лендинге указано: Подключение возможно к компьютерам работающим на всех популярных операционных системах: Windows, MacOS, Linux. А скачать только exe можно…
Rans Автор
MacOS версию скоро выложим, Linux версия еще в разработке.
Fesik
В Хром же свой удалённый рабочий стол есть, работает на маках точно remotedesktop.google.com
SaWiF
но там нужна учетка гугла =\
Gugic
На Linux тоже работает. Вообще не очень ясны преимущества того, что сделал автор перед станадартным chrome remote desktop.