1

Тема: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Здравствуйте.
Интересует очень важный вопрос, по генерации индивидуального ключа, по которому можно воспроизвести поток только с того IP с которого он был сгенерирован.
К примеру, имея вот такую страницу http://only-tv.org/bollywood.html
При воспроизведении канала с страницы, можно увидеть вот такой поток:

хттп://s3a.privit.pro:8081/bollywood/index.m3u8?wmsAuthSign=c2VydmVyX3RpbWU9OS8xNC8yMDE2IDU6MDE6NTggfac535e50e59f887504f5a6129617ac5T04vYzhuTTArS2Z3PT0mdmFsaWRtaW51dGVzPTIwMA==

Тут видно что поток имеет ключ, и без него никак не воспроизводится.
Интересует вопрос, каким образом генерируется ключ?
Что на самом деле происходит при нажатии на Play в странице?
Воспользовавшись WireShark'ом ничего не удалось найти.
Цель: создание плейлиста для использования на ПК, и Андроид устройстве.
По сей день, создаю для себя плейлисты с каналов собранных в сети, но дело в том что живут они не долго, и приходится часто возится с поисками других потоков, и бывают они не стабильны.
Поэтому желаю создать плейлист из таких онлайн каналов, у которых ключ, и по всей видимости должны быть долго живучими, и стабильными.
Верю, должен быть метод по которому при нажатии на "Play" ссылку выбрасывало бы на внешний плеер, а не на тот что на сайте "JW Player".
Жду ваших ответов.

2

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Здесь есть пример формирования wmsAuthSign
http://blog.wmspanel.ru/2015/08/hotlink … -view.html

Samsung UE32F5300
Windows 7 64 bit

3

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

aleks123 пишет:

Здесь есть пример формирования wmsAuthSign
http://blog.wmspanel.ru/2015/08/hotlink … -view.html

В этой статье нет ответа на мною заданный вопрос, статья скорее всего адресована вещателям по этой технологии.
Нашел вот такую ссылку: https://github.com/WMSPanel/paywall-cod … master/php
Ничего к сожалению не понял, может кто-нибудь растолкует?

4

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Вот, кстати, обе ссылки - отличный пример того, как именно формируются защитные параметры, типа wmsAuthSign.
Dee_Jay, одним из ваших вопросов был:

Dee_Jay пишет:

Интересует вопрос, каким образом генерируется ключ?

Да, вот таким образом как в приведённой ссылке aleks123.
Там на русском расписывается, как именно на стороне сервера формируется значение параметра wmsAuthSign, чтобы никто, кроме клиента открывающий страницу сервиса не мог воспользоваться этой ссылкой.
Dee_Jay, в вашей ссылке на github реализуется именно то, что описывается в вышеприведённой статье.

Этот PHP код выполняется на стороне сервера, который предоставляет стриминг. Что мы там видим:

$ip = $_SERVER['REMOTE_ADDR'];
$key = "defaultpassword";
$validminutes = 20;
$str2hash = $ip . $key . $today . $validminutes . $signed_stream;
$md5raw = md5($str2hash, true);
$base64hash = base64_encode($md5raw);
$urlsignature = "server_time=" . $today ."&hash_value=" . $base64hash. "&validminutes=$validminutes" . "&strm_len=" . strlen($signed_stream);
$base64urlsignature = base64_encode($urlsignature);
$signedurlwithvalidinterval = $initial_url . "?wmsAuthSign=$base64urlsignature"; 

А видим, что:
1) Берётся IP адрес вызвавшего этот скрипт ($ip = $_SERVER['REMOTE_ADDR'];)
2) Некий пароль, который известен только серверу ($key = "defaultpassword";)
3) Всякая другая мишура
4) Всё это миксуется в какое-то значение (вычисляется хеш функция всего безобразия) и добавляется к сформированной ссылке на поток.
5) При обращении по подобной ссылке с плеера клиента - на стороне сервера делается опять всё то же самое (микшуются IP, пароль и проч, вычисляется хеш). Потом полученный результат сравнивается с тем, что указано в параметрах ссылки. Если не совпадает, то доступ запрещён.

Наличия IP адреса клиента - это облом для работоспособности ссылки, полученной не на стороне клиента.
Наличие какого-то пароля в скрипте на сервере - это облом подобрать алгоритм, чтобы сгенерировать своё значение wmsAuthSign. Этот добавленный пароль знает только сервер и никуда не передаётся. Прочитать исходник PHP скрипта, который выполняется на сервере - нельзя (ибо он выполняется на стороне, и только результат отдаёт клиенту от сервера). Поэтому бесполезно гадать, какой он там используется и как нам сгенерировать зашифрованное значение.

Это всё настолько просто. Что и думать нечего, что же придумать, чтобы генерировать "также". Не получится.

Объясняю, что происходит при загрузке страницы канала и нажатия на кнопку плей.
1) Ваш браузер делает запрос страницы к серверу, тот отдаёт html - содержание страницы, которая генерируется на стороне сервера и отдаётся вам уже как готовый текст.
2) На странице есть iframe на PHP скрипт. Ваш браузер делает запрос этого скрипта.
3) На том сервере при выполнении там скрипта, генерируется новое содержание страницы и с тем же генерируется новая ссылка на поток с каким-то значением wmsAuthSign. Сгенерированное содержимое страницы опять отдаётся вам.
4) Браузер с помощью javascript или html5 показывает вам плеер, где для плеера источник указана эта ссылка на поток.
5) При нажатии на кнопку плей ничего особенного не происходит. Ссылка на поток уже есть. Плеер просто начинает её воспроизводить.

Это примерно общая картина. Но на разных сайтах всё может отличаться.

Итого, что мы имеем?
А имеем мы всё то же, что я и устал повторять. Любую автоматизацию получения защищённых ссылок на поток нужно делать на стороне клиента.
А вот тут уже масса вариантов.
Что именно мы хотим и как именно мы хотим воспроизводить. В какой программе и проч.

Например, подобные вещи в HMS мы делаем с помощью скриптов.
Можно конечно заморочиться, поставить локально вебсервер с поддержкой PHP или других скриптовых языков и делать запросы на свой сервер.

А вот если вы это делаете только для VLC, где собираетесь смотреть - то там есть возможность писать Lua-скрипты, которые могут автоматизировать получение ссылки на реальный поток, при указании изначально только ссылки на страницу канала.

Так вот как это сделать для VLC, пару примеров я покажу и расскажу в следующем сообщении.

Sony Bravia KDL-32CX523

5

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Да, к сожалению я далек от программирования, никогда бы и не подумал, как это автоматизировать.
Придется пользоваться готовыми скриптами, сделанными вами.
1. Как вижу, тут на форуме кроме вас никто не владеет такой информацией и знанием как вы?
2. А вы не против, если буду выкладывать страницу, а вы создадите для нее скрипт?
3. Ради интереса, сколько времени заняло вам написать 1 скрипт?
4. Lua это хорошее решение, но только на П.К. а можно ли заставить Андроид устройство распознавать lua скрипты?
5. И есть ли какое-нибудь другое решение автоматизации помимо lua, чтоб на П.К. а на Андроиде работало?
Жду вашего ответа.

6

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Dee_Jay,
1. Не уверен. У меня специфичные знания в области сетевых технологий. И эта область тоже узкая. А, например, в Lua я далеко не спец, а любитель. Так что вероятность тут встретить человека, который может подсказать тоже есть.
2. Не против. Запрещать не буду. Но и оставляю право за собой ничего не делать, если нет времени или желания. Также подсказать по ним могут и другие. Если таковые изъявят желание.
3. Как и у всех людей на этом свете - больше всего времени уходит на изучение вопроса, технологий, языка программирования. На это уходят дни, недели. После чего написать подобный скрипт можно за пол часа или 10 минут. А иногда, с накопленными знаниями в других языках и решением похожих вопросов, но с специфичной задачей - преградой, это может занять и несколько вечеров. Например:
pokazz_net.lua - 20 мин.
viks_tv.lua  - 2 вечера.
4. Не уверен. Теоретически можно, но инсталлировать скрипты в установочный каталог VLC на андроид - это задача для спецов, возможно только с root доступом или хитрыми действиями.
5. Есть - Home Media Server.
Нужно один раз настроить нужные подкасты для TV-вещания и к ним можно обращаться с любых устройств воспроизведения. Для чего это всё и было придумано.
Если нужного подкаста нет, то можно его попросить сделать. И надеется, что кто-нибудь сделает. )

Sony Bravia KDL-32CX523

7

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Вопрос про Home Media Server, это опять же для пользования в локальной сети?
Тоесть использование будет через lua скрипты как на ПК?

8

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Dee_Jay пишет:

Вопрос про Home Media Server, это опять же для пользования в локальной сети?

Да.

Dee_Jay пишет:

Тоесть использование будет через lua скрипты как на ПК?

Нет. Уже через использование своих скриптов специально написанных для HMS, на C++Script, PascalScript или BasicScript.

Sony Bravia KDL-32CX523

9

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Перенёс всё, что касается кодинга на Lua сюда.
Все просьбы и всё что касается скриптов для VLC - кидайте в ту тему.

Sony Bravia KDL-32CX523

10

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Lua, оказался к сожалению не пригодным.
Дело в том, что в основном просмотр каналов осуществляется на Андроид приставке, и необходимо универсальное решение, для использования скрипта в плейлисте.
Чем можете пожалуйста помочь?

11

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Никто не может помочь?

12

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

Dee_Jay пишет:

Никто не может помочь?

Попробуйте спросить на форумах разработчиков:
https://code.videolan.org/videolan/vlc- … ate=opened
https://forum.videolan.org/viewtopic.ph … ua#p459211

В хелпах для установки lua-парсеров про андроид вообще не упоминают.

+ открыть спойлер
Put the file in the lua/playlist/ directory:
- On Windows: %APPDATA%/vlc/lua/playlist/
- On Mac: $HOME/Library/Application Support/org.videolan.vlc/lua/playlist/
- On Linux: ~/.local/share/vlc/lua/playlist/
To install the addon for all users, put the file here instead:
- On Windows: C:/Program Files (x86)/VideoLAN/VLC/lua/playlist/
- On Mac: /Applications/VLC.app/Contents/MacOS/share/lua/playlist/
- On Linux: /usr/lib/vlc/lua/playlist/
Samsung UE32F5300
Windows 7 64 bit

13

Re: Нужна помощь в расшифровке онлайн каналов, с уникальным ключом...

А помимо lua, ничего другого нельзя придумать?