Szerteszana²

grin agymenései

Internet cenzúra magyarmódra

2013-11-20 10:07:01 írta grin
Harmadjára kellene valakinek „közönséges szavakkal” elmagyaráznom, hát inkább akkor leírnám, ide.

A történet Magyarország internet cenzúrjának születéséről és mibenlétéről szól, igyekszem hivatkozni az érintett információkat. Ha valamit jól írok az a véletlen műve, minden hiba a sajátom, és ezen írás személyes véleményem tükrözi, valamint – Bokononnal szólván – mindazon igaz dolgok melyekről most beszélni fogok neked szemenszedett hazugságok.

A jogi környezet
A dolog 2012. június 25-én fogant, amikoris Pártunk és Kormányunk megalkotta a méltán rosszhírű új Büntető Törvénykönyvet (Btk.),melynek 77. §-a a jól hangzó „Az elektronikus adat végleges hozzáférhetetlenné tétele” címet viseli. A szakasz mindössze annyit mond, hogy az elektronikus hírközlő hálózaton (ilyen az internet mellett amúgy a tévé, a telefon is) elérhetetlenné kell tenni azt az adatot, aminek bűncselekményhez van köze. Bűncselekmény minden, amit a BTK büntetni rendel, ugye, és erről egyszer már írtam egy szép hosszú listát, amit persze most nem találok; a lényeg, hogy számtalan olyan tétel van ami masszív visszaélésre ad okot.

Hogyan? Vegyünk egy fiktív példát. A Háromszög Párt uralkodik, és a nemhomalyos.hu oknyomozó portál megírja, hogy a Háromszög vezetője hatvanmilliárd forintot játszott át haverjának hamis közúttendereken, és hogy hazudott akkor amikor ezt tagadta. A Háromszög Vezére feljelenti a nemhomalyost rágalmazásért, illetve becsületsértésért. (Hogy miért van ilyen a büntetőtörvénykönyvben a Ptk. helyett? Jó a kérdés!) A független bíróság pillanatnyi elmezavarában megelőző intézkedésként elrendeli az érintett vélt bűncselekménnyel kapcsolatos adatok hozzáférhetetlenné tételét, vagyis a nemhomalyos.hu domaint. Minimum a fellebbezési periódusban, de Háromszögközeli esetben évekig, míg az eljárás folyik a portál elérhetetlen lesz, így reklám- vagy egyéb bevételek híján üzemeltetői tönkre mennek. Onnantól mindegy, hogy a vád hamis volt, pláne, hogy addig is sikerült elhalgattatni valakit aki a disznóságokat publikálja.

Természetesen nagyon sok egyéb fiktív példát lehetne hozni a politika témaköréből, de inkább egy másik fiktív példát említek: a Btk XXXVII. fejezete szól a képzeletbeli tulajdonokról, mint amilyen a szerzői és kapcsolódó jogok megsértése illetve a „védelmet biztosító műszaki intézkedés kijátszása”; gondoljunk az ebben rejlő hatalmas potenciálra, amikor egy nagy jogdíjcég feljelent 50000 embert mert hátha van aki megsértett valamit (ez a fiktív példa 3 éves) vagy feljelent valakit olyan műszaki kijátszásért ami nem is szerzői jogokhoz kapcsolódik. Majd egyszer az eljárás végén lehet bizonyítani hogy hamis volt a vád, addig viszlát weblap, mail cím, akármi.

De kicsit előre szaladtam, a Btk-ról lendüljünk át a Büntetőeljárásokról szóló törvény (Be.) VIII. címéhez, ami a hangzatos és nagybetűs „SZÁMÍTÁSTECHNIKAI RENDSZER ÚTJÁN RÖGZÍTETT ADATOK MEGŐRZÉSÉRE KÖTELEZÉS ÉS ELEKTRONIKUS HÍRKÖZLŐ HÁLÓZAT ÚTJÁN KÖZZÉTETT ADATOK IDEIGLENES HOZZÁFÉRHETETLENNÉ TÉTELE” címet viseli. A 158/B.-D. § fejtegeti azt, hogy ideiglenesen akkor tüntethető el valami ha olyan bűncselekménnyel kapcsolatos ahol lehetséges kimenetel az adatok végleges hozzáférhetetlenné tétele (szinte bármi ami internettel kapcsolatba hozható, a nemzeti jelkép megsértésétől a becsületsértésig); ezt a bíróság rendeli el, és az ideiglenes tiltás megszűnik a nyomozás megszüntetésével (kivéve a kivételeket).
Ezen a ponton emelném ki azt a tréfás kitételt miszerint a szolgáltató, aki nem távolítja el megfelelően (ez különösképp a potenciálisan analfabéta bírói ítéletek esetében izgalmas, amikor a bíró nem informatikus és az ítélet megfogalmazásához nem vesz igénybe szarértői segítséget) (mind slip) az százezertől egymillió forintig büntethető. Ismételhetően. Naponta?

Fontos látni az elérhetetlenné tétel és a hozzáférhetetlenné tétel közötti különbséget: az előbbi azt jelenti hogy beszólnak az anyagot tároló szolgáltatónak hogy büdösgyorsan szedje le a cuccot mert kimennek a ballonkabátosok reggel hat és 24 óra között, míg az utóbbi azt jelenti hogy az egész világ internetes infrastruktúra üzemeltetőit utasítják arra, hogy az adott tartalomhoz akadályozzák meg a hozzáférést. Mivel Magyarország a világ közepe így értelemszerűen ez csak belföldre vonatkozik (mert ki nem szarja le egy félbalkáni kis ország kiabálását).

De a Be. még rendelkezik természetesen a végleges elérhetetlenné tételről, és ezzel értünk el az igazán izgalmas részhez. Előtte egy kis történelmi áttekintés, röviden. A Magyar Kormány folyamatosan hülyét csinálván magából (ezt folyamatos igeidővel kellene fogalmaznom, ha tudna ilyent szép anyanyelvünk) szélmalomharcol a kuruc.info nevű szélsőjobboldali (talán neonáci, nem értek én ehhez) portállal, mely portál vegyesen ötvözi a ultrajobbos zsidózást-cigányozást, a gátlástalan személyes adatokkal való visszaélést és a fennálló államhatalomra vonatkozó kínos anyagok publikálását. A témában már többször csináltak segget a szájukból amikor nagy hanggal „letiltották” majd az 13 perc múlva újra megjelent. Az oka persze az, hogy az üzemeltetők nem hülyék vagy politikusok (de most látom, ismétlem önmagam), hiszen egyrészt a site külföldön van, több serveren, proxyzva, meg a jó ég tudja hol, és még akkor nem is ment a felhőbe, ahol aztán tényleg izgi lesz kergetni. Bár szélsőjobbos portálból van mintegy hatcsillió, és a többi sem kevésbé NER konform, de mindenkori Vezéreink mégis ezt a szerencsétlent szúrták ki, és ezen fixa ideájuk olyan szintre ette be magát agyukba hogy megalkották a „Lex-kurucinfot”, sőt, ennek egész rendszerét, mely alkalmas lenne arra, hogy ezt a portált betiltásával mintegy másfél órára megbénítsák. Az igazi folyamat persze vélhetően nem ez lesz, hanem hogy az egész szervezet (és annak több száz fizetett dolgozója) onnantól naponta azzal foglalkozik hogy az újabb és újabb trükkökre újab és újabb letiltásokat eszeljen ki, amivel múlhatatlan örömöt okoznak az egész magyar internetes infrastruktúrának. Tehát lex-kurucinfó, vissza a Be. 596/A szakaszhoz mely a végleges megakadályozásról szól.

Értelemszerűen a bíróság az ítéletben határoz így, ha úgy ítéli meg hogy az anyagok eltávolítása nem elégséges, és fenntartja az ideiglenes korlátozást. Vagy ha a szolgáltató dafke kifizeti a napi egymilió forintot. Vagy ha gyerekpornó (Btk. 204.§) érintett (na, így, egy pont alpontjában azért csak szerepel az, amivel ezt az egészet indokolni szokták, meglátjuk majd hogy milyen arányban fogják ezt a fajta tiltást alkalmazni). Vagy, és persze ez itt a bölcs jogalkotónk számára a lényeg: „az elektronikus adat végleges hozzáférhetetlenné tételére vonatkozóan a külföldi hatóság jogsegély iránti megkeresése a megkeresés kibocsátásától számított harminc napon belül nem vezetett eredményre.”. Teccik érteni, ugye.
Szintén eltekintenék most a kurucoktól és egy másik fiktív példát hoznék: egy fiktív szervezet összeállít egy listát arról, hogy mely egészségügyi intézmény mely orvosa milyen hálapénzt (mely, emeljük ki, a korrupció egy formája) követel meg betegeitől, ezt a listát letiltatják magyarországon mert becsületsért, vagy rágalmaz, vagy nincs rajta sapka (persze, próbáld bizonyítani hogy Viktor barátod elmeamputációjért 250.000-et kellett leperkálnod, különben a heréit is eltávolítják), és a listát kiviszi Áááámerikába, ahol más struktúrájú a szólászabadság, és ott nem ütközik törvénybe. A Magyarok írnak az amcsiknak hogy szedessék le, az amcsik közlik hogy nincs bűncselekmény; a megkeresés így nem vezetett eredményre, mehet a tűzoltófejsze. (Szar fiktív példáim vannak, picit úgy érzem.)

Csak a teljesség kedvéért említem a Szerencsejátéktörvényt, ahol szintén elérhetetlenné teszik a tartalmat tiltott szerencsejáték esetén, de itt csavarként nem a bíróság hanem az adóhivatal. Itt érdekes mozzanat az hogy az apehnav publikálja ezen oldalakat (36/J.§). Fiktív példákkal most nem fárasztok senkit, mint amilyen a „melyik politikus fog lopni holnap” szavazások, satöbbi.

Az ügymenetről az elektronikus hírközlésről szóló törvény (Eht.) szól, konkrétan a 92/A. § mondja hogy ha a szolgáltató 1 napon belül nem cenzúrázza a kérdéses adatot akkor a bíróság bírsággal, a hatóság büntetéssel megcsillagja. Amúgy a szolgáltató köteles az arra téblábolókat a határozat számával megköldeni, indoklásképp. A 159/B. § írja le hogy az NMHH milyen módon asszisztál a cenzúrázás végrehajtásában; itt adja meg a KEHTA (központi elektronikus hozzáférhetetlenné tételi határozatok adatbázisa) lérehozását és azt, hogy az NMHH igyekszik szűrőt képezni az értelmetlen bírósági határozatok tekintetében (kívánjunk nekik ehhez jó egészséget). A 159/C. § kötelezi a szolgáltatókat arra, hogy a KEHTA számukra kitúrt adatait lekezeljék, illetve hogy az NMHH ajánlástokat adhat a szolgálatóknak hogy hogyan legyenek ők is NER konformak.

Természetesen az, hogy a törvény ajánlást tesz lehetővé nem akadályozhat meg egy igazán Nemzeti hivatalt abban, hogy ajánlás helyett mellett rendeletet is alkosson (elvégre az NMHH azért kapott rendeletalkotási jogot, hogy éljen vele, a rézangyalát!), így szülték meg a 19/2013. NMHH rendeletet, melyet parasztos egyszerűséggel csak „az egyszerű adatátvitelt és hozzáférést biztosító elektronikus hírközlési szolgáltatók és a kereső- és gyorsítótár-szolgáltatók központi elektronikus hozzáférhetetlenné tételi határozatok adatbázisához való kapcsolódásának és a Nemzeti Média- és Hírközlési Hatósággal való elektronikus kapcsolattartásának szabályairól”-nak neveztek el. Ebben olyanok vannak mint „a továbbiakban: KEHTA) a Hatóság által üzemeltetett nem hatósági nyilvántartás” (érted, egy adatbázis amiben a hatóság nyilvántartja a tiltott dolgokat az nem hatósági nyilvántartás; jahogy akkor nem kell nyilvánosságra hozni, jahogy). Amúgy meg semmi azon túl, hogy a szolgáltatót egy adatkapun értesítgetik.

Mit jelent ez?
A cenzúra infrastrukúrájának kiépítését. A Kínai Nagy Tűzfal után a Magyar Nagy Tűzfalat. A Szabad Internet helyett a Nemzeti Konform Internetet. Az emigrált Havassy Eduárdot aki Timbuktuba menekülve meri csak elmesélni hogy hol és mit hallgatózik a Vezérkar.

A probléma ott kezdődik, hogy megbízunk-e abban, hogy az ideiglenes elérhetetlenné tételt jogszerűen fogják-e alkalmazni, vagy egy módszer lesz a kellemetlen hangok elnémítására? Ez eddig is így volt, erre eddig is megvolt a lehetőség, még ha nem is ilyen mértékben. Itt sok változás nincs: a hatalom szól a szolgáltatónak, hogy az törölje a tartalmat, és lemeccselik.

A következő és igen jelentős probléma azonban a hozzáférhetetlenné tétel intézménye, ami szerint amennyiben nem sikerül a tartalmat leszedetni akkor kötelezik az összes magyar internet kapcsolati szolgáltatót (vagyis azokat, akik internet kapcsolatot biztosítanak ügyfeleknek vagy más szolgáltatóknak) hogy ne tegyék lehetővé az adott tartalom elérését: ennek eredménye az, hogy bár az eredeti tartalom eltávolítása nem történt meg (akármilyen okból, például mert a magyar hatóságok kérését egy külföldi hatóság törvénytelennek tartja) az a világon mindenütt elérhető kivéve Magyarországot. A másik probléma természetesen a tiltás műszaki oldala: az internet alapvetően szabadságra épül, ezért nagyon nehéz rajta ilyen cenzúrát létre hozni: az IP címek változhatnak, a domainek változhatnak, a szolgáltatók változhatnak. Emiatt a cenzoroknak egyre durvább módon kell beleavatkozniuk a hálózati struktúrába. Fontos azt tudni, hogy az internet szolgáltatók normális esetben alapvetően az adatokat nem vizsgálják, csak továbbítják azt a forrástól a célig; ez részben a magánélet védelme miatt is így van de fő oka a hálózati eszközök által igényelt erőforrásokkal való gazdálkodás, végső soron az internet hozzáférés költsége, ami az árát meghatározza. A beavatkozás pedig például az, hogy a szolgáltatót vagy arra kötelezik, hogy minden egyes internet forgalmat ne csak továbbítson, de analizálja a tartalmát, hogy az megfelel-e a tiltásnak és ha igen, akkor az adott tartalmat tiltsa, sőt, meghatározott tájékoztatásra cserélje ki azt.

Alternatívaként a hatósg felajánlja a szolgáltatóknak, akiknek nincs esetleg több tíz- vagy százmilliójuk a beruházásra hogy „gratis” átveszik a szolgáltató forgalmát, és majd ők analizálják a tartalmát, és majd ami szűrendő azt szűrik meg kicserélik. Tehát az ügyfelek forgalma egy-az-egyben átkerülne a hatósághoz, aki majd visszaküldi a szolgáltatónak, miután átnézte azt.

Az élet egyik nagy igazsága: alkalom szüli a tolvajt. Egy másik: a gazság magakadályozásánál mindig jobb annak megelőzése. Ha bízunk a hivatalban és a kormányban sem szerencsés nekik átadni a privát forgalmat teljes analízisre.

Még szűrésre sem nagyon.

The quest for the perfect trim function in Perl

2013-10-17 10:49:39 írta grin
Guys will have been debating about whether there are gek girls or the causes behind the lack of them, and one of the point raised was the lack of will to pursue boring algorithmic questions. Funny that.

Oh, what I wanted to talk about was one of the most boring and simple and everyday things in programming: trimming the leading and trailing spaces from strings (remove them from the beginning and the end, that's it), and the Perl language.  At that point all non-programmers and people who cannot speak perl or regular expressions are relieved from duty, go and get some food.
For those that remained, you may well know that there is no "trim" in perl, you usualy either use a module (Text::Trim comes to mind) or actually regexp it yourself. Most people have their favourite.

But they may not be the best ones!

Perlmonks (who are the pros in everything in perl, most of the time) had their run at it several times, but I wasn't quite satisfied about the depth of the analysis. I need the perfect trim!

So ­ ­ - following the Monk mindset - I gathered a few ideas, among my usual one, and threw them in two testing modules, namely Benchmark and Test::More; first to see the speed and second to check corectness. Actually, it's been the other way around: first I have thrown out those which were buggy and benchmarked the rest.

So here are those who did not fail the tests:
    grin1   => '$str =~ s/^\s*(.*?)\s*$/$1/;',
    mre     => '$str =~ s/^\s*((?:.*\S)?)\s*$/$1/;',
    silly   => '$str =~ s/^\s+//; $str=reverse $str; $str =~ s/^\s+//; $str=reverse $str;',
    hellish => '$str =~ s/^\s*//; $str =~ s/\s*$//;',
    hellish2=> '$str =~ s/^\s+//; $str =~ s/\s+$//;',
    split   => '$str =~ s/^\s+|\s+$//g;',
    te_tri  => '$str =~ s/\A\s+//; $str =~ s/\s+\z//;',


First one was what I usually used, and the rest was advised in various places. The benchmark said:

       mre: 13.8181 wallclock secs (13.67 usr +  0.01 sys = 13.68 CPU) @  730994.15/s (n=10000000)
     grin1: 11.2415 wallclock secs (10.81 usr +  0.04 sys = 10.85 CPU) @  921658.99/s (n=10000000)
   hellish: 6.81456 wallclock secs ( 6.50 usr +  0.01 sys =  6.51 CPU) @ 1536098.31/s (n=10000000)
     silly: 4.13783 wallclock secs ( 4.14 usr +  0.00 sys =  4.14 CPU) @ 2415458.94/s (n=10000000)
  hellish2: 1.69636 wallclock secs ( 1.70 usr +  0.00 sys =  1.70 CPU) @ 5882352.94/s (n=10000000)
    te_tri: 1.70796 wallclock secs ( 1.70 usr +  0.00 sys =  1.70 CPU) @ 5882352.94/s (n=10000000)
     split: 1.03471 wallclock secs ( 1.04 usr +  0.00 sys =  1.04 CPU) @ 9615384.62/s (n=10000000)


which is quite an interesting result. My version was quite a good one until I have removed those which were slower AND buggy. Now not quite that fast anymore.

One important point: this is perl v5.18.1, and it seems that optimalisations in perl code matter.

Due to that may have happened the biggest surprise that hellish code was magnitudes slower than anything else due to many matching failures in matching the ending and now it ran quite good. The silly method gave fast results either which shows how slow the end matching still is.

But to my greatest surprise the winner was the split method using repeated matches, which was faster than the method used in Text::Trim module (which is using the fancy way of the fixed up hellish2 regexp pair), and not by a small margin but almost twice as fast. And, oh, ten times faster than my original. :-)

So now I know what to use. :-)

Memorable quotes

2013-09-13 09:21:37 írta grin
Saving from the evil bolgias of facebook.

The Bible teaches you to love - and the Kama Sutra explains how.

-- unknown



Two things to remember: 1) rules can be broken. 2) your nose, too.

-- grin

Mark's ribs

2013-08-10 12:44:19 írta grin
Not really the cannibalism thing, but close. :-) Thanks goes to Mark, the best chef I've ever had as a neighbour. (Technically he's the only contender, but anyway.)

Ribs
  • 2 tablesoons white wine vinegar (original 4 tbsp but I hate all kinds of vinegar and other rotten goo of living things)
  • 2 tbsp light soy sauce
  • 2 tbsp dry sherry (if you have it, unlike us)
  • 2 tbsp oil
  • 4 tbsp honey
  • 1 small tin tomato puree

for the sauce and

  • 1.5 kg pork ribs

Hunt and kill the pig, acquire the ribs, kill the soy beans and acquire the... etc. 

Chop the ribs between the bones (every part with a bone in the middle as a handle), put in a dish (with small oil) and in the oven for 45 minutes at 180 °C (no air circulation or whatsamacallit). 

Make the sauce by carefully mixing the ingredients. (Careful means you must not use sponges, knives, pencils and other mismatching items to mix. And don't drink it, apart from the sherry, at your option.)

After the 45 minutes you get the ribs, turn them and put the sauce on them. Put them back for more 45 minutes (start to watch around 30 and pull it if it's getting black and emitting smoke, depends on the meat, the size of the slices and the phase of the moon).

Eat. (I like it cold, too.)

(Original recipe contained "marinate the ribs in the sauce for a day" but experience showed no measurable difference. YMMV)

Panasonic GX1 firmware hack

2013-07-31 14:10:59 írta grin
Annak idején amikor a Canon Powershot kompakt fényképezőgépemre megtaláltam a CHDK firmware-t nem értettem: hogyan élhettem eddig nélküle? Millió igazi hackernek való mütyür, bracketing, túl- és alulexponálás jelzése, hisztogramok, és a legfontosabbak: mozgófilm felvételénél korlátlan idő, menet közbeni zoom, zoomsebesség és hasonlók. A gép előtt okos volt, utána csoda lett.

Az új gép – egy ideje – a Panasonic Lumix DMC-GX1 és nagyon elégedett vagyok vele. Ez egy MILC, vagyis nincs benne tükör vagy prizma és a fény közvetlenül a 16 megapixeles, 17.3×13 mm-es MOS szenzorra zúdul, amit a fenekén fénylő 3¨ 0.4 Mpx tűéles kijelzőn lehet bámulni (hacsak nincs pont full napfény, mert akkor mereszteni kell a szemet ha az ember nem izzadta ki az elektronikus viewfinder árát), de persze cserélhetős optikás (micro four thirds, ami a 35mm-hez képest kétszeres szorzóval számolandó), és az optikái állítólag egész jók.

Végülis nem erről akartam mesélni de nagyon szép képeket lehet vele csinálni anélkül, hogy 18 éves fényművészképzőn túl lenne az ember, az autofocus észrevehetetlenül gyors, meg maga a gép is (nincs tükörbillegtetés stb). Szeretem azóta is.

Annyi beállítást tud gyárilag hogy nem is fájt hogy nincs hackelt firmware, szinte mindent tud amit a Canonba hackelni kellett.

Egy dolog fájt, már persze elméletben, mert eddig nem futottam bele fizikailag: 29 perc 59 másodperces filmfelvétel, amikor a beletett kártyára ki tudja mennyi férne. Ez azért kell, hogy amikor európában eladják akkor ez fényképező legyen és ne kamera, és ne kelljen rá négycsilliárd forint büntetőadót fizetni. Belátható.

És ma véletlenül találkoztam a ptoollal, ami a Panasonic hackelt firmware-ek tárháza! Igazából nekem egy dolog volt fontos, és bizony, ott virított a fícsörök között: „remove 30 min movie limit”. És támogatja a GX1-et.
Innentől szinte fájdalommentesen ment minden: gyári firmware letölt japánból, ptool elindít (nyilván Wine alatt, vindózt értelmes ember nem használ), firmware betölt, 30perc kiklikkel, mentés, firmware kártyára, update, reboot. Kész.

Jelentem tisztelettel: 7 óra és 56 perc.

Yeee-haw! Apró örömök az életben. :-)

Szerteszana²

16

Szerteszana²

grin agymenései