Saturday, November 26, 2011

Kuidas saada häkkeriks



Ma polnud Eric S.Raymond-i artikklit "Hacker-HOWTO" varem lugenud ja väga hea, sest see oli minu jaoks pisut mõttetu ja ärrtiav. Loodan, et kellelgi on sellest kirjutisest rohkem abi, kui minul.

Pärast artikli lugemist seadsin sammud oma CD arhiivi ja koukisin välja CD, mille peale olin kunagi kirjutanud mõned huvitavamad Fido- ja USENET-i gruppidest saadud lood. Nimelt meenutas Eric S. Raymondi kirjutis ühte varasemat lugu, mis ilmus tegelikult 1983 aastast  "Real Programmer Don't Use Pascal", mis omakorda oli ajendatud mõned kuud varem Usenetis ilmunud Ed Nather-i loost "The Story of Mel, a Real Programmer". Õnneks avastasin, et need on nüüd ka internetis olemas, kuigi algsete  tekstide kujundus ei olnud nii kena kui tänastel interneti tekstidel. Aga tundub, et igal ajastul on omad friigid ja fännid.

Ma ei saa Ericuga päris nõustuda, selles osas milles ta soovitab häkkeriks saamist alustada mõne keele õppimisest. Kui keegi tahab tõesti arvutite maailmas kompetentne olla, siis esiemese asjana tuleks selgeks teha, et arvutid töötavad kahendsüsteemis ja see on väga oluline nii oma heade kui halbade omadustega. Selle fakti ehk n.ö. arvuti sisemise hingeelu mittetundmine on paraku ka mitmete oluliste vigade allikaks. Edasi ei teeks paha ka veidi 16-nd süsteemi tunda.       

Üldiselt meelib mulle häkkerite klubist oluliselt enam "Software Craftsmanship"-i järgijad. Ma arvan, et vastupidiselt Eric-u väitele, see häkkerite aeg ikkagi saab mööda ja tuleb meistrite aeg. Tegelikult ma ei ole päris kindel kas seda häkkerite värki on kunagi ikka olnudki, äkki ongi lihtsalt mingi sildi külge kleepimine.

Tõeline programmeerija ei pea endale silte külge riputama a'la ma olen häkker. Ma ei pea ennast häkkeriks, kuigi olen parandanud SCO Unix-i socket-i all istuvas loop driveris vea ja kerneli ringi kompileerinud.  Loomulikult teavitasin ka Santa Klutsi sellest! See on ju normaalne!  OK, SCO oli kommertsvara ja Eric-u järgi töötavad häkkerid vaba tarkvaraga.

Olen kirjutanud COBOL'i kompilaatori, mis läbis kõik ANSI COBOL-85 testid. Olen kasutanud assemblerit s.h. ka spetsiifilisi math-co prose käske, võimaldamaks  kasutada arvudes 18 kümmendkohta ja seda täpselt, ilma ümardamise kadudeta, sest millegipärast tavalised keeled ei suuda seda teha. (v.a. Java BigDecimal aga see töötab veidi teisiti).

Autor väidab, et häkkerid on inimesed, kes tunnevad rõõmu erinevate raskete probleemide lahendamisest. Näiteks keeruliste probleemide osas ma austan väga Donald E Knuthi, kes kirjutas raamatu sarja "The Art of Computer Programming" ja kes ilmselt tundis  samuti rõõmu probleemide lahendamisest, kuid seal ei ole kordagi mainitud häkkereid.

Unix-is kasutan tihti vi-d, sest see töötab alati ning kõigis Unix-ites ühtemoodi!  Microsofti-i maailmas kasutan ma tänaseni vahel northon-commanderi hex-view-d, sest millegipärast tänastel tekstiredaktoritel on komme neelata ära mõned esimesed faili formaadi kohta infot andvad baidid.

Aga kõik see ei tee mind häkkeriks ja ma ei tunne selleks ka mingi vajadust. Autor väidab, et häkkeriks saamiseks peaksid oskama Pythonit ja siis C'd ja siis Java't. Mnajh, ma Pythonit ei oska aga oskan nii C-d kui Java-t ja HTML-i  ja veel selliseid unustuse hõlma vajunud keeli nagu  Pascal, COBOL, FORTRAN ja veidi ka PL/I-i. Kusjuures minu kõige esimene programm oli keeles MALGOL, mis on ALGOL-i eesti variant (oli vist arvutile Minsk). Kuid MALGOL-i  puhul puudus mul kahjuks arvuti, mille peal seda programmi jooksutada aga vähemasti paberi peal oli see kirja pandud.

Ega ma ikka ei ole häkker ja kui, siis võib olla vaid algaja, sest töötan täiskohaga firmale kuna vajan pere ülalpidamiseks sissetulekut. Ühtlasi jätab nii see kui ka kool mulle liialt vähe aega, et liituda ja aktiivselt tegeleda vaba tarkvara projektidega. Pigem tarbin neid, ning uurin ja puurin ja muudan asju enda jaoks. Samas on võimalik, et ükspäev tekkib ka miski võimalus midagi vaba tarkvara ühiskonnale tagasi anda. Vähemasti juba mõnda aega on selline mõte peast läbi käinud, et võiks ühe teatava projektiga liituda.

Jah, aga kui ma liitun selle vaba tarkvara projektiga ja õpin ka Pythoni selgeks, kas siis öeldakse, et olen häkker?!  See on ju mõttetu silt ja mulle tundub, et see nn. häkker ei ole miski omakasupüüdmatu tüüp vaid tahab oma tegevuse abil ikkagi ühiskonnas mingit häkkeri või tipphäkkeri positsiooni saada. Vähemasti nii pasitab see Ericu kirjutisest välja. Aga samas tahavad ju ka kräkkerid ühiskonnas võimu näidata, et näe suutisn midagi lahti muukida.

Monday, November 21, 2011

Tarkvara litsentsid

Eelmine nädal sattus minu kätte üks uus vidin - Android operatsiooni süsteemiga tahvelarvuti. Erinevalt Windows-i platvormist, ei lajatata Andoridi puhul esimeseks asjaks ekraaanile litsentse, kuid kuna nädala teema on litsentsid, siis hakkasin uurima, kus ja kuidas Androidi litsentsidega asjalood on. See oli seda olulisem, et kuna sellel isendil puudus Eesti klaviatuuri tugi ja otustasin OS-i lahti muukida ja klaveri koode nii häkkida, et saaksin rootsi klaviatuuri variandile lisada Õ ja Ü tähed.

Setup menüüst leidisin pealkirja "Legal information" ja seal all ilusti ka kõik litsentsid:
  • General Source code offer
  • Open source licences
  • Google legal
  • GeoNames. 
General Source code offer teatab, et toode sisaldab kaitstud tarkvara, mis on kaetud GPL-ga, LGPL versiooni (GPL ja/või Free Open Source Sftware Licences).

Lugesin seda ja sain teada, et loomulikult jagatakse tarkvara ja ei võeta mingit vastutust selle üle, et tarkvara ka kohalikke seadustega lubatud oleks.  Lisatud on ka, et litsents seob mind lähtekoodiga ja muude andmetega ning  neid võib saada ja alla laadida toote tugiteenuste kodulehelt 3 aastat pärast toote mudeli viimast väljalaset. Lahe !   

Lähtekoodi jagatakse ka ilma, et võetaks mingit vastutust ja see on sama litsentsi alla nagu binaar- ja objektkood.

Opne source liceneces menüü all oli ka iga süsteemse faili litsents toodud. Neid oli seal tohutul hulgal - ma arvan, et kokku üle 300 lehekülje ! 

Kernel oli muidugi GPL litsentsiga aga peamised muud vidinad olid kõik Apacahe 2.0 litsentsid ja  täiesti ühesugused. Arvatavasti on erienvuste ja väikeste kirjade ülesse leidmideks vaja mingit teksti masintöötlust!

Ühesünaga ei võeta mingit  vastutust ja kuna mind huvitava klaviatuuri failide kood on vaba, siis asusin häkkima. Loomulikult on OP süsteemi andmete muutmiseks vaja superuser-i kontot, mida paraku tootja mulle kaasa ei andnud. Kood on vaba ja tavaksutaja alt loetav aga kirjutamise ja muutmise võimlaus puudub. Seega esimene asi ole see superuser konto lahti häkkida. See läks hästi ja nüüd ongi mul ka eesti klaviatuur olemas.
 

Ahjaa, vaatasin üle ka 9 google-i litsentsi (teenus, andoid teenus, privaatsus, YouTube, kaardid, Android-i marketi teenuse ja äriteenuse ning DMCA). Viimasest menüüst selgus ka, et info GeoNames-st on kaetud Creative common Attribution 3.0 litsentsiga. 



Saturday, November 12, 2011

Paragrahvi-papi ja Interneti-põnn



Selle nädala loengu materiale lugedes meenus,  kuidas 90-ndate keskel tegelesin tarkvara arendamisega, mille tellijaks oli Kanada ettevõtte. Teatavasti on ekspordi käibemaksu määr null protsenti ja seega on ettevõttel võimalik maksuametilt tagasi saada enammakstud käibemaks, mis tekkis meil ruumide üürist ja seadmete soetamisest. Kuid tollel ajal tekkis tõsine probleem ekspordi tõendamisega, sest maksuamet käsitles tarkvara kui kaupa ning nõudis tollidokumente. Meie aga laadisime tarkvara üles üle Interneti ja kahjuks ei suutnud Internet mulle vormistada vajalikke  tollidokumente. Tolleaegne käibemaksu seadus ei sisaldanud veel punkte elektrooniliselt edastatava tarkvara kohta, ning maksuametnikud soovitasid selguse mõttes kirjutada kogu tarkvara floppide peale ja siis need floppid tollist läbi vormistada. KPMG abiga sai see asi siiski korda aetud ja nad kirjutasid maksuametile ka vastava selgituse, kuidas  tarkvara elektrooniline edastamine on vaadeldav, kui teenuse eksport. Tänases käibemaksu seaduses on õnneks selle kohta ka juba vastav punkt §2 lg 4 p 4.

Toodud näide ei ole küll seotud intellektuaalse omandi kaitsega, mis on nädala põhiteema, kuid sellegipoolest näitab hästi, kuidas Interneti ja paragrahvidega võivad asjad aegajalt sassis olla, ning seaduseloome ei jõua kuidagi tehnoloogia arengule järgi.

Mis puutub minu hinnagusse intellektuaalse omandi ja autorikaitsesse, siis see on igati tore, et ühiskond püüab "õnnetuid" autoried seadustega kaitsta. Kuid tulemus ei ole alati see, mida soovitakse saavutada. Esmalt on kõigi seaduste hulk nii suureks paisunud, et tavalisel inimesel ei ole võimalik ilma juristi abita seal orienteeruda ja kuna seaduse mittetundmine ei vabasta vastutusest siis teenivad juristid nende seaduste pealt kena pappi. Ja keda üldse usaldada, sest vahel võib sinu palgatud jurist kasutada ära ka sinu teadmatust seaduste osas ja vaikselt ka midagi enda kasuks keerata. Ise püüan neid juriste mitte kasutada ja ikkagi mõned olulisemad seadused endale selgeks teha ning ennem allkirjutamist lepingu läbi lugeda ja ka väikest teksti otsida. See võtab kõvasti aega aga siiani on mul hästi läinud ja mingit jama ei ole kaela saanud. Ega see lugemine suurt ei aita, sest sellele järgneb tüüpiliselt valik tüübist "võta või jäta".        

Teiselt poolt on võimalik mõningate leppingutega või nende lisadega suuremast osast oma õigustest kenasti kellegi teise kasuks loobuda.  Sisuliselt, kui töötad mingile ettevõttele, siis koos töölepingu või mõne selle lisa alusel loobud sa üldjuhul oma õigustest selle ettevõtte kasuks. Need lepingud on igati korrektsed aga teevad võimatuks või üliraskeks oma loomingu kasutamise mingil teisel eesmärgil või väljaspool ettevõtet.  Jah meil on vabadus sellele lepingule mitte alla kirjutada aga siis pead otsima ka mõne teise töökoha. On ju olemas võimalus ka vaba tarkvara maailmas leiba teenida aga minu jaoks hetkel, kus mul on pere toita ja panga laen maksta ei julge sellist riski võtta.

Sunday, November 6, 2011

Vaba tarkvara

Nädala teemaks on kirjeldada oma kogemusi mõne vaba tarkavaratootega. Ei oksa kommenteerida kas siin mõeldi kogemusi mõne FSF-i (Free Software Foundtion) litsentsi tootega või laiemas kontekstis tasuta jagatavat tarkvara seal hulgas ka avatud lähtekoodiga tarkvara, mida toetab OSI. Aegajalt on üsna raske aru saada kas tegemist on vaba tarkvara või avatud lähtekoodiga tarkvaraga ja kas tavakasutaja jaoks ongi seal suurt  vahet - peaasi, et maksma ei peaks. 

Ka paljudest EULA'dest on keeruline aru saada millega on tegemist, sest tihti on rõhutatud nii vaba lähtekoodi, kui ka tasuta jagatavat tarkvara. Populaarsest Ubuntu  distributsiooni litsentsist võiks välja lugeda, et tegemist on avatud lähtekoodi ja vaba tarkvaraga, kuid FSF-i poolt loetletud nimekirja Ubuntu-t siiski ei arvata (vaata  linki). Kuna litsentsid on järgmise nädala teemaks, siis hetkel ei laskuks rohkem detailidesse ja jagaks kogemust n.ö. lihtsalt tasuta jagatava tarkvara osas.

Olles tööalaselt palju Unix-i maailmaga kokku puutunud otsustasin 2000.a. ka koju installeerida esimese tasuta jagatava Linux-.i - Mandrake 7.  siinkohal peab lisama, et täna on Mandrake-i nimi muudetud Mandriva-ks. Minu jaoks oli see üsna sobiv lahendus, kuna võimaldas mul aegajalt ka kodus tööasju teha ja mõne Unix-i skripti vms. kallal nokitseda. Mandrake-is sai kasutada ka StarOffice-t ja NetscapeNavigatorit, samas oli näiteks StarOffice-i kasutamine ikka  suhteliselt ebamugav ning seal loodud dokumente sai kasutada sisuliselt vaid enda tarbeks. Tuleb märkida, et see op-süsteem oli ka paras peavalu teistele pereliikmetele, ja mingi aeg hiljem pöördusin tagasi siiski MicroSofti platvormile. Osaliselt aitas siin kaasa, ka MS-i litsentsi poliitika, sest uue arvutiga tuli kaasa ka Windows, koos OEM litsentsiga.
Mõni aega hiljem sai siiski tagasi pöördutud Linuxi maailma ja seekord juba Ubuntu ning OpenOffice-i baasil. OpenOffice-i funktsionaalsus ja kasutus mugavus on oluliselt paranenud, samuti on viimastes OO versioonides lisandunud konverteerimise võimalusi, kuid paaku annab ikka tunda OO vähene kasutus ja konverteerimine word-i ei õnnestu alati 100%. Ühes foorumi postituses kirjeldasin ka oma kogemusi OpenOffice-ga ja põhjendasin ka miks tänases ammilmas ei saa elada ilma, et MS tarkvara kasutataks. 

Windows-i üheks eeliseks on peetud igasugu installeerimise protseduuride lihtsust. Mingi aeg tagasi olin sellega ka nõus, sest Linux-i keskkonnas oli vaja ikkagi päris head op-süsteemi tundmist ja minigi tarkvara installeerimine eeldas konfiguratsiooni seadistamist. Paraku tähendas see vahel ka töötamist editoriga vi. Ise kasutan seda siiani aga tean paljusid arendajaid, kes seda teksti redaktorit tõsistel vihkavad.
Siin on Ubuntu tegelikult MS-le järgi jõudnud ja väga paljud installid on tehtavad Synopticuga nii, et kasutaja ei pea midagi teadma shellist. Veidi keerulisemate juhtude jaoks on kogukonnad valmistanud ka head skriptid nii, et tavakasutajal on võimalik teha copy-paste ja muuta conf-i ilma, et  peaks aru saama, mida need shelli read tähendavad. Vähe riskantne ju on, aga töötab ja samas ega enamik Windows-i kasutajatest ei mõista ka Windows-i registry-s olevate kirjete tähendust.