Friday, September 28, 2012

Problem udžbenika i izdavača...

Ovaj post potaknula je jedna neobavezna rasprava uz popodnevnu kavu koja se održala poprilično davno. Dovoljno davno da sam već i zaboravio na to. Međutim, danas sam pročitao kako je u Kaliforniji donesen zakon o "otvorenim udžbenicima". O tome se pričalo još početkom godine kada je, sadašnji zakon, bio tek prijedlog. Specifičnost ovog zakona, u odnosu na moj prijedlog, je u tome što taj zakon propisuje da tiskane verzije knjiga ne smiju koštati više od $20. Vezano uz ovu temu, baš danas sam čuo informaciju da je u Hrvatskoj na snazi četverogodišnji "moratorij" na promjenu udžbenika s problemom da taj moratorij završava iduće godine a baš ništa se ne dešava u smislu određivanja koji će se novi udžbenici koristiti.

Cijela priča vrti se oko činjenice kako je u srednjim školama problem što se udžbenici prečesto mijenjaju te ih ima puno različitih vrsta. A mijenjaju se zato što izdavači žele zaraditi. Naime, na taj način se postiže da su udžbenici za novu školsku godinu dovoljno drugačiji da ih učenici (odnosno njihovi roditelji) moraju kupovati. I tako iz godine u godinu. Takvo ponašanje od strane izdavača i nije neočekivano. Međutim, svakako je neočekivano od države da ne sredi tu situaciju. U toj igri jedini koji u konačnici profitiraju su izdavači. Drugi sudionici, a to su učenici, nastavnici i država, u konačnici gube. Rješenje koje sam spomenuo, moratorij na promjenu udžbenika, i nije baš najsretnije, pogotovo kada se približava kraj a ništa se ne radi na novim udžbenicima.

Što se mene tiče, rješenje je relativno jednostavno. Država treba platiti autorima pisanje udžbenika koji bi potom bili svima javno dostupni u elektroničkom obliku pod CC licencom. Taj udžbenik bi se proglasio referentnim te bi besplatno bio dostupan u elektroničkom obliku sa stranica MZOS-a. Što se tiče izdavača, oni bi mogli štampati i prodavati papirnate verzije udžbenika, a također bi mogli dodavati audio i video materijale, pa čak financirati pisanje i alternativnih verzija udžbenika (alternativnih u smislu da se na drugačiji način objašnjava ista stvar kao i u službenom udžbeniku). Uglavnom, na taj način bi na dobitku bili učenici i država, a izdavače bi se prisililo da se izbore sa dodatnim materijalima za nakladu.

[20120930] Nadopuna
Danas sam naletio na link u kojemu se opisuje "hackaton" održan preko vikenda tijekom kojega je napisana knjiga iz matematike za srednje škole. To se odigralo u Finskoj a sudjelovali su profesori matematike iz srednje škole. Naravno, knjiga je pod CC licencom.

Thursday, September 27, 2012

Biseri naših neukih novinara 6...

I tako, imamo najgenijalnije informatičare u Hrvatskoj, model 2012. godina, koje je, ni manje ni više, otkrio Jutarnji! Mislim, naslov jasno kaže:
OTKRIVAMO Ovo su najgenijalniji informatičari u Hrvatskoj! Njih strani investitori - traže
Pretpostavljam da je vrli novinar dao svim "informatičarima", i onima koji se tako osjećaju, test inteligencije te nakon napornog obilaska po Hrvatskoj i obrade podataka, došao do konačnog zaključka da su baš to najgenijalniji informatičari u Hrvatskoj.

Nevjerojatno koji senzacionalizam i lupetanje!

Ono što je istina je da su ti ljudi imali ideju. Da se razumijemo, nije mala stvar imati originalnu ideju, a uspjeh je čak i biti među prvima koji imaju neku ideju. Pa čak i da ideja nije originalna, implementacija može biti bolja od svega postojećeg i na taj način osvojiti korisnike. Međutim, u svim tim slučajevima, osim ideje, trebalo je još upornosti i rada te znanja. Genijalnost, iskreno, ne znam gdje ulazi u tu cijelu priču. No, i sam pojam "genijalnost" je nešto što je toliko ofucano da već na samu spomen te riječi dobijem osip! U stvari, ni ne znam po kojem kriteriju bi rekao da su genijalci. Jel' su možda smisli novi algoritam, napravili savršenu implementaciju, ili nešto treće? A opet, teško da bi i to bio kriterij za proglašavanje genijalaca!

Ajd', da ne bude sve negativno, jednu stvar moram priznati Jutarnjem. O ovakvim stvarima se treba pisati. Međutim, treba se pisati u smislu da se i ostale potakne da pokušaju, a ne u smislu da se ostalima kaže da su glupi...

Ostale postove iz ove "serije" možete pronaći ovdje.

Wednesday, September 26, 2012

Segmentation fault in the header of a main function...

Well, I just compiled one program I got from the Internet and to my surprise it segfaulted immediately after the start. To protect innocent, I'll call the binary of this program gensigseg. This is what happened:
$ ./gensigseg
Segmentation fault (core dumped)
First, I thought that it accesses command line arguments without checking they are present. This application proved already to be very lousy written, and it wouldn't surprise me that this is the problem. So, I tried with a dummy parameters, all in hope that I'll get some kind of a help message. But, the same thing happened again and there was no help message. It was time to see where it exactly segfaulted:
$ ulimit -c unlimited
$ ./gensigseg
Segmentation fault (core dumped)

$ gdb ./gensigseg core
...
Core was generated by `./gensigseg'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000407100 in main (argc=Cannot access memory at address 0x7fff40d80f8c
) at gensigsegmain.c:137
137    int main (int argc, const char *argv []) {
You can imagine my surprise when I saw that! Segmentation fault in the header of the function main itself! Well, that was weird. Googling for this didn't revealed anything useful. After all, how many times did you see that?!

So, after poking with assembly, different optimization options, etc. I finally realized that the problem was in stack. Namely,  when disassembling main function in gdb, it pointed exact assembly instruction that caused the segmentation fault, and it turned out to be the instruction that accessed stack after the stack's value was subtracted with some large value (this was allocation of space for local variables). Anyway, after increasing stack size from default 8M to 32M (using ulimit command) the command finally worked.

Instead of conclusion, let me say that this application is unbelievably lousy written. So much about those who wrote it. More interesting is that this application was written for ITU, and if ITU accepts such shit (I have to use that word!) that what it says about ITU itslef? I'll leave this question unansvered...

Wednesday, September 19, 2012

Problem with authors that do not attend conferences and pay fees...

Yesterday I had an idea and before I forget about it, I thought it could be good to share it with the world. :) The reason I got that idea is that, very likely, I'm going to be vice chair of Information Systems Security event.

As far as I know, there are lot of authors that submit their papers to conferences with the intention to be published in proceedings, but they don't show up on the conference to present their work. This is regarded as rude. But, even worse is that there are also those that don't pay conference fees. Namely, usually the proceedings have to be sent to the press before deadline for payments, and also, there are those people that pay on the spot, which is also acceptable.

So, the problem is that authors promise that they will pay and attend conference, but in the end they don't do neither of those two things. So, the question is, how to revoke papers of the authors that didn't pay? Obviously, it is not possible to revoke paper from published proceedings. Nor it is an option to print proceedings later because it would incur additional costs (shipping). Lately, it is also common that conferences publish CDs with proceedings only. Those potentially could be duplicated on spot, but then again you have a problem that you don't know until the last day of the conference who will or who will not attend/pay and thus you would need to postpone CD until the end. This is also unacceptable as some people come only for a day or two and they leave before the last day of the conference, so again you have shipping costs. But shipping is not the only problem, the other is that people that attend the conference like to have papers in order to more easily follow presentation.

The proposed solution is simple. First of all, the proceedings would be published only on CD or USB. That is environmentally friendly approach. Next, all the accepted papers would be placed on the CD. BUT, they are encrypted and inaccessible without a key that is NOT on the CD/USB itself. Each paper with its own, unique, key. That key would be published on Web pages of conference (or on IEEE/ACM pages). Obviously, only those that payed (and attended the conference) will have keys published and thus, their papers will be part of the proceedings. The others will be completely unavailable.

This can be made quite transparent, in a sense that some application is started that obtains keys, and stores it locally if necessary so that content can be read when offline.

I think that's good idea. Even though its realization is questionable. What do you think? :)

Tuesday, September 18, 2012

Fedora 17 and VMWare Workstation 9...

I just upgraded VMWare Workstation to version 9. Everything went fine except I couldn't start virtual machines. :) Each start crashed the machine with some nasty kernel error. :) A quick googling reviled this link. Basically, you have to download patch, unpack it and run installation script from within.

The only problem I had was that script, somehow, thought that it was already applied:
# ./patch-modules_3.5.0.sh
/usr/lib/vmware/modules/source/.patched found. You have already patched your sources. Exiting
What happened actually is that previous patches I applied left this file and because of some error (I didn't investigate details) the script was confused. So, I simply removed offending file (/usr/lib/vmware/modules/source/.patched) and restarted script.

Sunday, September 16, 2012

Reading monitor supported resolutions...

I was browsing David Underhill's blog and this post caught my attention. Namely, in that post he explains how he had problem with a newly bought monitor that different operating systems he has set to a wrong resolution. But, the interesting thing is that there are tools in both Linux and Windows that allow you to query monitor information. The tools on Fedora are monitor-get-edid, monitor-parse-edid, and monitor-edid, all part of monitor-edid package and all written in perl. So, this is what I get running those tools on my W510:
$ monitor-get-edid | monitor-parse-edid
EISA ID: LEN40b1
EDID version: 1.3
EDID extension blocks: 0
Screen size: 34.4 cm x 19.3 cm (15.53 inches, aspect ratio 16/9 = 1.78)
Gamma: 2.2
Digital signal

    # Monitor preferred modeline (60.2 Hz vsync, 54.9 kHz hsync, ratio 16/9, 118 dpi)
    ModeLine "1600x900" 106 1600 1664 1706 1930 900 903 906 912 -hsync -vsync

    # Monitor supported modeline (50.0 Hz vsync, 45.6 kHz hsync, ratio 16/9, 118 dpi)
    ModeLine "1600x900" 106 1600 1664 1706 2324 900 903 906 912 -hsync -vsync
As it can be seen, monitor-get-edid obtains EDID information and dumps it on standard output while monitor-parse-edid reads data from standard input and produces formatted output on standard output.

Modelines produced are used to tell X server how to configure and control monitor. These were used to be defined in /etc/X11/Xorg.conf (or before that in /etc/X11/XF86Config before that). In those days the whole ingenuity of setting up graphical interface was to guess those modeline lines. Modern X Server do that automatically, so in majority of cases users don't see those. But, sometimes things don't work as expected and they have to get their hands dirty.

Ok, I tried this tool on W500, too. This is what I got:
# monitor-edid
mmap /dev/mem: Permission denied
EISA ID: IBM2887
EDID version: 1.3
EDID extension blocks: 0
Screen size: 33.1 cm x 20.7 cm (15.37 inches, aspect ratio 16/10 = 1.60)
Gamma: 2.2
Digital signal

    # Monitor preferred modeline (60.0 Hz vsync, 63.9 kHz hsync, ratio 16/10, 128 dpi)
    ModeLine "1680x1050" 120.6 1680 1712 1760 1888 1050 1051 1054 1065 -hsync -vsync

    # Monitor supported modeline (50.0 Hz vsync, 53.2 kHz hsync, ratio 16/10, 128 dpi)
    ModeLine "1680x1050" 100.53 1680 1712 1760 1888 1050 1051 1054 1065 -hsync -vsync
Note that command monitor-edid reads and parses data in one go, so it is not necessary to separately specify those commands.

I was curious so I also run those tools inside VMWare Workstation but I didn't get enything useful.

The way this information is obtained from monitor is by using I2C interface and EDID data structure. This structure can be read even if the monitor itself is turned off.

Additionally, the information about monitor can also be obtained using xrandr tool. Here is what I get on W510:
$ xrandr
Screen 0: minimum 320 x 200, current 1600 x 900, maximum 8192 x 8192
LVDS-1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1600x900       60.2*+   50.0 
   1152x864       60.0 
   1024x768       59.9 
   800x600        59.9 
   640x480        59.4 
   720x400        59.6 
   640x400        60.0 
   640x350        59.8 
VGA-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
What can be seen is that currently used monitor is attached to LVDS-1 (which is laptop's integrated LCD) and that it is running with the resolution 1600x9000 and 60.2Hz refresh rate. Also are listed other supported modes. Finally, all the other connectors don't have anything connected to them.

Again, output from W510 is:
# xrandr
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
LVDS2 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
   1680x1050      60.0*+   60.0     59.9     50.0
   1400x1050      60.0     59.9
   1280x1024      60.0
   1440x900       59.9     59.9
   1280x960       60.0
   1360x768       60.0
   1280x800       59.8     59.9
   1280x768       59.9     60.0
   1024x768       60.0
   800x600        60.3     56.2
   848x480        60.0
   640x480        59.9
VGA2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
xrandr by itself is very interesting and capable tool. For example, once it happened to me that I started a game that uses SDL which switched to a lower resolution while in full screen mode. Well, the problem was that the application didn't end regularly, but it crashed and left me with unusable resolution. I used xrandr to set correct resolution. This was the command line I used:
xrandr --output LVDS-1 --auto
Note the argument of output option. It is the one reported by xrandr without any arguments.

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.

Tuesday, September 4, 2012

IT as a complex system...

In 2011. I wrote a small position paper in which I argued that IT (or ICT if you wish to be trendy) systems are complex systems. That paper is a consequence of risk assessment process I had to do and it summarized what I was thinking about risk analysis at that time. Then, as well as now, I firmly believe that risk analysis, as it is currently done, isn't a right way to go to achieve security of IT. Too many possibilities, too subjective, too dependent on specific situation and environment, too slow, no way of testing it, not to mention measuring how good it is, etc. Just to be clear, it is not that I'm for abolition of risk assessment, because currently it is the only thing we have, but I strongly believe that we should and could much better.

This post updates on the paper. I decided not to write a new version, but to add to it using blog.

First, let me say that in the paper I missed one important component, people. People are very important part of IT systems that is strongly intervened with it, as users, administrators, even attackers. In general, any person that comes into connection with the system, is part of it. I tinkered with that thought for some time now, but after I watched Igor Nikolic's talk on TEDxRotterdam, I was certain. So, based on that I can very confidently claim that IT system is a complex system. Now, this can look like I invented a hot water as there is a long known fact that people are the weakest link in the security. But, despite this fact people and technology we treated, and are treated, separately. Not only they are treated separately, but even specific persons and components of IT are treated separately (as in risk assessment process).

I'll also mention two references that I think are related and important for this topic. The first one is Complexity and Emergent Behaviour in ICT Systems. That one was written in 2004. and it beat me for 8 years. :( Ah, well, I suppose I should have done research a bit more thoroughly. But then, after reading it,it doesn't seem to me that there is overlap between what I'm claiming and what they do. Nor we are talking about the same things. They are definitely talking about complexity of ICT systems, but for them, ICT systems are large scale systems. I haven't had impression that they are talking about information systems of companies. Well, overlap could happen if we are talking about large enterprises, but I'm talking about information systems of all sizes. They talk a lot about complex systems in general, and they also survey research about complex systems in general.


The second reference is analysis of supposedly emergent phenomena on the Internet: Internet Failures: an Emergent Sea of Complex Systems and Critical Design Errors?. This one is interesting because it dissects whether certain perceived behavior is or is not emergent behavior. I agree with the conclusions of that paper. Especially about failure of root DNS not being emergent behavior. :)

About Me

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

Blog Archive