• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Zdravím hosta! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Návod - Jak sledovat plnou O2 TV na síti
#1
Lightbulb 
Multicast, Unicast, Wireshark, UDP Proxy aneb chytáme O2 TV na PC

Úvod
Tenhle návod jsem již sepisoval na jedno fórum, ale říkal jsem si, když je to moje práce, proč to nehodit i sem, třeba se někdo něco přiučí. V tomto návodu se naučíme jak použít Wireshark pro odchycení streamu, který se přehrává v síti, rozdíl mezi TCP a UDP, jak přemostit Multicast vysílání na Unicast. Dozvíte se tedy, odkud se berou adresy typu http://10.0.0.1:8000/udp/239.232.6.24:8624 a co tedy znamenají. 

Cílem je pochopení co se vlastně děje na pozadí a poté tyto nástroje prakticky uplatníme pro sledování O2 TV (pro uživatele pevného O2 internetu a O2 TV, nikoliv O2 TV Air/Go) v síti na počítačích s Kodi, VLC.. 

Takže sedím u O2 TV, která je připojená do modemu/routeru a chtěl bych se na ty samé programy dívat i jinde, ovšem ve stejné kvalitě (1080i) a ne v té uškrcené 720p verzi co nabízí O2 TV Go.

Teorie
K zákazníkovi IPTV se může stream doručit dvěma způsoby. Buď pomocí Unicastu(TCP) anebo Multicastu(UDP).

Unicast je tzv. jednosměrné vysílání a setkáte se s ním kdykoliv když se kouknete na nějaké internetové video, nebo stahujete nějaký soubor, nebo i webovou stránku. Klient náváže spojení se serverem a ten mu pošle požadované soubory. Pokud budeme takto přenášet televizní stream, znamená to, že pokud se na můj server připojí 5 klientů a budou se chtít dívat na Eurosport o datovém toku 10Mbps, budu potřebovat 50Mbps upload. S narůstajícím počtem klientů výrazně narůstá i zátěž. (Takže např. klasický stream z iVysílání, nebo klasicky stahované video z uloz.to, nebo veškeré streamy co jste našli odjinud)

Multicast je vícesměrové vysílání. Jedná se o efektivní zasílání dat v jedné síti k více příjemcům najednou SOUČASNĚ. Můžete vysílat jakákoliv data, ale nejvíce se to hodí pro lineární televizní vysílání, protože pokud otevřu toto vysílání, nezačne se mi dané video přehrávat od začátku, ale všem klientům v jeden čas proudí ta samá data. Pro živé vysílání to nepředstavuje žádný problém. Zátěž nevzrůstá s narůstajícím počtem klientů, v síti stále proudí samá data pro všechny a klient se na ně jen napojí. Toto vícesměrové vysílání jde realizovat pouze v lokální síti. Nemůžete takto vysílat do "Internetu". Ideálně se to tedy hodí pro menší poskytovatele internetu, kteří mohou do své sítě pro všechny klienty pustit i IPTV. Ano, sice máte doma svůj router a to zatím je už "Internet", ale můžete být stále ještě v jedné menší síti, kde na konci je poskytovatel a až za tím je Internet -> veřejná IP.

V případě O2 se toto řeší dvěma linkami. Mám zapojený modem od O2 k telefonní zásuvce a do něj proudí 2 sítě. Jedna už je přímo "Internet", takže můj router už dostává přímo veřejnou IP adresu. A poté je tam i druhá vnitřní síť, ve které můj router bude mít adresu typu 192.168.. nebo 10.0.0..., v podstatě na konci není "Internet" ale další router, který v tomto případě pomocí Multicastu distribuuje IPTV. Na modemu od O2 je to poznat na jednotlivých ethernetových portech vzadu. Ve webové konfiguraci si můžete nastavit, zda-li všechny porty budou odkazovat na internet nebo jestli budou sloužit nějaké pro O2 TV. Zapojíte li do těchto portů počítač, nepřipojíte se k internetu ale do sítě O2 TV.

Pro multicastové vysílání v lokálních sítí je vyhrazen blok IP adres 224.0.0.0-239.255.255.255. Samozřejmě si to poskytovatel může posílat kam chce, ale to by se pak neřídil dle IPv4 specifikace. S tímto blokem adres se určitě setkáváte při hledání streamů :) Pokud bychom byli tedy ve stejné síti kde je multicast vysílání, ve VLC bychom otevřeli stream s adresou např.: udp://239.232.0.1:4000. (Všimněte si , nezačíná na http:// - tedy TCP protokol ale na UDP - Multicast)

Chytáme telku
Takže nyní v mém případě O2 vím, kde se dané vysílání nachází a v nastavení routeru nastavuji porty 2 a 3 pro O2 TV síť. Do jednoho zapojím O2 TV a do druhého zapojím klasický notebook. V síťovém nastavení O2 TV set-top boxu se kouknu jaké nastavení IP adres tento box dostává a nastavím to stejně i na notebooku.

   
Obrázek centrum nastavení síťových připojení pro síť O2 TV. V tomto případě nevadilo, že jsem nastavil IP adresu identickou s tou, kterou má zrovna set-top box. Pro sledování sítě to nijak nevadilo.

Ve vašem případě může váš poskytovatel provozovat IPTV v jedné síti, takže váš počítač už bude rovnou připojený do sítě, kde je multicast vysílání. Mám teď 2 možnosti. Buď ten vyhrazený UDP blok IP adres proskenuji např. IPTV Scannerem, což ale s s počtem možných portů může trvat dlouho. Anebo v tomto návodu použijeme Wireshark a pokusíme se dané IP adresy jednotlivých kanálů zjistit sami :)

Wireshark je software, který sleduje síťový provoz ve vaší síti a díky němu můžete zjistit co vše ve vaší síti proudí za data. Ideálně tedy uvidíme, jaké IP adresy a porty otvírá náš O2 TV set-top box. 

Nainstalujte si tedy Wireshark a po spuštění vidíme následující okno:
   

Vlevo pod textovým polem vyberete na jakém síťovém adaptéru chcete sledovat komunikaci (Je to Wifi karta, Ethernet,..). Já tedy vybírám můj USB Ethernet dongle. Nahoře můžete rovnou zadat filtr, který bude vypisovat pouze komunikaci, o kterou máte zájem. Nám tedy bude bohatě stačit vepsat udp. A můžeme začít sledovat.

   
Jak přepínám programy na O2 TV, zde na wiresharku vidíme pakety, které přenáší MPEG-TS. MPEG-TS je video stream, což je tedy přesně to co hledáme. Klikneme li na jeden z těchto paketů, vidíme další informace. Nás zajímá z jaké IP adresy a portu tento paket vychází. Vidíme, že jde z IP adresy 239.232.10.1 a portu 11001. Ve VLC by tedy stačilo napsat udp://239.232.10.1:11001 a už můžete sledovat :)

Telka na síti, most mezi UDP a TCP
V případě tohoto O2 řešení, jsem měl na počítači 2 síťové karty a VLC nevěděl, z jaké má přehrávat. Co v tomto případě, ale hlavně co když chcete vysílání sledovat na jiných zařízeních v síti?

K tomu slouží takzvané UDP to HTTP(TCP) mosty. Software, který vytvoří HTTP server a díky němu přemostí Multicast vysílání(UDP) na Unicast vysílání(TCP). Příkladem může být skvělé linuxové řešení udpxy(UDP Proxy). Protože většina z Vás používá okna, existuje i port programu pro Windows. Jak můžete vidět níže v okně programu vyberete adaptér, kde je zdroj vysílání (Multicast interface) a v HTTP-Server Interface vyberete adaptér, na kterém chcete spustit HTTP server. Vyberete port na kterém má program bežet a tlačítkem start server pustíme. Vidíte i výpis logu. Pokud vše funguje, můžete i tento program nainstalovat jako službu (bude běžet na pozadí a nebudete muset zapínat toto grafické rozhraní). 

Poznámka mimo: Pokud máte např. linuxový server, na kterém běží Tvheadend, můžete na něj rovnou nainstalovat udpxy a protože tyto streamy jsou přímo .ts, nemusíte řešit žádnou ffmpeg pipeline, ale jinak postupujte podle skvělého návodu od @JiRo [Only registered and activated users can see links Click here to register]. Výsledkem bude O2 TV, nebo IPTV od vašeho poskytovatele, kterou si budete moct nahrávat na svůj vlastní disk, a budete mít také možnost timeshiftu.

No a pak už stačí ve VLC tedy zadat adresu a port tohoto HTTP serveru a požadavek (UDP adresu), který chcete přemostit. Tedy např. http://localhost:8000/udp/239.232.10.1:11001 -> Server se připojí na Multicast vysílání a začne ho přeposílat pomocí Unicastu(HTTP protokol, TCP) k vám (jako když stahujete z internetu nějaký soubor). Takže nyní vidíte, proč mají některé adresy streamů tento formát. Připojujete se na most, který pro vám předá vysílání z lokální sítě a pošle vám ho přes internet.

Zde vidíme 2 příklady:

   
Na jednom mám ethernetový kabel od modemu z O2 TV sítě zapojený do notebooku a na něm běží UDP-HTTP most a VLC přehrávač.

   
Na druhém mám ethernetový kabel zapojený do serveru, který má 2 síťové karty -> V jedné je tedy O2 TV a v druhé je klasická domácí síť. Na obrázku vidíme vzdálenou plochu serveru a VLC na počítači v síti.

Závěr
Takže nyní víte rozdíl mezi Unicastem a Multicastem, umíte vytvořit most mezi nimi(UDP Proxy) a dokonce umíte zachytit a prozkoumat pakety v síti pomocí Wiresharku.

Důvodem tohoto zbytečně komplikovaného řešení byla moje obrovská nespokojenost s O2 TV set-top boxem. Pokud to někdo čte od O2, tak doufám, že tuhle cestu nezablokují, nebo ať to udělají, ale až opraví ten svůj set-top box. Zvuk se tam rozchází s obrazem, deinterlacing tam není, GUI má tak 15fps, šíleně se to laguje, byla to fakt hrůza. Po použití Kodi i na relativně pomalém Raspberry Pi 3 to byl obrovský rozdíl směrem kupředu v celkovém komfortu sledování (lineárního vysílání). Kdyby ještě měli nějaké verze programů jako Super HD, kde by byly programy streamovány ve vyšším, ideálně plném datovém toku, bylo by to ideální, ale na těch 6mbps se nedalo dívat a proto jsem nakonec od tohoto řešení upustil. Nicméně, určitě se to třeba bude někomu hodit, anebo to uplatní u jiného poskytovatele s podobným, jednodušším technickým řešením :)

A menší tip, který nebudu dále rozepisovat - v případě O2 TV k vám proudí XL, ikdyž máte třeba L ;)


Wireshark je k dispozici na [Only registered and activated users can see links Click here to register]

UDPXY se nachází na webu [Only registered and activated users can see links Click here to register]. Je k dispozici ve většině distribucích v repozitářích (Debian, Ubuntu, Arch Linux) -> Tuto linuxovou verzi vidíte, když najdete nějaký stream, co má tu UDPXY Status page, kde vidíte další piráty jak sosají někomu z domova stream :) Kdyby měl někdo problém s nastavení linuxové verze, ať se zeptá klidně v komentářích, ale každá distribuce zachází trochu jinak např. s firewallem, tak jsem to nechtěl řešit.

Port UDPXY pro Windows - UdpProxy je na stránce [Only registered and activated users can see links Click here to register]. Je to sice ruské, ale sám jsem to zkoušel a je to ten program na těch screenech, je v angličtině a je to čistý port pro Windows s GUI ovládáním.


A předem upozorňuji, už mě moc nebaví odepisovat na PM zprávy, já vím, že se stydíte sem třeba psát, ale tak, ani se neznáme, tak je to celkem jedno. Je lepší položit dotaz rovnou sem, protože tak z toho mohou těžit i ostatní, co mají třeba podobnou otázku. A nejlepší je, že už asi 2x jak idiot píšu odpověď, kde něco vysvětluji a při odeslání mi to napíše, že uživatel má vypnuté soukromé zprávy.... Takže už na PM, které budou s tímto souviset odpovídat nebudu.
A neexistuje blbá otázka, ale jen blbá odpověď :)
 
Citovat
#2
Moc děkuji za návod sice to je na mě hodně složité ale budu bojovat.
 
Citovat
#3
Tak držím palce. Já tam mám jen víc teorie, aby uživatel věděl, co vlastně dělá, protože se mi zdá, že ti lidé co tu třeba "umí" hledat iptv linky mají jenom naučený jeden postup, ale nevědí proč, nebo jak to funguje. Ten postup samotný by ale neměl být nijak složitý, protože je opravdu rozepsaný :)
 
Citovat
#4
Da sa tento postup aplikovať aj na ine siete npr.  TV ORANGE.
 
Citovat
#5
Tak nic ti nebrání si to zjistit sám, pokud to máš od něj :)
Protože já tam nepracuji/ani nejsem zákazníkem Big Grin

Ale jinak ano, jak tam píšu. Pokud váš poskytovatel internetu a IPTV vysílá takto multicastově tak ano :) Já jsem to ukazoval na příkladu O2 TV, protože to jsem měl doma -> měl jsem k tomu přístup abych to prozkoumal.
 
Citovat
#6
Díky za návod. Hrabu se v tom celý večer a mám zatím takový poloviční úspěch. Podařilo se mě pomocí Wiresharku získat ten stream, ale po vložení do VLC se nic nestane. Žádná hláška, žádné spuštění streamu. Od poskytovatele internetu mám domu přiveden kabel. Do něho jde obyčejný switch. Ze switche jeden port již do mého routeru, kde mám nastaveny síťové parametry ze smlouvy od poskytovatele (IP, maska,brána, DNS). Druhý port ze switche je připojen do STB dodaný od poskytovatele. Zde se nic nenastavuje, ale i STB má nastavenou ručně IP adresu. Ve smlouvě je ale uvedena pouze IP adresa a DNS pro STB, neznám masku a bránu. Protože ale při ruční konfiguraci síťovky na notebooku musím nějakou masku zadat, nastavím 255.255.255.255. Na notebooku spustím Wireshark a přepojím kabel ze STB do notebooku. Okamžitě se objeví pakety s tím MPEG TS protokolem, jenže postupuji podle návodu a VLC nic nepřehraje. Pro upřesnění, wifi v notebooku je vypnuta, jsem připojen jen tím kabelem. V hlavním panelu mám na ikoně připojení vykřičník, že internet není k dispozici, ale podle návodu je to zřejmě normální stav, protože se připojuji k tomu routeru, který vysílá IPTV. Ještě jsem zkoušel síťové kartě nastavit stejnou MAC adresu jakou má STB, ale to také nepomáhá. Je tedy problém v tom, že nemám nastavenou bránu? Nebo že maska může být jiná než jsem nastavil tu 255.255.255.255? Jen mě zaráží, že ten Wireshark funguje.
 
Citovat
#7
Masku spis zkus 255.0.0.0, to cos nastavil je nejvic omezujici maska.
2x Raspberry Pi 2B - OpenELEC v6.0.3 (KODI 15.2) + 32 GB SD card & Raspberry Pi Zero
MacBook Air 13" - i5, 8GB RAM, macOS + KODI 17.3
Asus EEE Box EB1501U - Atom N330 (1.6 GHz), 4GB RAM, nVidia ION, W10 Pro + KODI 16
iPhone 7 128 GB v11.1.2 nonJB CZ & Apple Watch 2 Nike+ v4.1
iPad Air 2 128 GB v9.0.2 JB CZ (KODI 15.2)
 
Citovat
#8
Díky za rychlou reakci. Bohužel to samé.
 
Citovat
#9
Hoď to do kodi cez playlist  a spusti to. Tiež mi to nechcelo spustiť cez VLC player. Kodi to spustilo bez problému.
 
Citovat
#10
ako spojiť  tie dva siete( /lokatnu-udp a internet TPC od poskytovateľa / do mojej lokalnej siete ,respektive ake sposoby a moznosti su .mam doma aj NAS  ts 253A  ktory bi sa mohol vyuzit  ma 2x lan port
 
Citovat
#11
Dyť to tam právě popisuji :) ten UDP most
 
Citovat
#12
@leguanit Díky. Máš pravdu, ve VLC nic, v Kodi se to přehraje.

Takže nyní bych chtěl mít TV ve svojí místní síti. Už vím, proč mě poskytovatel nechtěl dát playlist. Mám nabídku XXL za cenu L... Takže jestli to dobře chápu, potřebuji nějaké železo, které bude mít dvě síťovky a poběží na něm linux. A dvě služby, TVheadend a ten UDPProxy?
Ten UDPproxy jsem si chtěl vyzkoušet zatím na Win10 a hned problémy. Nespustí se mě stream, viz tento log a ukázka stejného streamu, který přes to udp jde v pohodě:
   

Testováno v Kodi i v tom VLC, kde ale nejedou ani ty udp streamy.
Eset mám vypnutý.
 
Citovat
#13
Lze, nebo nelze sledovat o2tv přes android box, tak abych mohl přetáčet v čase? Placenou o2tv mam, xxl
 
Citovat
#14
Když máš android box a chceš zpětné zhlédnutí, tak si nainstaluj O2 TV Go aplikaci :)
-Programy nebudou v 1080i, ale budeš moct jít do Archivu
 
Citovat
#15
marhycz: teoretická otázka na Kuki.TV... Sehnal jsem adresy UDP pro KuKi....myslíš že když si zaplatím menší baliček že mi půjdou všechny porty - programy???
::: Raspberry 1B + Hifiberry DAC = piCorePlayer 3.21 (Logitech Media Server 7.90) / 3x Beelink Mini MXIII-II 2GB/16GB LibreELEC 8.2 v NAND :::
 
Citovat
#16
UDP? To znamená, že jsi přímo v síti u Netboxu? V tom případě by to bylo velice možné, ale nejsem developer Kuki, ani zákazník Netboxu, takže ruku do ohně za to nedám
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)