Showing posts with label iptv. Show all posts
Showing posts with label iptv. Show all posts

Tuesday, November 6, 2012

MaxTV nastavak...

Dakle, opet sam došao u doticaj s MaxTV opremom (točnije, prijemnikom) i ovaj puta sam pripremio sve potrebno da se ubacim između prijemnika i ADSL rutera. Zvuči kao da sam povezao kamion opreme sa sobom, a u stvari sam samo ponio laptop s PCMCIA mrežnom karticom tako da je dotični imao dvije mrežne kartice. Taman ono što treba. Pri tome sam imao više sreće nego pameti, naime nisam ponio cross-over mrežni kabl ali je ispalo da su mrežne na laptopu (ili na nekom od uređaja) to prepoznale i promijenile smjer kontakata.

Prikupljanje informacija

Uglavnom, ono što sam napravio je da sam isključio MaxTV prijemnik iz rutera te ga potom spojio na laptop, a laptop (koristeći drugu mrežnu utičnicu) spojio na ruter gdje je prije bio spojen prijemnik. Dodatno, kao root korisnik izvršio sam sljedeće naredbe:
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1
# ip link set br0 up
# /etc/init.d/iptables stop
Te naredbe podrazumijevaju nekoliko stvari. Prvo, instaliran je paket bridge-utils u kojemu se nalazi naredba brctl. Konačno, mrežna sučelja na koja su spojeni prijenik i ADSL ruter zovu se eth0 i eth1. Zadnja naredba isključuje firewall, iako u načelu to ne bi trebalo, al' sigurno je sigurno. Ovo sam radio na CentOS 6 distribuciji i ako je neka druga u pitanju, treba napraviti odgovarajuće modifikacije.

Nakon toga sam isključio MaxTV prijemnik te sam pokrenuo snimanje prometa na laptopu:
# tcpdump -s0 -i br0 -w boot.pcap
i uključio MaxTV prijemnik. Promet je sniman u datoteku boot.pcap te sam ga puštao da snima promet dok god nije s ekrana televizora nestala oznaka Učitavam....

Dodatno, ispostavilo se da je komunikacija koja me zanima bila isprepletena s video zapisom zbog čega je datoteka bila vrlo velika. S obzirom da tako velika datoteka jako usporava rad prilikom njena anliziranja, odlučio sam izeliminirati video promet korištenjem tcpdump naredbe. U mom slučaju radilo se o video i audio podacima koji se šalju na adrese 224.1.2.81 i 224.1.1.1 (History i HTV1 kanali). Dakle, eliminacija je jednostavna:
# tcpdump -r boot.pcap -w boot1.pcap not host 224.1.2.81 and not host 224.1.1.1
Navedena naredba čita datoteku boot.pcap primjenjuje filter (not host 224.1.2.81 and not host 224.1.1.1) i zapisuje rezultat u datoteku boot1.pcap u kojoj više nema video (i audio) podataka. Nego, jesam li spomenuo da obožavam naredbu tcpdump? :)

Koliko god tcpdump naredba bila dobra, u određenim situacijama wireshark je ipak zakon. I sada dolazimo u baš takvu situaciju, analiza snimljenog mrežnog prometa.

Analiza snimljenog mrežnog prometa

Snimljeni mrežni promet učitao sam u wireshark korištenjem sljedeće naredbe:
wireshark boot1.pcap
Ovdje sada neću pričati o tehnikalijama kako sam nešto točno napravio već ću se prvenstveno zadržati na onome što sam uspio pronaći.

Slijed događaja odmah nakon uključenja samog uređaja je sljedeći:
  1. Dohvat mrežnih podataka korištenjem protokola DHCP. Pri tome DHCP poslužitelj koristi ARP kako bi provjerio da adresa nije korištena, te kako bi nakon dodjele adrese provjerio da ju je uređaj doista i prihvatio. U DHCP podacima nalazi se informacija o DHCP poslužitelju (172.29.162.9, 172.29.162.12), DNS poslužitelju 172.27.130.4 i domeni nat.myrio.net, NTP poslužiteljima 172.27.130.21 i 172.27.130.24. Zanimljivo da je tu i opcija DOCSIS full security server IP s vrijednošću 31 kraj koje stoji oznaka "[TODO]". Čini se da to nije podatak s poslužitelja već da Wireshark trenutno ne dekodira tu informaciju.
  2. DHCP poslužitelj s IP adresom 172.29.162.9 provjerava korištenjem ICMP echo request/response proba (efektivno, ping naredba) da li je klijent dostupan.
  3. Slijedi sinkronizacija vremena korištenjem NTP protokola.
  4. Ponovo DHCP upit, pri čemu se ovaj puta traži niz privatnih opcija, ali niti jedna nije pružena u odgovoru!
  5. Upit za ime sap.nat.myrio.net. Odgovor je višeodredišna adresa 224.1.3.207.
  6. SRV upit DNS poslužitelju za _vqe_channel_cfg._tcp.nat.myrio.net. Ovo je standardizirani upit kojim se traži informacija o usluzi _vqe_channel_cfg putem TCP protokola. Odgovor su poslužitelji vqe2.nat.myrio.net. (IP adresa 172.26.246.3) i port 8554 te vqe.nat.myrio.net (IP adresa 172.26.246.2) i port 8554.
  7. Pristup na poslužitelj vqe.nat.myrio.net korištenjem protokola RSTP. Rezultat je popis svih raspoloživih kanala u SDP formatu. O njoj ću malo kasnije.
  8. Spajanje na grupu 224.1.3.207 (IP adresa dobijena u 5. koraku). S te adrese stalno se prihvaćaju podaci u SDP obliku. Primjer podataka koji se razmjenjuju.
  9. Upit za ime vss.verimatrix.com (IP adresa je 172.27.131.194) i spajanje na port 12697 tog poslužitelja. Koliko sam vidio, dohvaćaju se certifikati. Tvrtka verimatrix izgleda da se bavi metodama naplate TV sadržaja.
  10. Dva puta se spaja na port 12698 poslužitelja vss.verimatrix.com i dohvaća nešto nepoznato.
  11. Spajanje na vks.verimatrix.com (IP adresa je 172.27.131.194) port 12700 i dohvat nekakvih binarnih podataka.
  12. Dohvat podataka poslanih na adresu 224.1.3.213. Podatke šalje poslužitelj 172.27.130.21 (to je NTP poslužitelj ali očito ima još neku funkciju).
  13. Pokušaj spajanja na adresu 172.27.130.2 i po port 8443, međutim došlo je do isteka vremenskog ograničenja (timeout). Kasnije je došao ICMP odgovor Destination unreachable (Communication administratively prohibited).
  14. Upit za imenom avr.nat.myrio.net (IP adresa 172.27.131.164) i potom slanje UDP paketa na port 2498. Odgovora na taj paket nije bilo.
  15. Upit za imenima mds.nat.myrio.net (IP adresa 172.27.130.107) i webapp.nat.myrio.net (IP adresa 172.27.130.2).
  16. Spajanje na webapp.nat.myrio.net port 8085. U ovom slučaju radi se o autentifikacijskom zahtjevu koji je uspješno obavljen. Zahtjev se šalje korištenjem metode GET protokola HTTP. Rezultat se vraća u XML obliku.
  17. Potom ponovno spajanje na webapp.nat.myrio.net port 8085 rezultat je bio "Success".
  18. Potom ponovno spajanje na webapp.nat.myrio.net port 8085. Ovaj puta se traže podaci o pretplatniku koji su dobijeni u XML obliku unutar tijela odgovora.
  19. Potom ponovno spajanje na webapp.nat.myrio.net port 8085. Prijenos nepoznatih podataka.
  20. Spajanje i dohvat podataka s grupa 224.1.3.209, 224.1.3.219, 224.1.3.216, 224.1.3.211 i 224.1.3.212.
  21. Spajanje na webapp.nat.myrio.net port 8085.
  22. Spajanje na grupu 224.1.3.208.
  23. Pet spajanja na webapp.nat.myrio.net port 8085. Prijenos nepoznatih podataka.
Nakon ovoga izgleda da dalje idu samo video i audio podaci između prijemnika i T-Com-a. U nastavku su produbljeni neki dijelovi gornjih koraka

Popis kanala

Popis kanala dohvaća se korištenje protokola RTSP. Datoteka se sastoji od dva dijela, upita i odgovora. Upit čine prve tri linije:

DESCRIBE rtsp://172.26.246.2/vqe-channels RTSP/1.0
CSeq: 1
Accept: application/sdp
Nakon upita slijedi prazna linija te odgovor. Odgovor je dalje sačinjen od dva dijela, zaglavlja i tijela. Zaglavlje čini pet linija:
RTSP/1.0 200 OK
CSeq: 1
Date: 2 Nov 2012 22:16:49
Content-Type: application/sdp
Content-Length: 152588
Nakon toga dolazi prazna linija i tijelo. Tijelo se sastoji od opisa programa u SDP obliku. Po jedan blok za svaki program. Ovdje je primjer jednog bloka:
v=0
o=- 1350979665943 1350979665943 IN IP4 vcpt2
s=DiscWild HD
i=Channel configuration for DiscWild HD ( Unicast Retransmission Only )
t=0 0
a=rtcp-unicast:rsi
a=group:FID 1 3
m=video 3058 RTP/AVPF 96
i=Original Source Stream
c=IN IP4 224.1.2.58/255
b=AS:9000
b=RS:13
b=RR:130000
a=fmtp:96 rtcp-per-rcvr-bw=13
a=recvonly
a=source-filter: incl IN IP4 224.1.2.58 172.29.162.99
a=rtpmap:96 MP2T/90000
a=rtcp:3059 IN IP4 172.26.245.206
a=rtcp-fb:96 nack
a=mid:1

m=video 3058 RTP/AVPF 98
i=Re-sourced Stream
c=IN IP4 224.1.2.58/255
a=inactive
a=source-filter: incl IN IP4 224.1.2.58 172.26.245.206
a=rtpmap:98 MP2T/90000
a=rtcp:3059 IN IP4 172.26.245.206
a=mid:2
m=video 50206 RTP/AVPF 99
i=Unicast Retransmission Stream
c=IN IP4 172.26.245.206
b=RS:13
b=RR:13
a=recvonly
a=rtpmap:99 rtx/90000
a=rtcp:50207
a=fmtp:99 apt=96
a=fmtp:99 rtx-time=3000
a=mid:3
Ovdje se može razaznati četiri bloka: globani dio od početka do prve linije m=, i potom po jedan blok od kojih svaki započinje s linijom m=. Globalni blok daje informacije o kojem programu se radi. U ovom slučaju u pitanju je Discovery Wild HD. Od preostala tri bloka, zanimljiv nam je (za sada) samo prvi. Ovi ostali su retransmisija, nagađam u slučaju da se može naknadno gledati. U prethodnom ispisu masnim slovima sam označio što pripada prvom bloku. Iz toga se mogu iščitati sljedeće informacije:
  1. Radio se o RTP/AVPF video podacima koji se šalju na port 3058 (linija m=).
  2. Za primanje tih video podataka koristi se adresa 224.1.2.58 (linija c=).
  3. Format u kojemu se prenosi video i audio je MP2T.
Web aplikacija

Web aplikacija nalazi se na IP adresi 172.27.130.2, port 8085. Poslužitelj je JBoss/Apache, a pristupa se sljedećim URL-ovima:
  • /broker/fcs/authenticate?
  • /broker/fcs/stbProperties?
  • /broker/fcs/subscriberInfo?
  • /broker/fcs/reminder?
  • /broker/fcs/rentedItems?
  • /broker/fcs/customCallerIDList?
  • /broker/fcs/favorite?
  • /broker/fcs/ContactManagement?
  • /broker/fcs/playList?
Tijekom autentikacije šalju se podaci o modelu prijemnika, programskoj podršci koja se izvršava i slično. Ne vidim nikakve tajne informacije u tom URL-u pa mi se čini da je autentikacija samo prijava pri čemu se MAC adresa koristi kao identifikator (jer se u svim ostalim URL-ovima javlja MAC adresa).

Analiza video i audio podataka

Ovo mi se čini kao put da se otkrije iz kojeg razloga nije moguće dekodirati strane kanale. Naime, iz snimljenog prometa izdvojio sam pojedini kanal i potom ga učitao u Wireshark. Izdvajanje kanala obavlja se po IP adresi. Primjerice, kako bi se izdvojio kanal 224.1.2.81 može se koristiti sljedeća tcpdump naredba:
tcpdump -r boot.pcap -w stream1.pcap host 224.1.2.81
Na temelju popisa kanala, radi se o History kanalu. U toj naredbi pretpostavljam da je prilikom nastajanja datoteke boot.pcap bio odabran taj program na prijemniku. Nakon što se naredba izvrši, rezultat će biti pohranjen u datoteku stream1.pcap. Kada se ta datoteka učita u Wireshark on će analizirati promet samo do protokola UDP. Kako bi nastavio dalje treba mu reći da se radi o RTP prometu, što se postiže klikom na desnu tipku na nekom paketu, odabirom opcije Decode As... i potom se u listi protokola pronađe RTP. Nakon toga on će ispravno dekodirati i MP2T.

Međutim, za sada nisam uspio otkriti u tim podacima kako je video točno kodiran i u čemu je problem. Ako netko želi pogledati izdvojio sam taj promet u dvije pcap datoteke koje se mogu učitati direktno u Wireshark. Obje su veličine oko 1M. Prva sadrži HTV1, dakle ono što se može bez problema gledati. Druga sadrži History kanal s kojim je problem u dekodiranju. Obje datoteke možete direktno podmetnuti nekom programu za prikaz videa (kao što je primjerice mplayer) i primjetit ćete kako HTV1 prikazuje, History ne. Dodatno, mogu se datoteke učitati u Wireshark te potom ekstrahirati video pa pokušati, iako, rezultati će biti gotovo isti.

Podaci na kanalu 224.1.3.207

Podaci s ovog kanala se stalno prihvaćaju SDP opisi nekakvih binarnih podataka. Ovo su podaci (sadržaj linije s=):
  • 7710.HE.30.14.0000.00.reno.rel6-myrioi-71
  • 7710.HE.32.14.0000.00.reno.rel6-myrioi-110
  • 8000.HE.30.14.0000.00.reno.rel6-myrioi-71
  • 8000.HE.32.14.0000.00.reno.rel6-myrioi-110
  • DTVLINEUP
  • DTVLINEUP_v.3.0
  • DTVLINEUP_v.3.1
  • GLOBALINSTALL
  • GLOBALLYFEATURED
  • GROUPS
  • MESSAGES
  • NPVRUPDATEDRECORDINGS
  • PIPEDSCHEDULE
  • PIPEDSCHEDULE_small
  • sw_update.SAIPP330HD.SCIATL
  • sw_update.SAIPP330HD.SCIATL.reno.rel6-myrioi-110
  • sw_update.SAIPP330HD.SCIATL.reno.rel6-myrioi-71
  • ui_default
  • ui_reno.rel6-46_tcom
  • WEBACCESS
  • WEBACCESS_en
  • WEBACCESS_hr
Interesantno da sam pretražujući Internet za ključnom riječju "x-carousel" naišao na ovaj forum. Međutim, radi se o postu na Francuskom jeziku koji baš ne razumijem. :)

Linije koje su istaknute masnim slovima označavaju datoteke koje je moguće dohvatiti korištenjem HTTP protokola. Za dohvat treba koristiti sljedeći URL:
http://webapp.nat.myrio.net/broker/documentName=GLOBALINSTALL.xml.gz
Kao što primjećujete, datotekama treba dodati ektenziju .xml.gz.

Pristup Internetu

Putem MaxTV mreže moguće je pristupiti Internetu ali se za to mora koristiti proxy. Proxy je na adresi 172.27.131.173, port 3128. Primjerice, putem njega moguće je na Facebook ali uglavnom je pristup ograničen, odnosno, nije moguće posjetiti bilo koje Web stranice. Inače, zanimljivo je da port 3128 po "defaultu" koristi Squid pa se vjerojatno radi o toj poslužiteljskoj aplikaciji.

Zaključak

Dakle, očito je jasno kako još nisam uspio odrediti zašto se ne vide pojedini kanali i trebat će na tome još poraditi. S obzirom da mi audio/video nije baš jača strana trebat će vremena. Međutim, ako netko drugi želi istražiti što je problem u tekstu sam stavio linkove na snimljen promet dva programa, jednog koji se ispravno prikazuje (HTV1) i jednog koji se ne prikazuje ispravno (History Channel).

Za kraj, ovdje je link na raspravu na Bugovom forumu u kojemu se raspravlja o STB-u i njegovoj prenamjeni. Čini se interesantno, ali još nisam stigao detaljno pročitati post.

Thursday, September 13, 2012

Još malo MaxTV-a...

Dakle, još sam malo kopao po MaxTV-u pa ću zapisati saznanja ovdje, za ubuduće. Naime, nakon što sam napisao i objavio prethodni post pokušao sam se odmah potom ponovo spojiti i gledati MaxTV. Međutim, na moje veliko iznenađenje, jednostavno nije radilo! Odlučio sam onda pričekati jutro pa ponovo, i ponovo nije radilo. Onda sam primijetio da ni prijemnik ne radi pa sam zvao tehničku podršku. Nakon nekoliko resetiranja, sve je proradilo. U tom trenutku, odlučio sam se ponovo pokušati spojiti, vidjeti da li sada radi te malo detaljnije istražiti stvari.

Prvo sam se spojio na prijemnik (STB) i isključio ga s napajanja te ga uključio. Odmah sam primjetio da šalje DHCP upit za mrežnim parametrima. I bio je uporan u tome. Zbog toga sam na brzinu podesio DHCP poslužitelj na laptopu koji mu je poslao standardnu IP adresu koju sam već znao da treba imati, te također usmjernik i DNS poslužitelj. Nakon toga, tražio je ime sap.nat.myrio.net, a potom i SRV zapis u DNS-u za ime _vqe_channel_cfg._tcp.nat.myrio.net. Taj je zanimljiv jer ime asocira da se putem njega na neki način podešavaju konfiguracije kanala! Potom je tražio još sljedeća imena:
  • mds.nat.myrio.net
  • webapp.nat.myrio.net
  • rm.nat.myrio.net.
Ok, digao sam DNS i podmetnuo mu ime webapp.nat.myrio.net. Na moje iznenađenje, potom se je pokušao spojiti na port 80. Naravno, na portu 80 nije bilo ničega. Prvo sam mislio dići Apache, ali sam onda ipak samo pokrenuo netcat koji je snimio sljedeći zahtjev:
GET /broker/documentName=GLOBALINSTALL.xml.gz HTTP/1.1
Accept: text/html, text/plain, text/*;q=0.8, image/gif, image/jpeg, image/*;q=0.8, */*;q=0.2
Accept-Encoding: gzip;q=1.0, x-gzip, deflate;q=1.0, identity;q=0.8
Host: webapp.nat.myrio.net
Connection: Keep-Alive, TE
TE: gzip, x-gzip, deflate
Zanimljivo, zar ne. :)

Tu sam stao s tim eksperimentima. Onda sam se spojio kao prijemnik na T-Com i pokušao dobiti IP adresu koristeći program dhclient:
dhclient em1
Međutim, nije bilo odgovora. Očito je tražio nešto specifično bez čega nije htio odgovoriti. Prvo sam mislio da je u pitanju MAC adresa, ali nije bila. Nakon petljanja i pregledavanja zahtjeva koji sam snimio dok sam bio priključen na STB, skužio sam da zahtjeva opciju VENDOR sa točno određenim sadržajem, tj. ako se naredba pozove ovako:
dhclient -V albis_7710 em1
uredno dobijem IP adresu i sve ostale parametre. Dakle, priča da T-Com prati MAC adrese ne stoji. Dalje sam petljao sa zahtjevima Web poslužitelju, došao do nekih podataka o kojima za sada neću i na kraju opet zaključio da najveći napredak sada mogu postići ako se spojim između STB-a i T-Com-a.

Još par stvari prije kraja:
  • Moguće je istovremeno pratiti dva programa putem MaxTV-a. Jedini problem koji sam imao je da, iz nekog razloga, Linux kernel je objema aplikacijama slao sve difuzne pakete, tj. nije ih razdvajao prema pristupu!
  • Snimanje programa je trivijalno. dumpstream opcija mplayera snima savršeno. :)
  • Opet nisam uspio do stranih kanala.
  • Po veličini prozora koji se ostvara za prikaz videa jasno se raspoznaje "običan" od HD kanala.
Nastavak možete potražiti u ovom postu.

Wednesday, September 12, 2012

MaxTV - svi dosadašnji neuspjesi

Prije nekoliko godina roditelji su dobili MaxTV i tada sam pokušao otkriti način kako bi mogao gledati program na laptopu i to putem WLAN-a! I ne samo to, već sam želio paralelno gledati dva kanala!

I tako, nešto sam kopao, saznao, i potom stao iz raznih razloga. S obzirom da mi je MaxTV opet pri ruci, odlučio sam se vratiti na ovu temu. Dosadno mi je doma pa rekoh ajd' da vidim jel' se ovdje u međuvremenu što promijenilo. Na žalost, ovaj puta nemam dvije mrežne kartice s kojima bi se mogao ubaciti između prijemnika i mreže pa sam "na slijepo" pokušao vidjeti što se dešava. O tome ću pred kraj. Ako vas ne zanima kako sam došao do informacija koje znam, skočite odmah na odjeljak Kako gledati MaxTV na laptopu. Taj odjeljak specifičan je za Linux, ali pretpostavljam da će ga netko preraditi i za Windowse.

Snifanje prometa s prijemnika

Ok, prva stvar je da sam laptop priključio s prijemnikom i počeo sniffati mrežu. Prijemnik je za to vrijeme bio u stand by modu, tj. nije bio uključen TV program. Na temelju prvog prometa sam vidio da prijemnik ima statički postavljenu IP adresu, budući da su stalno dolazili upiti sljedećeg oblika:
2:13:54.250380 ARP, Request who-has 10.70.160.1 tell 10.70.181.106, length 46
Na temelju toga, vrlo je vjerojatno da je IP adresa prijemnika 10.70.181.106, a adresa usmjernika 10.70.160.1. Kada sam svom laptopu dao adresu koju prijemnik traži (nagađao sam mrežnu masku 16 zbog razlike u IP adresama), prvo je Avahi (ili nešto slično) s mog laptopa napravilo gužvu na mreži. To je ta moderna plug&play tehnika. Al' dobro, brzo se je smirilo, no od prijemnika nakon toga ni traga ni glasa.

No, kada sam ga uključio onda je počeo pričati, a za to vrijeme na TV-u je pisalo da zbog poteškoća u prijenosu signala kanal je nedostupan. Dvije stvari je bilo vrlo jednostavno uočiti, prvo, DNS poslužitelj je na adresi 172.27.130.4, a NTP poslužitelj je na adresi 172.27.130.24. Dodatno, prijemnik je tražio sljedeća imena od DNS poslužitelja:
  • webapp.nat.myrio.net.
  • webapp.nat.myrio.net.nat.myrio.net.
U biti, radio se samo o prvoj adresi. Druga je posljedica pokušaja s dodanom domenom koja već je dodana.

Za pristup kanalima koristi se IGMP, te sam primjetio nekoliko aktivnosti. Prvo, sljedeća poruka služi da se priključi na kanal čija adresa je 224.1.2.81:
10.70.181.106 > 224.1.2.81: igmp v2 report 224.1.2.81
Zatim, bilo je pokušaja napuštanja tog kanala:
10.70.181.106 > 224.0.0.2: igmp leave 224.1.2.81
I toliko o prijemniku. S obzirom da nisam mogao emulirati na laptopu T-Com, bar ne bez značajnog truda, odlučio sam se da ću dalje gledati što se dešava na strani T-Com-a.

Snifanje prometa s T-Coma

Nakon što sam se priključio na T-Com, vidio sam da se javlja 10.70.160.1 s IGMPv2 porukama s kojima se raspituje za članove grupe. Što i nije baš korisno, trebalo je na neki način potaknuti nekakve događaje.

Način na koji IPTV funkcionira je da se prijemnik "učlani" u neku difuznu (engl. multicast) grupu i od tog trenutka video poslužitelj (172.x.y.z) počinje slati TV podatke korištenjem RTP protokola. Prema tome, trebalo se učlaniti u odgovarajuću grupu, primati TV podatke, dekodirati ih i prikazivati. Kandidati za takve aplikacije su VLC, mplayer, ffplay. U biti, kada je H264 u pitanju, svi oni koriste ffmpeg za dekodiranje komprimiranih video podataka.

Malo petljanja, eksperimentiranja, uz obavezno korištenje programa tcpdump (bez njega mogu eksperimentirati do besvjesti bez ikakvih rezultata) i skužih da jedan program mogu gledati korištenjem sljedeće naredbe:
cvlc rtp://@224.1.2.81:3081
Međutim, problem koji sam ovdje imao je da su paketi stizali (to sam vidio zahvaljujući tcpdump programu, a zahvaljujući njemu sam saznao i port koji trebam koristiti!), ali ih aplikacija nije primala. Nakon dosta guglanja naišao sam na SO da se izgleda problem javlja kada ima više aktivnih sučelja, i doista, nakon što sam isključio WLAN, aplikacija je počela primati podatkovni problem. No, sada je problem bio u tome da nije bio dobar codec. VLC je stavlja smeće, mplayer-u je trebalo vremena da se sinkronizira pa je i on počeo prikazivati smeće, a ni ffplay nije bio bolji. Svi oni prihvaćali su URL rtp://224.1.2.81:3081. I tako, u trenutku očaja, odlučio sam da ću se kasnije pozabaviti s tim i reko' da vidim kojim sve kanalima mogu pristupiti i probah:
cvlc rtp://@224.1.1.81:3081
I na moje neizmjerno čuđenje: RADI!!! Dobijam čistu TV sliku. S obzirom da se radilo o nekom lijevom TV kanalu, zanimalo me da pronađem neki korisniji program. Sljedeće sam kanale uspio naći (izlistani su oni samo koji se mogu gledati):
  • HTV1 (224.1.1.1:3001)
  • HTV2 (224.1.1.2:3002)
  • NOVA TV (224.1.1.3:3003)
  • RTL (224.1.1.4:3004)
  • K5 (224.1.1.27:3027)
  • Osječka TV (224.1.1.53:3053)
  • CMC (224.1.1.57:3057)
  • TPortal Sport (224.1.1.67:3067)
  • TV Šibenik (224.1.1.75:3075)
  • ? (224.1.1.76:3076)
  • Z1 (224.1.1.77:3077)
  • ? (224.1.1.78:3078)
  • ? (224.1.1.79:3079)
  • Vinkovačka TV (224.1.1.80:3080)
  • VTV (224.1.1.81:3081)
  • TV NOVA (224.1.1.82:3082)
  • TV (Dalmacija 224.1.1.83:3083)
  • TV4R(?) (224.1.1.84:3084)
  • TV Istra (224.1.1.109:3109)
  • Radio? (224.1.1.128:3128)
  • Radio? (224.1.1.129:3129)
  • Radio? (224.1.1.130:3130)
  • Radio? (224.1.1.132:3132)
  • Radio? (224.1.1.133:3133)
  • Radio? (224.1.1.134:3134)
  • Radio? (224.1.1.137:3137)
  • SB TV (224.1.1.142:3142)
  • SPTV (224.1.1.157:3157)
  • RI2 (224.1.1.187:3187)
  • MaxTV (224.1.1.201:3201)
  • DuTV (224.1.2.31:3031)
  • Radio? (224.1.2.45:3045)
  • TV? (224.1.2.49:3049)
  • TV+ (224.1.2.50:3050)
  • TV? (224.1.2.55:3055)
  • Radio? (224.1.3.11:3011)
  • TV? (224.1.3.15:3015)
  • Radio? (224.1.3.32:3032)
Primjetite vezu između zadnjeg dijela IP adrese i porta! Iako, ima par iznimki koje ovdje nisu navedena jer na njima nisam uspio detektirati što se nalazi!

Inače, način na koji se otkriva port je jednostavan. Stavite neki slučajni broj kada pokrećete cvlc i pratite što će tcpdump početi ispisivati. Naime, on će ispisivati na koji port stižu paketi. Prekinite cvlc (ili što već koristite) i pokrenite ga s ispravnim portom.

Nakon ovoga odlučio sam stati sa skeniranjem i uključiti ponovo WLAN kako bi provjerio ima li što na Internetu u vezi pogrešaka s dekodiranjem. I tako, kako sam petljao odjednom sam shvatio zašto ne radi multicast s više sučelja. Naime, paketi koji dolaze na multicast adresu su, primjerice:
15:38:34.978781 IP 172.27.128.34.49152 > 224.1.1.1.3001: UDP, length 1328
Primjetio sam da ne radi streamanje bez obzira što sam isključio WLAN, ali sve ostale postavke su bile OK. Onda sam dodao podrazumijevanu (engl. default) rutu i proradilo je. Konačno, shvatio sam da Linux filtrira pakete koji dolaze s "nepredviđenog" sučelja. U gornjem primjeru, IP paketi dolaze s adrese 172.27.128.34 koja bi trebala dolaziti preko WLAN-a, a ne Etherneta i zbog toga ju je Linux jezgra odbacivala. Dvije su mogućnosti kako se to može riješiti, isključiti rp filtriranje ili postaviti rute. Ja sam postavio rute i sve je odmah proradilo!

Kako gledati MaxTV na laptopu

Ok, ovdje je kuharica što treba učiniti na Linuxu. Prvo i osnovno morate doći do IP adrese svog prijemnika. To se možda može u postavkama, ali moje su bile zaštićene PIN-om te sam to saznao snifanjem prometa. To možete i vi, spojite žicom SetTopBox i svoj laptop, aktivirajte mrežno sučelje i tcpdump-om (ili Wiresharkom) pratite promet. Brzo bi vam trebalo biti jasno koja je IP adresa uređaja - ako nije potpuno isključen iz struje, onda ćete se načekati dok saznate tu informaciju. :)

Ok, potom napravite sljedeće:
  1. Priključite svoj laptop/računalo na MaxTV mrežni priključak umjesto vašeg prijemnika.
  2. Postavite si IP adresu koju ste otkrili da koristi vaš prijemnik. Koristite 16 bita za mrežnu adresu.
  3. Postavite rutu za mrežu 224.0.0.0/4 na sučelje (ip addr <net> dev <if>)!
  4. Dodajte rutu za IP adresu 10.70.160.1 da je direktno na sučelju na koji je priključen MaxTV.
  5. Dodajte rutu za mrežu 172.16.0.0/12 preko adrese 10.70.160.1.
Umjesto koraka 4 i 5 možete samo isključiti RP filtriranje na sučelju (/proc/sys/net/ipv4/conf/...).

Pokušajte pratiti HTV1:
cvlc rtp://@224.1.1.1:3001
Što dalje...

Ostao je veliki problem da ne mogu gledati najzanimljivije kanale, ali pretpostavljam da bi mogao oktriti u čemu je problem ako se ubacim između T-Coma i prijemnika. Naime, sigurno prijemnik dohvati popis programa zajedno sa svim parametrima i mogao bi dohvatiti to ako bi bio između njih (i ako ne koriste SSL/TLS, onda je malo složeniji problem).

Iduća stvar koju bi trebalo napraviti je prebaciti na bežičnu mrežu MaxTV "signal". Ideja koju imam je da bi uzeo preklopnik (switch) s WLAN sučeljem i na njega spojio i MaxTV i Internet priključak od T-Coma). Na taj način sam "kratko spojio" mreže za MaxTV i Internet. E sad, preko WLAN-a se inače ne prenose multicast promet. Vjerojatno neki preklopnici omogućavaju da se to promijeni, a alternativno, može se koristiti program udpxy koji može prebaciti multicast promet u standardni HTTP.

Možete također pogledati i novi post o MaxTV-u koji sam naknadno napisao, a nakon njega i ovaj.

Stari pokušaji

U nastavku slijedi stari tekst koji sam odlučio zadržati čisto informacije radi. Primjetite da je došlo do promjena IP adresa, a možda i pokojeg detalja.

Već neko vrijeme petljam po MaxTV-u kako bi mogao gledati TV na laptopu. Otežavajuća okolnost mog petljanja je činjenica kako pristup MaxTV-u imam svega nekoliko puta mjesečno na nekoliko sati (u najboljem slučaju). Krajnja želja je da mogu gledati televiziju putem bežičnog Etherneta i da za to vrijeme mogu normalno surfati po Internetu. No, do toga ću se izgleda malo načekati. Ovo je prvi post u kojemu ću opisati ono što do sada znam o cijeloj stvari. Moj post više je vezan uz Linux, iako vjerujem da se uz nešto petljanja dosta stvari opisanih ovdje može obaviti i na Windowsima.

Ako potražite malo po Internetu otkrit ćete da su ljudi već dosta o tome raspravljali. Nadalje, za gledanje programa na računalu (bilo Windows, bilo Linux) najčešće se spominje VLC. Međutim, na Linuxu se može koristiti i mplayer (koji također radi na Windowsima) te MythTV koji mi se čini posebno zanimljiv. U nastavku ću se više baviti VLC-om, dok ću korištenje ostalih opisati u posebnom tekstu. Dakle, VLC zahtijeva upisivanje protokola, IP adrese te pristupa. Protokol se najčešće u postovima ne spominje pa ću jasno reći kako morate odabrati RTP (ne UDP ili slično). IP adrese i portovi se spominju. Recimo, za HTV1 IP adresa koju treba upisati je 224.1.4.1 dok je port 3001. U postovima se spominju još neke stvari. Recimo, da morate računalu dodijeliti IP i Ethernet/MAC adresu STB-a (Set Top Box - onaj uređaj koji vam je HT dao). No, dok za IP adresu mogu vjerovati da treba (iako ću to još provjeriti) za MAC adresu sam već manje siguran. U postovima se također spominje kako ne možete koristiti Internet za vrijeme dok gledate TV, ali mislim da je to vezano uz podrazumijevanu (default) stazu koja je potrebna zbog nekih IP adresa koje MaxTV koristi za distribuciju video materijala te da se i to može riješiti uz nešto malo žongliranja s rutama i adreama.

Međutim, uz sav trud do sada mi još nije uspjelo gledanje TV-a na laptopu, bar ne na način na koji bi to želio. U nastavku slijedi opis što sam do sada isprobao i s kakvim rezultatima.

Prvi pokušaj je bio najjednostavniji i čisto informativan. Spojio sam kabl na laptop i snifao mrežu. Ono što se moglo vidjeti su obavijesti usmjernika 10.140.160.1 o različitim grupama. Osim toga, ničeg više nije bilo.

Drugi, ozbiljniji, pokušaj je bio staviti IP i MAC adrese STB-a sučelju u koje sam uštekao kabl za MaxTV te još rutu za mrežu 224.0.0.0/4 koja direktno pokazuje na to sučelje. Zatim sam pokrenuo VLC i upisao adresu TV kanala kojega sam želio pratiti. Međutim, ćorak! Računalo se priključilo na navedenu grupu, vidim korištenjem Wiresharka da je IGMP paket otišao, ali od TV-a ništa. Stream ne dolazi.

Ok, ovo je čudno i očito nešto nedostaje. Jedini način na koji sam to mogao vidjeti je tako da pratim promet što ga razmjenjuje STB s ostatkom mreže. Problem je bio samo u tome što na laptopu nemam dvije mrežne kartice. Zbog toga sam prvo probao spojiti laptopu paralelni port na HT-ovom ruteru. Međutim, ništa značajnije se nije dešavalo što je uostalom bilo i očekivano s obzirom kako funkcionira mreža i uređaj. U drugom pokušaju sam složio od dva Internet porta na HT-ovom ruteru preklopnik (switch) dok sam preko bežične mreže pristupao s laptopom. Ni to nije radilo. Konačno, kupio sam dodatnu PCMCIA karticu i složio preklopnik od laptopa.

About Me

scientist, consultant, security specialist, networking guy, system administrator, philosopher ;)

Blog Archive