В Москве МГТС проводит мероприятия по замене медной проводки на оптику по технологии 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
.
Далее не составляет труда стереть те файлы, которые соответствуют шифрованным (или нежелательным каналам) и сгенерировать собственный «плейлист»:
( echo '#EXTM3U' ; \
ls -1 *png | sort -V | sed "s/^\(.*\)\.png/#EXTINF:-1,\1\nudp:\/\/@\1\:5500/" ) > playlist
У меня получился вот такой список на 28 открытых каналов:
#EXTM3U
#EXTINF:-1,5 канал
udp:
#EXTINF:-1,Russian Musicbox
udp:
#EXTINF:-1,Детский
udp:
#EXTINF:-1,ТРО
udp:
#EXTINF:-1,Перец
udp:
#EXTINF:-1,Disney
udp:
#EXTINF:-1,ТВЦ
udp:
#EXTINF:-1,РЕН ТВ
udp:
#EXTINF:-1,СТС
udp:
#EXTINF:-1,Ю
udp:
#EXTINF:-1,Домашний
udp:
#EXTINF:-1,Россия 2
udp:
#EXTINF:-1,Россия 1
udp:
#EXTINF:-1,Россия К
udp:
#EXTINF:-1,ТВ3
udp:
#EXTINF:-1,Звезда
udp:
#EXTINF:-1,НТВ
udp:
#EXTINF:-1,Первый канал
udp:
#EXTINF:-1,ПЯТНИЦА!
udp:
#EXTINF:-1,ТНТ
udp:
#EXTINF:-1,Россия 24
udp:
#EXTINF:-1,СТС love
udp:
#EXTINF:-1,2x2
udp:
#EXTINF:-1,PRO Бизнес
udp:
#EXTINF:-1,Россия HD
udp:
#EXTINF:-1,HD life
udp:
#EXTINF:-1,Первый канал HD
udp:
#EXTINF:-1,ОТР
udp:
Применение описанной выше методики как нельзя лучше подтверждает эмпирический закон Парето: небольшими усилиями (написание простейшего скрипта и несколько минут на просмотр «галереи картинок») удалось получить вполне пригодный для практического применения результат (M3U «плейлист»).
Конечно, хотелось бы получать «плейлист» с минимальным вложением ручного труда. Сделать этом можно, к примеру, просмотрев трафик сетевой приставки сразу после её включения и приложив усилия по расшифровке протокола, по которому приставка получает данные о списке каналов
P.S. Перед публикацией я решил запустить скрипт, перебирающий адреса, ещё разок и обнаружил по крайней мере три новых канала:
#EXTINF:-1,ТНВ Татарстан
udp:
#EXTINF:-1,Ля Минор
udp:
#EXTINF:-1,МТС
udp: