IPTV от МГТС: поиск каналов

в 17:48, , рубрики: gpon, iptv, M3U, mplayer, shell scripting, мгтс, МТС

Write a paper, and give a talk, about any idea, no matter how insignificant it may seem to you.
S. P. Jones, How to write a great research paper

В Москве МГТС проводит мероприятия по замене медной проводки на оптику по технологии GPON. В результате абоненты МГТС получают возможность пользоваться не только телефонной связью, но и доступом в Интернет, а также смотреть IP-телевидение. Для просмотра программ ТВ МГТС предлагает арендовать приставку, которая и обеспечит просмотр.

Ниже я расскажу, как, используя подручные средства Debian Linux, найти каналы, доступные для просмотра без приставки.

В последнее время всё чаще от знакомых и коллег по работе я стал слышать новое слово GPON — рассказ сопровождался душераздирающими подробностями: дескать, приходят к тебе в дом люди от МГТС, режут старый медный телефонный провод, прибивают около входной двери розетку 220 В и коробочку, через которую теперь и работает телефон, а при желании и Интернет, и даже телевидение.

Дошло до того, что, будучи в гостях, я узрел это самое телевидение через GPON своими глазами — около телевизора красовалась приставка с надписью МТС, а в коридоре поблёскивала лампочками белая коробочка ZTE ZXA10 F660. Приставку с ZTE F660 соединял заурядный двухпарный кабель Cat5 с разъёмами RJ45 на концах; из описания ZTE F660 стало ясно, что для передачи данных на приставку используется Ethernet. Возникла крамольная мысль: «А ну как подключить вместо приставки ноутбук — смогу посмотреть ТВ?».

Поиски привели меня на подходящий форум. Оказалось, что вопрос о просмотре ТВ без приставки мучает не только меня:

Возможно ли смотреть телеканалы непосредственно на компьютере? У большинства провайдеров скачиваешь плейлист и открываешь его в клиенте, например, VLC. В МГТС GPON все заточено на использование приставки и телевизора… техподдержка от вопроса впадает в ступор. Если у кого-то был опыт настройки, поделитесь, плс.

Из чтения форума стало ясно, что если ZTE F660 настроен «по умолчанию», то для просмотра ТВ обязательно подключаться в гнездо LAN4, а также надо обзавестись этим самым «плейлистом» (официального «плейлиста» от МГТС не существует).

Удалось найти несколько «плейлистов»: например, вот здесь.

Оказалось, что только некоторые каналы из «плейлистов» работают. А некоторые работают половинчато — вместо картинки показывает мусор, но звук транслируется нормально (такие каналы зашифрованы, для их просмотра требуется отдельно заплатить).

Возникла мысль, что «плейлист» — штука изменчивая, и стоит сделать собственный при помощи перебора подходящих диапазонов IP-адресов на основе содержимого старых «плейлистов». Чтобы не проводить перебор вручную, был написан простой скрипт на bash. Скрипт перебирает адреса, с которых возможно ведётся вещание, и, в случае удачи, выдёргивает один кадр телепередачи:

#!/bin/bash

for i in $(seq 1 255); do
    IP=239.255.2.$i
    URL=udp://@$IP:5500
    echo "== $URL =="
    mplayer -ac none -really-quiet -vo png -frames 1 $URL 2>/dev/null
    mv 00000001.png $IP.png
done

Для каждого из IP-адресов, для которых удалось поймать ТВ-канал, будет создан файл с именем вида $IP.png.

IPTV от МГТС: поиск каналов

Далее не составляет труда стереть те файлы, которые соответствуют шифрованным (или нежелательным каналам) и сгенерировать собственный M3U «плейлист»:

( echo '#EXTM3U' ; 
ls -1 *png | sort -V | sed "s/^(.*).png/#EXTINF:-1,1nudp://@1:5500/" ) > playlist

У меня получился вот такой список на 28 открытых каналов:

#EXTM3U
#EXTINF:-1,5 канал
udp://@239.255.2.18:5500
#EXTINF:-1,Russian Musicbox
udp://@239.255.2.37:5500
#EXTINF:-1,Детский
udp://@239.255.2.47:5500
#EXTINF:-1,ТРО
udp://@239.255.2.52:5500
#EXTINF:-1,Перец
udp://@239.255.2.54:5500
#EXTINF:-1,Disney
udp://@239.255.2.57:5500
#EXTINF:-1,ТВЦ
udp://@239.255.2.58:5500
#EXTINF:-1,РЕН ТВ
udp://@239.255.2.59:5500
#EXTINF:-1,СТС
udp://@239.255.2.61:5500
#EXTINF:-1,Ю
udp://@239.255.2.62:5500
#EXTINF:-1,Домашний
udp://@239.255.2.63:5500
#EXTINF:-1,Россия 2
udp://@239.255.2.65:5500
#EXTINF:-1,Россия 1
udp://@239.255.2.67:5500
#EXTINF:-1,Россия К
udp://@239.255.2.68:5500
#EXTINF:-1,ТВ3
udp://@239.255.2.90:5500
#EXTINF:-1,Звезда
udp://@239.255.2.91:5500
#EXTINF:-1,НТВ
udp://@239.255.2.95:5500
#EXTINF:-1,Первый канал
udp://@239.255.2.97:5500
#EXTINF:-1,ПЯТНИЦА!
udp://@239.255.2.98:5500
#EXTINF:-1,ТНТ
udp://@239.255.2.100:5500
#EXTINF:-1,Россия 24
udp://@239.255.2.109:5500
#EXTINF:-1,СТС love
udp://@239.255.2.112:5500
#EXTINF:-1,2x2
udp://@239.255.2.115:5500
#EXTINF:-1,PRO Бизнес
udp://@239.255.2.119:5500
#EXTINF:-1,Россия HD
udp://@239.255.2.120:5500
#EXTINF:-1,HD life
udp://@239.255.2.156:5500
#EXTINF:-1,Первый канал HD
udp://@239.255.2.185:5500
#EXTINF:-1,ОТР
udp://@239.255.2.210:5500

Применение описанной выше методики как нельзя лучше подтверждает эмпирический закон Парето: небольшими усилиями (написание простейшего скрипта и несколько минут на просмотр «галереи картинок») удалось получить вполне пригодный для практического применения результат (M3U «плейлист»).

Конечно, хотелось бы получать «плейлист» с минимальным вложением ручного труда. Сделать этом можно, к примеру, просмотрев трафик сетевой приставки сразу после её включения и приложив усилия по расшифровке протокола, по которому приставка получает данные о списке каналов. Но это совсем другая история...

P.S. Перед публикацией я решил запустить скрипт, перебирающий адреса, ещё разок и обнаружил по крайней мере три новых канала:

#EXTINF:-1,ТНВ Татарстан
udp://@239.255.2.86:5500
#EXTINF:-1,Ля Минор
udp://@239.255.2.233:5500
#EXTINF:-1,МТС
udp://@239.255.2.249:5500

Автор: Frantony

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js