Kuidas saada häkkeriks (Hacker-HOWTO)

How To Become A Hacker by Eric S. Raymond, Estonian translation by Kaido Kikkas

Ingliskeelne originaaldokument: How To Become A Hacker
Eric Steven Raymond, Thyrsus Enterprises, esr@thyrsus.com. Avaldatud autori nõusolekul.

Tõlkinud: Kaido Kikkas, kakk ätt kakupesa punkt net
Vastab originaali versioonile 1.52
Viimati muudetud 01.01.2021

Tõlkija märkus 06.04.22: tegemist on üsna pikaealise dokumendiga ning aeg-ajalt võivad mõned veebiviited lakata toimimast. Sel juhul on üheks võimaluseks vaadata seda dokumenti Veebi Ajamasina abil (valides mõne varasema kuupäeva).

Sisukord

Milleks see dokument?
Kes või mis on häkker?
Häkkerlik suhtumine
1. Maailm on täis imelisi probleeme, mis ootavad lahendamist
2. Ühtegi probleemi ei tuleks lahendada kaks korda
3. Igavus ja nüridus on kurjast
4. Vabadus on hea
5. Suhtumine ei asenda kompetentsi
Häkkeri põhioskused
1. Õpi programmeerima
2. Hangi üks avatud lähtekoodiga Unixitest ja õpi seda kasutama
3. Õpi kasutama veebi ja kirjutama HTMLi
4. Kui sa ei oska piisaval määral inglise keelt, õpi see ära
Staatus häkkerikultuuris
1. Kirjuta avatud lähtekoodiga tarkvara
2. Aita avatud lähtekoodiga tarkvara testida ja siluda
3. Avalda kasulikku teavet
4. Aita hooldada infrastruktuuri
5. Teeni häkkerikultuuri
Häkkerid ja nohikud
Stiilipunktid
Märkus ajaloo kohta: häkkimine, avatud lähtekood ja vaba tarkvara
Lisalugemist
Korduma Kippuvad Küsimused

Liugur

(Tõlkija märkus: Eric on selle dokumendi kirjutanud esimeses isikus ehk "mina"-vormis - seega tuleb tekstis esinevate mina-viidete all mõista autorit, mitte aga tõlkijat.)

Milleks see dokument?

Jargon File'i toimetaja ning veel paari samalaadse hästituntud dokumendi autorina saan ma tihti e-kirju entusiastlikelt värsketelt võrgukasutajatelt, kes küsivad midagi sellist, nagu "kuidas ma võiksin õppida tipphäkkeriks?" Kunagi 1996. aastal märkasin ma, et selle olulise küsimuse kohta polnud leida ühtki teist KKK-d või veebilehte, niisiis ma alustasin seda siin. Praeguseks peavad paljud häkkerid seda autoriteetseks dokumendiks - ma arvan, et ju ta siis seda on. Siiski ei pea ma end ainsaks autoriteediks sel teemal - kui sulle ei meeldi siinloetu, kirjuta ise uus.

Kui loed selle dokumendi koopiat väljaspool võrku, siis tasub teada, et värskeim versioon asub aadressil http://catb.org/~esr/faqs/hacker-howto.html.

Märkus: selle dokumendi lõpus on rida Korduma Kippuvaid Küsimusi. Palun loe need kaks korda läbi, enne kui mulle selle dokumendi kohta mõne küsimuse saadad.

See dokument on tõlgitud arvukatesse keeltesse (keelte järjestus on jäetud selliseks, nagu see on ingliskeelses originaalis - tõlkija märkus): araabia, valgevene, bulgaaria, hiina, tšehhi, taani, hollandi, eesti, prantsuse, saksa, kreeka, ungari, heebrea, itaalia, jaapani, leedu, norra, pärsia, poola, portugali (Brasiilia dialekt), rumeenia, hispaania, türgi ja rootsi keelde. Tähelepanuks: kuna see dokument aeg-ajalt muutub, võivad need olla eri määral aegunud.

Seda dokumenti kaunistav diagramm - viis punkti üheksal ruudul - on liugur. See on mõnede üllatavate omadustega lihtne kujund, mis pärineb matemaatilisest simulatsioonist nimega Elu (Life), mis on häkkereid ligi tõmmanud juba palju aastaid. Minu arvates on see sobiv visuaalne embleem tähistama seda, millised on häkkerid - abstraktse mõtlemisega, esmalt veidi müstilisena tunduvad, kuid samas avaneb sealtkaudu tee tervesse uude maailma, millel on oma keerukas sisemine loogika. Liuguri kohta võid lähemalt lugeda siit.

Kui see dokument sulle korda läheb, siis palun toeta mind Patreoni või LoadSharersi abil. Palju väikesi, ent pidevaid annetusi annavad kokku suurema summa ning võimaldavad neil, kelle töö vilja sa kasutad, luua veelgi enam.

Kes või mis on häkker?

Jargon File annab häkkeri kohta peotäie määratlusi, enamik neist mainivad tehnilisi oskusi ning armastust probleemide lahendamise ja piiride ületamise vastu. Kui sind aga huvitab, kuidas häkkeriks saada, siis on neist asjakohased vaid kaks.

On olemas üks tipp-programmeerijatest ja võrguässadest koosnev kogukond, jagatud kultuur, mis loeb oma ajaloo alguseks kümnenditetaguseid esimesi ajajaotussüsteemiga miniarvuteid ja varaseimaid ARPAneti katsetusi. Selle kultuuri liikmed võtsidki kasutusele termini "häkker". Häkkerid ehitasid Interneti. Häkkerid tegid Unixi operatsioonisüsteemist selle, mis ta on praegu. Häkkerid panid tööle veebi. Kui sa oled osa sellest kultuurist, oled sellesse andnud oma panuse ning teised selles olijad tunnevad sind ja nimetavad sind häkkeriks, siis oledki sa häkker.

Häkkeri mõtteviis ei ole piiratud vaid tarkvarahäkkeritega. On inimesi, kes rakendavad häkkerlikku suhtumist muudele asjadele, näiteks elektroonika või muusika - tegelikult võib seda kohata mistahes teaduse või kunsti kõrgeimatel tasemetel. Tarkvarahäkkerid tunnustavad neid mujal leiduvaid sugulashingi ja võivad ka neid häkkeriteks kutsuda - mõned väidavadki, et häkkeri loomus ei sõltu tegelikult sellest konkreetsest meediumist, millega häkker töötab. Siiski, edaspidi selles dokumendis keskendume ikkagi tarkvarahäkkerite oskustele ja suhtumistele, samuti tolle jagatud kultuuri traditsioonidele, mis võttis kasutusele termini "häkker".

On olemas ka üks teine rühm inimesi, kes nimetab end valjusti häkkeriteks, kuid kes pole seda mitte. Need on inimesed (peamiselt noorukid), kes tunnevad lõbu arvutitesse sissemurdmisest ja telefonisüsteemi torkimisest. Pärishäkkerid nimetavad neid inimesi "kräkkeriteks" ja ei taha nendega mingit tegemist teha. Pärishäkkerid peavad kräkkereid laiskadeks, vastutustundetuteks ja mitte eriti taibukateks ning väidavad, et arvuti turvasüsteemide muukimise oskus teeb kellestki häkkeri samavõrd vähe kui autoärandamise oskus teeb inimesest professionaalse autoinseneri. Õnnetuseks nimetavad paljud ajakirjanikud ja muud kirjutajad kräkkereid "häkkeriteks" - see on asi, mis võib pärishäkkereid lõputult ärritada.

Põhierinevus on selles: häkkerid teevad asju, kräkkerid lõhuvad neid.

Kui sa tahad saada häkkeriks, loe edasi. Kui tahad saada kräkkeriks, mine loe alt.2600 uudisegruppi ja valmistu ka mõneks ajaks pokrimaandumiseks, kui on selgunud, et sa polegi nii taibukas kui ise arvasid end olevat. Ja see on kõik, mida mul kräkkerite kohta öelda on.

Liugur

Häkkerlik suhtumine

1. Maailm on täis imelisi probleeme, mis ootavad lahendamist
2. Ühtegi probleemi ei tuleks lahendada kaks korda
3. Igavus ja nüridus on kurjast
4. Vabadus on hea
5. Suhtumine ei asenda kompetentsi

Häkkerid lahendavad probleeme ja loovad uusi asju, nad usuvad vabadusse ning vastastikusse vabatahtlikku abistamisse. Et sind häkkerina tunnustataks, peaksid käituma nii, nagu oleks sinu suhtumine just selline. Ja et nii käituda, peaksid ise sellesse uskuma.

Kuid kui sa pead häkkerliku suhtumise kujundamist kõigest viisiks leida selles kultuuris tunnustust, siis pole sa asjale pihta saanud. Nendesse asjadesse uskuvaks inimeseks saamine on tähtis just sinu jaoks - see aitab sul õppida ja säilitada motivatsiooni. Nagu kõigi loovate kunstide puhul, on ka siin meistriks saamise kõige efektiivsem tee imiteerida meistrite mõtteviisi - mitte üksnes intellektuaalsel, vaid ka emotsionaalsel tasandil.

Või nagu järgmine zen'i salm seda väljendab:

Teel käimiseks
Otsi meister
Järgi meistrit
Käi koos meistriga
Näe meistrit läbi
Saa meistriks

Nii et kui sa tahad saada häkkeriks, korda järgnevaid asju seni, kuni sa neid uskuma hakkad.

1. Maailm on täis imelisi probleeme, mis ootavad lahendamist

Häkker olla on lõbus, kuid see on sedasorti lõbu, mis vajab kõvasti pingutust. Pingutamiseks on vaja motivatsiooni. Edukad sportlased saavad motivatsiooni teatavast füüsilisest rahulolutundest, kui nende keha neile allub ja suudab ületada nende enda füüsilisi piire. Nõndasamuti peab ka häkker tundma rõõmu probleemide lahendamisest, oskuste edenemisest ning oma intellekti proovilepanekust.

Kui sa pole juba inimene, kelle jaoks selline tunne on loomulik, siis peaksid sa selleks saama, et häkkerina läbi lüüa. Vastasel juhul leiad varsti, et sinu häkkimisenergia kaob kõrvalistesse asjadesse nagu seks, raha ja sotsiaalne tunnustus.

(Sa pead ka arendama usku omaenese õpivõimesse - usku sellesse, et kui sa ka ei tea algul kõike, mida mingi probleemi lahendamiseks vaja on, siis kui lahendad sellest mingi osa ja õpid sellest, suudad lahendada järgmise tüki - ja nii edasi, kuni lahendus on käes.)

2. Ühtegi probleemi ei tuleks lahendada kaks korda

Loovad ajud on väärtuslik ja piiratud ressurss. Neid ei peaks raiskama jalgratta uuestileiutamise peale, kui nii palju põnevaid uusi probleeme ootab ümberringi lahendamist. Et käituda nagu häkker, peaksid uskuma, et teiste häkkerite mõtlemisele kuluv aeg on väärtuslik - niivõrd väärtuslik, et info jagamine, probleemide lahendamine ja seejärel tulemuste teatavakstegemine (et teised häkkerid saaksid võtta käsile uued probleemid, selle asemel et pidevalt vanadega tegelda) muutuvad sulle peaaegu et moraalseks kohuseks.

Pane siiski tähele, et "ühtegi probleemi ei tuleks lahendada kaks korda" ei tähenda seda, et kõiki olemasolevaid lahendusi tuleks pühadeks lehmadeks pidada, või et igale probleemile on vaid üks õige lahendus. Sageli õpime me probleemi kohta palju uut, kui uurime esialgset lahendust. Otsustada, et me suudame seda paremini teha, on igati hea ja tihti ka vajalik. Mis aga hea ei ole, on kunstlikud tehnilised, seadusandlikud ja organisatsioonilised takistused (nagu suletud lähtekood), mis ei lase häid lahendusi uuesti kasutada ning sunnivad inimesi jalgratast uuesti leiutama.

(Sa ei pea uskuma, et oled kohustatud kogu oma loomingutulemuse ära andma - ehkki just need häkkerid, kes nii teevad, on teiste poolt kõige enam hinnatud. Selle müümine ulatuses, mis võimaldab sul toitu osta, üüri maksta ja arvuteid soetada, on häkkeriväärtustega täiesti kooskõlas. Oma häkkerioskuste kasutamine perekonna ülalpidamiseks või isegi rikastumiseks on heakskiidetav seni, kuni sa seda taotledes ei unusta lojaalsust oma kunsti ja teiste häkkerite suhtes.

3. Igavus ja nüridus on kurjast

Häkkerid (ja loomeinimesed üldse) ei tohiks kunagi tunda igavust ega teha nüri ja rumalat tsüklilist tööd, sest selles olukorras ei tee nad seda, mida vaid nemad suudavad - lahendada uusi probleeme. Selline raiskamine kahjustab kõiki. Seepärast pole igavus ja nüridus mitte üksnes ebameeldivad, vaid otseselt kurjast.

Et käituda nagu häkker, peaksid sa uskuma seda piisavalt palju, et tahta kõiki igavaid töid automatiseerida niipalju kui võimalik - mitte üksnes enda, vaid kõigi teiste (eriti teiste häkkerite) juures.

(Selle punkti juures on üks selge erand. Häkkerid teevad vahel asju, mis tunduvad kõrvalseisjale igavad või nürid - kas siis meeli puhastava harjutusena või omandamaks oskust või kogemust, mida muud moodi ei ole võimalik saada. Kuid see on teadlik valik - ühtegi mõtlemisvõimelist inimest ei tohiks kunagi sundida igavasse olukorda.)

4.Vabadus on hea

Häkkerid on juba loomu poolest autoritaarsuse vastased. Igaüks, kes võib sind käsutada, võib segada sul lahendada mistahes põnevat probleemi, millega sa parajasti tegeled - ja arvestades viisi, kuidas autoritaarne mõttemall toimib, leiab ta sellele mõne põrutavalt lollaka põhjenduse. Seega tuleb autoritaarse suhtumise vastu võidelda kõikjal, kus seda kohata võib, et see sind ja teisi häkkereid ära ei lämmataks.

(See ei tähenda igasuguse autoriteedi vastu võitlemist. Lapsi tuleb juhatada ja kurikaelad tuleb kinni panna. Häkker võib nõustuda tunnustama teatud autoriteete, kui ta saab vastu midagi, mida ta tahab rohkem kui seda aega, mis kulub käskude täitmisele. Kuid see on piiratud ulatusega ning teadlik tehing - isikuvabadus, mille loovutamist autoritaarsus eeldab, ei ole kaubaks.)

Autoritaarsus põhineb tsensuuril ja salatsemisel. Nad ei usalda vabatahtlikku koostööd ega info jagamist - neile meeldb vaid selline "koostöö", mis on nende kontrolli all. Niisiis häkkerina käitumiseks peaksid endas arendama instinktiivset vastumeelsust tsensuuri, salatsemise ning jõu ja pettuse kasutamisele vastutusvõimeliste inimeste veenmiseks. Ja sa peaksid suutma ka tegutseda sellele veendumusele vastavalt.

5. Suhtumine ei asenda kompetentsi

Et olla häkker, peaksid endas arendama teatud suhtumisi. Kuid suhtumine üksi ei tee sind häkkeriks rohkem kui tippatleediks või rokitäheks. Häkkeriks saamine nõuab intelligentsust, praktikat, pühendumist ja rasket tööd.

Seetõttu pead sa õppima umbusaldama paljast suhtumist ja austama igasugust kompetentsi. Häkkerid ei lase poosetajatel enda aega raisata, kuid nad jumaldavad kompetentsi - eriti häkkimisalast, kuid mistahes kompetents on hinnatud. Kompetents keerukatel aladel, mida vaid vähesed suudavad vallata, on eriti hinnatud. Ja kompetents keerukatel aladel, mis nõuavad vaimset täpsust, oskusi ja keskendumist, on parim. Kui sa austad kompetentsi, hakkab sulle meeldima ka seda enda juures arendada - raskest tööst ja pühendumisest saab seeläbi isemoodi karm mäng, mitte enam nüridus. Selline suhtumine on häkkeriks saamisel ülioluline.

Liugur

Häkkeri põhioskused

1. Õpi programmeerima
2. Hangi üks avatud lähtekoodiga Unixitest ja õpi seda kasutama
3. Õpi kasutama veebi ja kirjutama HTMLi
4. Kui sa ei oska piisaval määral inglise keelt, õpi see ära

Häkkerlik suhtumine on oluline, kuid oskused on veelgi olulisemad. Suhtumine ei asenda kompetentsi ning on olemas teatav põhioskuste komplekt, mis sul peab olemas olema, enne kui ühelgi häkkeril võiks tulla pähe sind häkkeriks nimetada.

See komplekt muutub aeglaselt aja jooksul, kuna tehnika areng loob uusi oskusi ja muudab vanu aegunuteks. Näiteks kuulus sellesse omal ajal masinkoodis programmeerimine, samal ajal ei sisaldanud see kuni viimase ajani HTMLi valdamist. Käesoleval ajal sisaldab see aga üsna selgesti järgnevaid asju:

1. Õpi programmeerima

See on muidugi põhiline häkkerioskus. Kui sa ei tunne veel ühtki programmeerimiskeelt, siis soovitaksin alustada Pythoniga. See on selge disainiga, hästi dokumenteeritud ja algajate vastu suhteliselt leebe. Kuigi ta sobib esimeseks keeleks, pole see mänguasi - ta on väga võimas ja paindlik ning sobib hästi ka suurte projektide jaoks. Ma olen kirjutanud ühe detailsema hinnangu Pythonile, häid õpetusi leiab ka Pythoni veebilehelt ning veel üks suurepärane leidub siin.

Varem soovitasin Javat kui head keelt varakult õppimiseks, kuid see kriitika pani mind meelt muutma (otsi sealt peatükk The Pitfalls of Java as a First Programming Language). Häkker ei saa läheneda probleemile nii, nagu nad seda hävitavalt nimetavad, "nagu torujüri rauapoes" - sa pead teadma, mida mingi asja koostisosad tegelikult teevad. Nüüd arvan, et võib-olla on kasulikum õppida esmalt C-d ja LISPi ning alles seejärel Javat.

Siin on ehk ka üks üldisem tähelepanek. Kui keel teeb sinu eest liialt palju ära, võib see olla ühtaegu hea töö- ja kehv õppevahend. See ei käi üksnes keelte kohta - veebiraamistikud nagu Ruby on Rails, CakePHP ja Django võivad anda petlikult pinnapealse arusaamise, mis jätab tõsisema probleemi ette sattudes jänni (isegi lihtsa lahenduse veaotsing võib probleemseks osutuda).

Parem alternatiiv Javale on Go. See üsna uus keel on Pythoni baasilt küllaltki lihtsalt õpitav ning on heaks aluseks järgmisele tõsisemale sammule, C õppimisele. Lähitulevik peaks näitama, mil määral suudab Go asendada C-d süsteemiprogrammeerimise vahendina - ühe võimaliku stsenaariumi järgi võtab Go üle suure osa C traditsioonilistest rollidest.

Kui sa jõuad tõsise programmeerimiseni, pead ära õppima C, Unixi aluskeele. C++ on C-le väga sarnane, nii et ühte osates ei ole teise õppimine raske. Siiski pole kumbki neist sobiv esimeseks programmeerimiskeeleks. Tegelikult - mida enam sa suudad vältida C-s programmeerimist, seda viljakam sa oled.

C on väga tõhus ning väga kokkuhoidlik arvuti ressurssidega ümberkäimisel. Paraku saavutatakse see tõhusus nõudmisega sooritada suur osa operatsioone madaltaseme ressursihalduses (nagu mälu) käsitsi. See madaltaseme kood on keeruline ja aldis vigadele ning selle silumine võtab tohutult aega. Tänaste masinate võimsuse juures on see enamasti kehv kaup - mõttekam on kasutada keelt, mis kasutab küll arvuti aega vähem tõhusalt, kuid sinu aega palju tõhusamalt. See tähendab Pythonit.

Teised häkkerite jaoks erilise tähtsusega keeled on Perl ja LISP. Perli tasub õppida praktilistel kaalutlustel - seda kasutatakse laialdaselt dünaamilises veebis ja süsteemihalduses, nii et isegi kui sa kunagi Perli ei kirjuta, peaksid suutma seda lugeda. Paljud kasutavad Perli nii, nagu mina soovitaks Pythonit - vältimaks C-s programmeerimist ülesannete juures, mis ei nõua C masinalähedust. Sa pead olema suuteline nende koodi lugema.

LISPi tasub õppida teistel kaalutlustel - nimelt selle suure valgustava kogemuse nimel, mille sa läbi elad, kui see sulle viimaks kohale jõuab. See kogemus muudab su paremaks programmeerijaks elu lõpuni, isegi kui sa tegelikult kuigi palju LISPi ei kasutagi. (Mõningat algkogemust võid LISPiga saada üsna kergesti, kirjutades ja muutes Emacsi tekstiredaktori redigeerimisrežiime või Script-Fu pluginaid GIMPi jaoks.)

Kõige parem oleks tegelikult õppida ära kõik viis: Python, C/C++, Java, Perl ja LISP. Lisaks sellele, et nad on tähtsaimad häkkerikeeled, esindavad nad väga erinevaid lähenemisi programmeerimisele ning igaüks neist harib sind erineval väärtuslikul moel.

Kuid võta teadmiseks, et sa ei saavuta häkkeri - ega isegi programmeerija - taset, kui sa oskad vaid üht-kaht keelt. Sa pead õppima mõtlema programmeerimisprobleemidest üldiselt, sõltumata ühestki konkreetsest keelest. Et olla tõeline häkker, pead jõudma tasemele, kus sa suudad õppida uue keele ära päevadega, lihtsalt seostades omavahel manuaalis kirjasoleva ning juba olemasolevad teadmised. See tähendab, et peaksid õppima mitmeid väga erinevaid keeli.

Ma ei saa siin anda täielikke juhiseid programmeerimise õppimiseks - see on keeruline oskus. Kuid võin öelda, et raamatud ja kursused ei aita (paljud, võib-olla enamik parimatest häkkeritest on iseõppijad). Sa võid raamatust õppida keele omadusi - teadmiste killukesi, kuid seda teadmist "elusaks" oskuseks muutvat mõtteviisi saab omandada üksnes praktika ja õpipoisiajaga. Aitab a) koodi lugemine ja b) koodi kirjutamine.

Peter Norvig, üks Google'i tipphäkkeritest ja maailmas enimkasutatud tehisintellektiõpiku üks kaasautoreist on kirjutanud suurepärase essee pealkirjaga "Õpi kümne aastaga programmeerima". Tema "programmeerimise eduretsept" väärib hoolikat tähelepanu.

Programmeerimise õppimine sarnaneb hea tavakeele õppimisele. Parim meetod selleks on lugeda meistrite kirjutatut, kirjutada midagi ise, lugeda veel kõvasti juurde, kirjutada veel, lugeda veel, kirjutada veel... ja korrata seda seni, kuni su kirjutatu hakkab ilmutama samu omadusi kui eeskujud.

Selle õppeprotsessi kohta olen kirjutanud lähemalt kirjutises How To Learn Hacking. Need soovitused on küll lihtsalt sõnastatud, kuid mitte väga lihtsad järgida.

Hea koodi leidmine oli varem üsna raske, kuna vaid väheste suuremate programmide lähtekood oli häkkerite jaoks uurimiseks ja torkimiseks avatud. See on nüüdseks kardinaalselt muutunud - avatud lähtekoodiga tarkvara, programmeerimisvahendid ja operatsioonisüsteemid (kõik häkkerite enda looming) on nüüd laialt saadaval. Siit jõuamegi kenasti järgmise punkti juurde...

2. Hangi üks avatud lähtekoodiga Unixitest ja õpi seda kasutama

Ma eeldan, et sul on olemas personaalarvuti või ligipääs mõnele. (Mõtle hetkeks, kui palju see tähendab. Häkkerikultuur sai alguse aegadel, mil arvutid olid nii kallid, et üksikisikul ei saanud seda olla.) Kõige tähtsam samm, mida algaja saab häkkerioskuste omandamise suunas teha, on hankida endale Linux või üks BSD Unixitest, paigaldada see oma arvutisse ja see käima lasta.

Jah, maailmas on teisigi operatsioonisüsteeme peale Unixi. Kuid neid levitatakse kahendkujul - sa ei saa nende koodi lugeda ega muuta. Üritus õppida häkkima Microsoft Windowsi või mõne muu suletud lähtekoodiga süsteemiga arvutil sarnaneb katsega üle kere lahasesse panduna tantsima õppida.

MacOS X-is on see võimalik, kuid üksnes osa sellest süsteemist on avatud lähtekoodiga - tõenäoliselt põrkad sa paljudele takistustele, samuti pead olema tähelepanelik, et mitte omandada halba harjumust sõltuda Apple'ile kuuluvast programmikoodist. Kui aga kontsentreeruda süsteemi "kapoti all" töötavale Unixile, on võimalik õppida mõndagi kasulikku.

Unix on Interneti operatsioonisüsteem. Ehkki Internetti kasutama õppida saab ka ilma Unixit tundmata, ei saa ilma Unixit mõistmata olla Interneti-häkker. Sel põhjusel on tänane häkkerikultuur üsna tugevasti Unixi-keskne. (See pole alati nii olnud ning mõned vana kooli häkkerid pole selle üle siiani õnnelikud, kuid Unixi ja Interneti vaheline sümbioos on kasvanud nii tugevaks, et isegi Microsofti hammas sellele kuigivõrd peale ei hakka.)

Niisiis, võta Unix - mulle endale meeldib Linux, kuid on ka teisi teid (ning jah, Linuxi ja Microsoft Windowsi jooksutamine samas masinas on täiesti võimalik). Õpi seda. Jooksuta seda. Torgi seda. Käi sellega Internetis. Loe koodi. Muuda koodi. Sinu käsutuses on paremad programmeerimisvahendid (kaasa arvatud C, LISP, Python ja Perl) kui üheski Microsofti süsteemis iial on, sul saab olema lõbus ning sa kogud rohkem teadmisi, kui isegi aru saad, enne kui sa ükskord meisterhäkkerina sellele kõigele tagasi vaatad.

Unixi õppimise kohta loe edasi Loginataka'st. Võiksid heita pilgu ka Unixi Programmeerimise Kunstile.

Let's Go Larval!" on ajaveeb, kus ühe uue Linuxi-kasutaja õppimisprotsess on minu arvates eriti selgelt ja kasulikul moel ära toodud. Alustamiseks sobib näiteks see postitus.

Linuxi hankimiseks vaata Linux Online! -veebilehele - võid selle sealt alla laadida või (veel parem mõte) leida mõne kohaliku Linuxi kasutajarühma (Linux User Group ehk LUG), kust võid paigaldamiseks abi saada.

Selle materjali esimese kümne aasta jooksul väitsin, et uue kasutaja vaatenurgast on kõik Linuxi distrod enam-vähem võrdväärsed. 2006-2007 aga ilmus tõeliselt parim valik: Ubuntu. Kuigi teistel distrodel on omad tugevad küljed, on Ubuntu algajate suhtes kaugelt kõige sõbralikum. Siiski, hoidu nende mõne aja eest kasutusele võetud koledast ja pea kasutuskõlbmatust Unity kasutajaliidesest - variandid nagu Xubuntu ja Kubuntu on märksa etemad.

BSD Unixi kohta saad abi ja lisamaterjale http://www.bsd.org veebilehelt.

Hea viis "varbaid märjaks teha" on asi, mida Linuxi fännid nimetavad elus CD-ks (ingl. k. live CD) - distro, mis jookseb täielikult CD-lt või mälupulgalt, vajamata muudatusi kõvakettal. CD aegluse tõttu on see aegavõttev, kuid see on viis tutvuda erinevate võimalustega ilma midagi drastilist ette võtmata.

Ma olen kirjutanud ka ülevaate Unixi ja Interneti põhitõdedest.

Varem ei soovitanud algajal üksinda Linuxi või BSD paigaldamist üritada. Nüüd on paigaldused läinud nii lihtsaks, et isegi algaja suudab nendega toime tulla, seda ka päris üksi. Ent ühenduse võtmine kohalike Linuxi-huvilistega ei tee igal juhul paha ning võib kogu asja märgatavalt lihtsustada.

3. Õpi kasutama veebi ja kirjutama HTMLi

Enamik häkkerikultuuri saavutusi töötab varjatult, hoides käigus tehaseid, kontoreid ja ülikoole ilma erilise nähtava mõjuta mitte-häkkerite elule. Veeb on üheks suureks erandiks - see on tohutu ja särav häkkerite mänguasi, mille maailma muutvat mõju tunnistavad isegi poliitikud. Juba ainuüksi seetõttu (ja häid põhjusi on veel hulgi) pead sa õppima veebiga töötama.

See ei tähenda üksnes veebilehitseja kasutamise õppimist (seda suudab igaüks), vaid ka veebi märgendikeele HTMLi kirjutamist. Kui sa ei oska veel programmeerida, õpetab HTMLi kirjutamine sulle mõningaid vaimseid harjumusi, mis aitavad sul seda õppida. Nii et tee endale koduleht.

Kuid kodulehe omamine ei ole kaugeltki mitte piisav, et saada häkkeriks. Veeb on kodulehti täis. Enamik neist on mõttetu, nullsisuga jamps - võib-olla väga uhke väljanägemisega jamps, kuid jamps ikkagi (sel teemal vaata lähemalt HTMLi Põrgut).

Et olla midagi väärt, peab su lehel olema sisu - see peab olema huvitav ja/või kasulik teistele häkkeritele. Ja nii jõuame järgmise punktini...

4. Kui sa ei oska piisaval määral inglise keelt, siis õpi see ära

Ameeriklasena, kelle emakeel on inglise keel, pole ma varem tahtnud seda soovitada, et seda ei võetaks kui teatavat liiki kultuuriimperialismi. Kuid mitmed teiste emakeeltega inimesed on soovitanud mul märkida, et inglise keel on häkkerikultuuri ja Interneti töökeel ning häkkerikultuuris osalemiseks peab seda oskama.

Juba 1991. aasta paiku sain teada, et mitmed häkkerid, kellele inglise keel on teiseks keeleks, kasutavad seda tehnilistes vestlustes isegi juhul, kui neil on sama emakeel - mulle öeldi tollal, et inglise keeles on rikkalikum tehniline sõnavara kui teistes keeltes ning see on lihtsalt parem töövahend sellise töö jaoks. Samadel põhjustel on ingliskeelsete tehniliste raamatute tõlked teistesse keeltesse tihti kehvad (kui neid üldse on).

Soomest pärit Linus Torvalds kommenteerib oma programmikoodi inglise keeles (tal pole ilmselt kunagi tulnud pähe teisiti toimida). Tema hea inglise keel on osutunud oluliseks faktoriks ülemaailmse Linuxi arendajate kogukonna kujundamisel. Seda eeskuju tasub järgida.

Kui su emakeel on inglise keel, ei taga see veel häkkerile piisavat keeleoskust. Kui su kirjutised on pool-kirjaoskamatud, ebagrammatilised ja kirjavigu täis, kipuvad paljud häkkerid (mina ise kaasa arvatud) sind ignoreerima. Ehkki kehv kirjaoskus ei tähenda alati kehva mõtlemisvõimet, oleme me ilmselt leidnud siin tugeva seose - ja kehva mõtlemisvõimega inimestest pole meil tolku. Nii et kui sa ei oska veel korralikult kirjutada, siis õpi see ära.

Liugur

Staatus häkkerikultuuris

1. Kirjuta avatud lähtekoodiga tarkvara
2. Aita avatud lähtekoodiga tarkvara testida ja siluda
3. Avalda kasulikku teavet
4. Aita hooldada infrastruktuuri
5. Teeni häkkerikultuuri

Nagu enamik ilma rahapõhise majanduseta kultuure, püsib häkkerlus reputatsioonil. Sa üritad lahendada huvitavaid probleeme, ent seda, kui huvitavad need on või kas su lahendused on piisavalt head, võivad enamasti hinnata vaid teised sinu kõrval või sinust kõrgemal.

Järelikult pead häkkerite seas kaasamängimiseks õppima jälgima seda, mida teised häkkerid sinu oskustest arvavad (seepärast polegi sa häkker enne, kui teised häkkerid sind pidevalt nii nimetavad). Seda muudab aga segasemaks senini püsiv kujutelm häkkimisest kui üksi tehtavast asjast ning ka häkkerikultuuri tabu (mis on alates 1990-ndate lõpust vaikselt taandunud, kuid ikka veel tugev) tunnistada, et ego või väline heakskiit üldse kedagi motiveerivad.

Täpsemalt on häkkerlus midagi sellist, mida antropoloogid nimetavad kingikultuuriks. Staatus ja reputatsioon ei tulene mitte teiste üle domineerimisest, ilusast väljanägemisest või teiste poolt ihaldatavate asjade omamisest, vaid asjade äraandmisest. Täpsemalt oma aja, loovuse ja töötulemuste äraandmisest.

Põhimõtteliselt on viit liiki asju, mida häkkerite seas austuse pälvimiseks teha.

1. Kirjuta avatud lähtekoodiga tarkvara

Esimeseks (kõige kesksemaks ja traditsioonilisemaks) on kirjutada programme, mida teised häkkerid peavad lahedaks või kasulikuks ning anda programmide lähtekood kogu häkkerikultuurile kasutada.

(Varem nimetasime neid töid "vabaks tarkvaraks", kuid see ajas segadusse paljud inimesed, kes ei saanud aru, mida "vaba" all mõeldakse. Enamik meist eelistab tänapäeval terminit "avatud lähtekood") (Tõlkija märkus: eesti keeles on "vaba tarkvara" siiski enam juurdunud, kuna puudub "free" kahetähenduslikkus).

Häkkerluse kõige austatumad "pooljumalad" on inimesed, kes on loonud suuri ja võimsaid programme, mida vajavad paljud inimesed, ning andnud need igaühe kasutusse.

Kuid siin tuleks teha üks ajalooline märkus. Ehkki häkkerid on alati pidanud avatud lähtekoodiga tarkvara arendajaid enda hulgas oma kogukonna tuumikuks, töötas suurem osa häkkereid enne 1990-ndate keskpaika peamiselt suletud lähtekoodiga. See oli nii veel 1996. aastal, kui ma selle teksti algvariandi kirjutasin - alles avatud lähtekoodi laiem levik peale 1997. aastat muutis olukorda. Tänaseks on "häkkerikogukond" ja "avatud lähtekoodiga tarkvara arendajad" kaks erinevat kirjeldust praktiliselt ühe ja sama kultuuri ja inimkoosluse kohta - kuid tasub meeles pidada, et see ei ole alati nõnda olnud. Täpsemalt on sellest kirjutatud siin (Märkus ajaloost).

2. Aita avatud lähtekoodiga tarkvara testida ja siluda

Abiks on ka avatud lähtekoodiga tarkvara testijad ja silujad. Meie ebatäiuslikus maailmas kulub paratamatult suurim osa tarkvaraarenduse ajast silumisetapile. Seepärast võib iga mõtlev tarkvaralooja kinnitada, et head beetatestijad (kes suudavad probleeme selgelt kirjeldada ning nende tekkekohti täpsustada, elavad üle "puugid" ebastabiilsetes versioonides ning on suutelised ka ise mõne lihtsa diagnostikavahendi valmis kirjutama) on kuldaväärt. Ka üks selline inimene suudab silumise kui piinarikka ja pikaleveniva õudusunenäo asendada kõigest väikese lisakohustusega.

Kui oled algaja, püüa leida arendatav tarkvara, mis sind ennast huvitab, ning hakka heaks beetatestijaks. Testimisest edasi läheb loogiline areng programmide silujaks ja sealt edasi juba muutjaks ja edasiarendajaks. Seda teed käies õpid sa palju ning saavutad head suhted inimestega, kes võivad edaspidi sind ennast aidata.

3. Avalda kasulikku teavet

Veel üks kiiduväärt tegevus on kasuliku ja huvitava info kogumine ja filtreerimine, selle muutmine veebilehtedeks või KKK (Korduma Kippuvad Küsimused) -tüüpi dokumentideks ning tegemine üldiselt kättesaadavaks.

Suurte tehniliste KKK-de haldajad on peaaegu samavõrra au sees kui avatud lähtekoodiga tarkvara loojad.

4. Aita hooldada infrastruktuuri

Häkkerikultuur (ja tegelikult kogu Interneti tehniline arendamine) püsib vabatahtlikel. Selle käigushoidmine nõuab palju vajalikku, kuid "musta" tööd - e-postilistide haldamine, uudisegruppide modereerimine, suurte tarkvaraarhiivide hooldamine, RFC-de (Tõlkija märkus - Request For Comments ehk Interneti eri valdkondade korraldust sätestav programmiline dokument) ja muude tehniliste standardite arendamine.

Seda tööd tegevad inimesed pälvivad rohkesti austust, kuna kõik teavad, kui palju aega selline tegevus nõuab ning et see pole nii lõbus kui koodiga mängimine. Selle töö tegemine näitab pühendumist.

5. Teeni häkkerikultuuri

Lõpuks võid sa teenida ja levitada ka häkkerikultuuri ennast (näiteks nagu kirjutades täpse juhise, kuidas häkkeriks saada. :-)). Seda tööd ei anta sulle enne, kui oled mõnda aega asjaga tegelnud ja saanud ühega eelmistest neljast tegevusest piisavalt tuntuks.

Häkkerikultuuril ei ole juhte selle sõna otseses tähenduses, kuid sel on omad kultuuriheerosed, hõimujuhid, ajaloolased ja kõnemehed. Kui sa oled olnud lahinguväljal piisavalt kaua, võib sinust saada üks neist. Vaata ette: häkkerid ei armasta enda vanemate juures oma ego upitamist, nii et sedalaadi kuulsuse otsene taotlemine on ohtlik. Parem on luua endale selline positsioon, et kuulsus ise sülle kukub, ning seejärel olla enda staatuse osas tagasihoidlik ja viisakas.

Liugur

Häkkerid ja nohikud

Vastupidiselt laialt levinud eksiarvamusele ei pea sa häkker olemiseks olema nohik. Tõsi, sellest on abi ja paljud häkkerid ongi tegelikult nohikud. Ühiskondlik tõrjutus aitab kontsentreeruda tõeliselt tähtsatele asjadele nagu mõtlemine ja häkkimine.

Seetõttu kannavad paljud häkkerid nohiku (Tõlkija märkus: eesti "nohikul" on inglise keeles kaks eri varjundiga tõlkevastet - geek tähistab enam nohikut, kes on sellise olemise ise valinud, nerd aga õnnetumat sorti, kes seda ise olla ei sooviks) silti uhkusega - see on nende jaoks viis deklareerida oma sõltumatust ühiskonna tavapärastest ootustest (siia käivad ka kiindumus selliste nähtuste nagu ulme ja strateegiamängude vastu, mis sageli häkkereid iseloomustab). 1990-ndate alguses kasutati selliselt (Ameerikas - tõlkija märkus) terminit nerd - see oli kergelt halvustav, samal ajal oli geek märksa räigem sõna (tähistas muuhulgas vana aja Inglismaa tsirkustes "metsmeest", kes puuris mörises ja elusaid kanu sõi - tõlkija märkus). Kusagil peale 2000. aastat vahetasid need terminid vähemalt USA popkultuuris kohad ning tänaseks on "nohikukultuur" laienenud ka mittetehniliste inimesteni.

Kui sa suudad keskenduda häkkimisele piisavalt, et saavutada hea tase, ning ometi suudad ka oma elu elada, on kõik hästi. See on tänapäeval palju lihtsam kui minu algaja-aegadel 1970-ndatel, kuna tänane "peavoolu" kultuur on tehnofriikide suhtes märksa sõbralikum. Nende inimeste arv, kes leiavad häkkerid olevat sobivad partnerid ja abikaasad, on isegi tõusuteel.

Kui sind tõmbab häkkimine seetõttu, et sul oma elu ei ole, on ka hästi - vähemalt ei teki sul keskendumisraskusi. Ehk tuleb oma elu kunagi hiljem.

The Glider

Stiilipunktid

Taas kord: häkker olemiseks pead sa omandama häkkeri mõtteviisi. Ka väljaspool arvuteid on mõningaid asju, millega tegelemine näib seda soodustavat. Nad ei asenda häkkimist (seda ei asenda miski), kuid paljud häkkerid tegelevad nendega ja tunnevad, et need tegevused seonduvad mingil moel häkkimise olemusega.

Mida enamatega neist asjadest sa juba praegu tegeled, seda tõenäolisemalt on sul loomulikke eeldusi häkkeriks saada. Miks just need asjad, ei ole lõplikult teada, kuid ilmselt on tegu vasaku ja parema ajupoolkeraga seonduvate oskuste sobiliku seguga - häkkerid peavad suutma nii loogiliselt arutleda kui ka hetkevälgatuse mõjul probleemi näilisest loogikast välja astuda.

Tööta sama intensiivselt kui mängid ning mängi sama intensiivselt kui töötad. Tõeliste häkkerite jaoks kipuvad piirid "mängu", "töö", "teaduse" ja "kunsti" vahel kaduma või segunema kõrgemal tasemel loovaks mängulisuseks. Ära ka rahuldu kitsa oskustespektriga. Kuigi enamik häkkereid liigitab end programmeerijateks, on nad tõenäoliselt enam kui kompetentsed mitmetes seonduvates valdkondades - süsteemihaldus, veebidisain ja PC-de riistvara diagnostika on väga levinud. Teisalt on süsteemihaldurist häkker tõenäoliselt ka üsna osav skriptiprogrammeerija ja veebidisainer. Häkkerid ei tee asju poolekaupa - kui nad üldse mingisse oskusse panustavad, siis jõuavad nad harilikult selles väga heale tasemele.

Lõpetuseks ka paar asja, mida ei tohiks teha.

Ainus reputatsioon, mida sa neid tehes saad, on lolli inimese oma. Häkkeritel on pikk mälu - võib kuluda aastaid, enne kui su varajased "ämbrid" andeks antakse.

Kasutajanimede teema väärib natuke arendamist. Enda isiku peitmine kasutajanime taha on lapsik ja tobe käitumine, mis iseloomustab kräkkereid, warez d00d'e ja muid alamaid eluvorme. Häkkerid nii ei tee - nad on uhked selle üle, kes nad on, ning tahavad seda seostada oma pärisnimega. Seega kui sa peitud kasutajanime taha, loobu sellest. Häkkerikultuuris annab see sulle vaid luuseri märgi külge.

Märkus ajaloost: häkkimine, avatud lähtekood ja vaba tarkvara

TÕLKIJA MÄRKUS: ESR esindab siin selgelt avatud lähtekoodi (open source) koolkonda (vastandina Richard Stallmani vaba tarkvara koolkonnale). Eesti keeles on termin "avatud lähtekood" jäänud pigem puhttehniliseks mõisteks ja "vaba tarkvara" tähistab siinmail pigem laiemat terminit, mida inglise keeles tähistatakse ühendterminga FLOSS (Free, Libre and Open-Source Software) ning mis katab mõlemad mainitud koolkonnad.

Kui ma 1996. aasta lõpus selle dokumendi algversiooni kirja panin, olid mitmed asjad üsna teisiti kui tänapäeval. Alljärgnev lühike selgitus aitab ehk vähendada segadust nende inimeste jaoks, kes tunnevad huvi avatud lähtekoodi, vaba tarkvara ja Linuxi seostes häkkerite kogukonnaga. Kui see aga sind ei huvita, võid liikuda kohe edasi lisalugemise ja korduma kippuvate küsimuste juurde.

Häkkerieetika ja -kogukond sellisena, nagu ma seda olen kirjeldanud, ulatub palju varasemasse aega kui seda on Linuxi tulek 1990. aastatel - mina ise alustasin selles 1976. aasta paiku ning selle liikumise juuri võib selgesti näha juba 60. aastate alguses. Kuid enne Linuxi tulekut piirdus häkkimine omanduslike süsteemidega või siis käputäie kodukootud, pool-eksperimentaalsete süsteemidega nagu MIT ITS, mis ei jõudnud kunagi oma kitsast akadeemilisest ringist väljapoole. Ehkki seda olukorda üritati muuta juba enne Linuxit, jäi nende mõju marginaalseks ja piirdus tõeliste fanaatikute rühmadega, kes moodustasid tühise vähemuse isegi häkkerikogukonna sees, rääkimata siis tarkvara maailmast laiemalt.

Avatud lähtekood, nagu seda tänapäeval tuntakse, on sama vana kui häkkerikultuur, ent umbes 1985. aastani oli tegu pigem nimetu rahvakombega kui teadliku, teooriate ja seisukohtadega varustatud liikumisega. See eelajalugu sai otsa 1985. aastal, kui esihäkker Richard Stallman (tuntud ka kui RMS) üritas anda sellele nime - "vaba tarkvara". Kuid see tõi kaasa ka ideoloogilise taaga lisamise "vaba tarkvara" mõistele, mida suur osa olemasolevast häkkerikogukonnast heaks ei kiitnud. Selle tulemusena protestis märgatav vähemus häkkerikogukonnast (eriti need, kes olid koondunud BSD Unixi ümber) valjuhäälselt "vaba tarkvara" arusaamade vastu ning ka enamik (k.a. mina ise) võttis selle omaks tuntavate reservatsioonidega.

Sellest hoolimata kandis RMSi püüe koondada häkkerikultuuri "vaba tarkvara" lipu alla vilja kuni 90. aastate keskpaigani. Sellele esitas väljakutse just Linuxi esiletõus, millest sai avatud lähtekoodi liikumise loomulik keskpunkt. Paljud varasemad projektid, mis levisid praegu avatud lähtekoodina tuntud tingimustel, kolisid omanduslikelt Unixitelt Linuxile. Linuxi kogukond kasvas plahvatuslikult, saades kõvasti suuremaks ja kirjumaks kui Linuxi-eelne häkkerikultuur. RMS püüdis ka seda liikumist "vaba tarkvara" alla koondada, kuid sellele seisis vastu nii kogukonnas leviv arvamuste paljusus kui ka Linuxi looja Linus Torvaldsi selgelt väljendatud umbusk. Kuna paremat terminit polnud, jätkas Torvalds "vaba tarkvara" kasutamist, ent lükkas selgelt tagasi RMSi ideoloogia. Paljud nooremad häkkerid järgnesid talle.

Kui ma 1996. aastal esmakordselt selle dokumendi avaldasin, oli häkkerikogukond kiiresti koondumas Linuxi ja paari teise avatud lähtekoodiga (eriti just BSD Unixi taustaga) süsteemi ümber. Mälestus sellest, et tegelikult oli enamik meist töötanud aastaid kinnise lähtekoodiga tarkvara loomisel kinnise ḱoodiga süsteemides, ei olnud veel kadunud, kuid see oli juba hakanud muutuma kaugeks, surnud minevikuks - häkkerid olid üha enam määratlemas endid avatud lähtekoodiga projektide, nagu Linux ja Apache, kaudu.

Terminit "avatud lähtekood" aga veel ei olnud, see ilmus alles 1998. aasta alguses. Selle tulekuga aga võeti see kuue kuu jooksul omaks enamiku häkkerikogukonna poolt - erandiks jäi vähemus, kes pooldas "vaba tarkvara" ideoloogiat. Alates 1998. (ja eriti 2003.) aastast on "häkkimine" ja "avatud lähtekoodiga (vaba tarkvara) arendus" saanud üha enam samatähenduslikeks. Tänapäeval ei ole enam nende vahel rangel vahetegemisel kuigi suurt mõtet.

On aga kasulik meeles pidada, et see ei ole alati nii olnud.

Lisalugemist

Paul Graham on kirjutanud hea essee pealkirjaga Great Hackers, ning veel teisegi pealkirjaga Undergraduation, millest nähtub suurt tarkust.

Noorematele häkkeritele võib kasuks tulla lugeda asjadest, mida iga häkker kunagi oskas.

Ma olen kirjutanud ka häkkerluse lühiajaloo.

Ma olen kirjutanud töö Katedraal ja turg, mis selgitab paljusid asju Linuxi ja avatud tarkvara kultuuri toimimise kohta. Sama teemat on edasi arendatud selle järjes Noosfääri taltsutamine.

Rick Moen on kirjutanud väga hea juhendi Linuxi kasutajarühma haldamise kohta.

Rick Moen ja mina oleme andnud oma panuse ka kirjutisse Kuidas targasti küsida (Tõlkija märkus: Aivo Kalu on selle tõlkinud ka eesti keelde). See aitab sul abi otsida viisil, mis lubab ka abi saada.

Kui vajad juhiseid personaalarvuti, Interneti ja Unixi põhitõdede kohta, vaata The Unix and Internet Fundamentals HOWTO-d.

Kui sa kirjutad tarkvara või parandad olemasolevat, püüa järgida juhiseid, mis on kirjas Software Release Practice HOWTO-s.

Kui sulle meeldis tekstis toodud zeni salm, vaata ka Juureta Juurt ehk Meister Fu Unixi koan'e.

Korduma Kippuvad Küsimused

Kust ma tean, kas ma olen juba häkker või mitte?
Kas sa õpetaksid mind häkkima?
Kust ma siis alustama peaks?
Millal ma peaks alustama? Või olen juba hiljaks jäänud?
Kui kaua mul häkkima õppimine aega võtab?
Kas Visual Basic on alustamiseks sobiv keel?
Kas sa aitaksid mul süsteeme kräkkida või õpetaksid mind kräkkima?
Kuidas ma saaksin teada kellegi teise parooli?
Kuidas ma saaksin muukida/lugeda kellegi teise e-postkasti?
Kuidas ma saaksin näpata endale IRC kanali operaatoriprivileegid?
Mu arvutisse murti sisse. Kas sa aitaksid mul edaspidi rünnakutest hoiduda?
Mul on probleeme Windowsi tarkvaraga. Ka sa aitaksid mind?
Kust ma leiaksin mõne ehtsa häkkeri, kellega rääkida?
Kas sa oskad soovitada häid raamatuid häkkimise teemadel?
Kas häkkeriks saamiseks pean ma hästi matemaatikat oskama?
Millisest keelest peaksin alustama?
Millist riistvara mul vaja läheb?
Ma tahaks ka kaasa lüüa. Oskad sa mulle pakkuda lahendamiseks mõnda probleemi?
Kas ma pean vihkama ja kiruma Microsofti?
Kuid kas avatud lähtekood ei võta programmeerijailt ära võimalust elatist teenida?
Kust ma võiksin endale tasuta Unixi saada?

K: Kust ma tean, kas ma olen juba häkker või mitte?

V: Küsi endalt järgmised kolm küsimust:

Kui sa võid vastata jaatavalt kõigile kolmele küsimusele, siis oledki juba häkker. Mistahes kahest "jah"-ist aga ei piisa.

Esimene küsimus testib oskusi. Kui sul on eespoolkirjeldatud miinimumoskused, saad testist läbi. Kui mõni märkimisväärne ports sinu programmikoodi on kunagi jõudnud mõne avatud lähtekoodiga projekti koosseisu, läbid testi lausa lennates.

Teine küsimus testib suhtumist. Kui eespoolkirjeldatud viis häkkeri mõtteviisi printsiipi tunduvad sulle ilmselged ning pigem kirjeldavad sinu praegusi eluviise kui midagi uut, oledki pooleldi juba läbi saanud. See on sisemine pool - teine, välimine pool on identifitseerumine häkkerikogukonna pikaajaliste projektidega.

Järgnevalt on toodud mittetäielik, kuid üsna tabav nimekiri mõnest sellisest projektist: Kas Linuxi areng ja levik on sulle oluline? Kas tarkvara vabadus tekitab sinus tugevaid tundeid? Kuidas on vaenulikkusega monopolide suhtes? Kas usud, et arvutid võivad olla abiks maailma rikkamaks ja inimlikumaks muutmisel, ning kas sa elad selle veendumuse järgi?

Siiski tuleks siin teha üks ettevaatusele manitsev märkus. Häkkerikogukonnal on mõned spetsiifilised, peamiselt enda kaitsele suunatud poliitilised huvid - kaks neist on sõnavabaduse kaitse ning võitlus "intellektuaalomandi" laiutamise vastu, mis halvemal juhul võib muuta avatud lähtekoodi ebaseaduslikuks. Mõned neist projektidest on kodanikuöiguste-alased ühendused nagu Electronic Frontier Foundation, ning nende toetamine kuulub õigusega häkkerliku suhtumise juurde. Kuid sealt edasi ulatuvaid katseid häkkeri suhtumist poliitilisse programmi suruda vaatab enamik häkkereid kahtlustavalt, kuna mitmed kurvad kogemused näitavad, et need on lõhestavad ja segadusttekitavad. Kui mõned tahavad sind häkkeriideaalide nimel panna pealinnas plakatiga marssima, pole nad asjadele pihta saanud. Ilmselt on õige vastus "ole vait ja näita neile programmikoodi".

Kolmanda küsimuse sees on üks keerukas element ehk rekursiivsus. Eespool märkisin, et häkker olemine tähendab osaliselt ka sellesse subkultuuri kuulumist, millel on oma sotsiaalne võrgustik, ühine ajalugu ning sisemine ja välimine külg. Kauges minevikus olid häkkerid palju vähem ühtne ja eneseteadlik rühm kui nad on seda praegu. Kuid sotsiaalse võrgustiku aspekt on kasvanud viimase 30 aastaga, kui Internet on muutnud sidemete arendamise ja säilitamise häkkerikultuuri tuumikuga palju lihtsamaks. üks lihtne näide selle muutuse kohta on fakt, et sel sajandil on meil oma T-särgid.

Sotsioloogid, kes uurivad häkkerite omaga sarnaseid võrgustikke ja nimetavad neid "nähtamatuteks ülikoolideks", on esile tõstnud üht selliste võrgustike omadust: neil on uksehoidjad ehk autoriteetsed tuumikliikmed, kelle otsustada on uute liikmete vastuvõtt võrgustikku. Kuna häkkerikultuuri "nähtamatu ülikool" on lõdvalt seotud ja mitteformaalne, on seda ka uksehoidja roll. Kuid kõik häkkerid tajuvad, et mitte iga häkker pole uksehoidja. Uksehoidjal peab olema piisavalt kogemust ja saavutusi, enne kui nad selle staatuse saavad. Kui palju täpselt, on raske öelda, ent häkker teab seda, kui ta seda näeb.

K: Kas sa õpetaksid mind häkkima?

V: Alates selle lehe esmakordsest avaldamisest olen ma saanud inimestelt mitmeid kirju nädalas (vahel mitu tükki päevas) palvega "õpeta mulle kõike, mida häkkimisest tead". Paraku ei ole mul selleks ei aega ega energiat - minu enda häkkeriprojektid ning töö avatud lähtekoodi eestkõnelejana võtavad 110% mu ajast.

Isegi kui ma seda teeksin, on häkkimine eeskätt suhtumine ja oskused, mida pead ise enda juures arendama. Sa leiad varsti, et kuigi tõelised häkkerid on valmis sind aitama, ei austa nad sind, kui sa eeldad vajadust kõike sulle valmiskujul lusikaga suhu toppida. Õpi esmalt mõni üksik asi ära. Näita, et sa püüad, et sa suudad iseseisvalt õppida. Siis mine häkkerite juurde juba konkreetsete küsimustega.

Kui sa saadad mõnele häkkerile nõuküsimiseks e-kirja, siis tasub teada kaht asja. Esiteks oleme leidnud, et laisa või hooletu kirjutamisstiiliga inimesed on harilikult liiga laisad ja hooletud oma mõtlemises, et olla head häkkerid - niisiis jälgi oma õigekirja ning kasuta õiget grammatikat ja kirjavahemärke, vastasel juhul sind ilmselt eiratakse. Teiseks, ära palu vastust teisele aadressile kui see, kust oma kirja saadad. Tihti on sellised inimesed sulid, kes kasutavad teistelt pihta pandud kasutajakontosid, sulidega aga pole meil mingit huvi tegeleda.

K: Kust ma siis alustama peaks?

V: Parim viis alustamiseks oleks ehk minna mõne Linuxi kasutajarühma kokkusaamisele. Selliseid rühmi leiab veebist näiteks LDP Linuxi infolehelt - ilmselt on mõni neist sinu lähedal, võib-olla ülikoolis või kolledžis. Rühma liikmed annavad sulle küsimise peale tõenäoliselt nii Linuxi kui ka aitavad sul seda paigaldada ja kasutama hakata.

K: Millal ma peaks alustama? Või olen juba hiljaks jäänud?

V: Iga vanus, kus sul on piisavalt motivatsiooni alustamiseks, on sobilik. Enamik inimesi näib huvituvat 15. ja 20. eluaasta vahel, kuid ma tean erandeid mõlemas suunas.

K: Kui kaua mul häkkima õppimine aega võtab?

V: Sõltub sellest, kui andekas sa oled ja kui kõvasti sa tööd teed. Enamik inimesi suudab piisava keskendumise korral saavutada korraliku oskustepagasi 18 kuu kuni kahe aastaga. Kuid ära arva, et sellega on kõik - häkkimises (nagu paljudes muudeski kunstides) läheb meisterlikkuse omandamiseks oma kümme aastat. Ja kui sa oled tõeline häkker, siis kestab õppimine ja oma oskuste täiustamine kogu elu.

K: Kas Visual Basic on alustamiseks sobiv keel?

V: Kui sa nõnda küsid, on peaaegu kindel, et mõtled proovida häkkimist Microsoft Windowsis. See on iseenesest halb idee. Kui ma eespool võrdlesin üritust õppida Windowsis häkkima üritusega õppida tantsima üle kere lahases olles, ei teinud ma nalja. Ära mine sinna. See on inetu ja jääb alati inetuks.

Visual Basic'ul on veel üks konkreetne häda - ta pole porditav muudele süsteemidele. Kuigi prototüüpsed avatud lähtekoodiga Visual Basicu variandid on olemas, katab ECMA standard üksnes väikest osa selle programmeerimisliidestest. Windowsi platvormil on enamik selle teekidest ühe tootja (Microsofti) omanduses - kui sa pole ülihoolikas oma kasutatavate meetodite valikul (ja enamasti algaja seda ei suuda), jääd sa kinni nendele platvormidele, mida Microsoft suvatseb toetada. Kui alustad Unixis, on saadaval palju paremaid keeli paremate teekidega. Näiteks Python.

Veel - nagu teisedki Basicud, on Visual Basic kehvasti disainitud keel, mis õpetab sulle halbu programmeerimisharjumusi. Ei, ära küsi üksikasju - nende selgitamine võtaks terve raamatu. Õpi parem mõnd hästidisainitud keelt.

Üks neist halbadest harjumustest on muutumine sõltuvaks üheainsa tootja teekidest, alamprogrammidest ja arendusvahenditest. Üldiselt öeldes - iga keel, mis pole täielikult toetatud vähemalt Linuxi ja ühe BSD poolt ja/või vähemalt kolme erineva pakkuja operatsioonisüsteemidel, on kehv valik häkkimise õppimiseks.

K: Kas sa aitaksid mul süsteeme kräkkida või õpetaksid mind kräkkima?

V: Ei. Igaüks, kes peale selle teksti läbilugemist ikka sihukesi asju küsib, on õpetamiseks liiga loll - isegi kui mul oleks õpetamiseks aega. Sellelaadseid e-kirju ma kas ignoreerin või vastan neile väga pahasti ütlemisega.

K: Kuidas ma saaksin teada kellegi teise parooli?

V: See on kräkkimine. Keri minema, idikas.

K: Kuidas ma saan muukida/lugeda kellegi teise e-postkasti?

V: See on kräkkimine. Hakka astuma, jobu.

K: Kuidas ma saan näpata endale IRC kanali operaatoriprivileegid?

V: See on kräkkimine. Lase jalga, kretiin.

K: Mu arvutisse murti sisse. Kas sa aitaksid mul edaspidi rünnakutest hoiduda?

V: Ei. Seni alati, kui minult on seda küsitud, on selle taga olnud mõni vaene tuhajuhan, kes kasutab Microsoft Windowsi. Windowsi pole kräkkimise vastu võimalik efektiivselt kindlustada - koodis ja arhitektuuris on lihtsalt liiga palju vigu, mis teeb sellisest üritusest sama mõttetu kui paadi veest tühjendamise sõela abil. Ainus kindel rünnakute vältimine tähendab siirdumist Linuxile või mõnele muule süsteemile, mis vähemalt võib olla turvaline.

K: Mul on probleeme Windowsi tarkvaraga. Ka sa aitaksid mind?

V: Jah. Võta lahti DOS-i käsurida ja kirjuta "format c:". Kõik probleemid kaovad mõne minutiga.

K: Kust ma leian mõne ehtsa häkkeri, kellega rääkida?

V: Parim viis on otsida mõni kohalik Unixi või Linuxi kasutajarühm ja minna nende koosolekule (rea viiteid gruppide nimekirjadele leiad LDP veebist).

(Varem ütlesin siin, et IRC'st tõelisi häkkereid ei leia, kuid olen hakanud aru saama, et see on muutumas. Nähtavasti on mitmed pärishäkkerite kogukonnad nagu GIMPi ja Perli häkkerid avanud oma IRC kanalid.)

K: Kas sa oskad soovitada häid raamatuid häkkimise teemadel?

V: Ma haldan Linux lugemismaterjali nimekirja, mis võib sulle siin abiks olla. Loginataka võib ka huvi pakkuda.

Pythoni kohta vaata nende veebist algajaile mõeldud materjale.

K: Kas häkkeriks saamiseks pean ma hästi matemaatikat oskama?

V: Ei. Häkkimine kasutab väga vähe formaalset matemaatikat või aritmeetikat. Peaaegu kindlasti ei vaja sa trigonomeetriat, diferentsiaal- ja integraalarvutust ega matemaatilist analüüsi (erandi moodustavad mõned spetsiifilised valdkonnad nagu 3D-graafika). Mõningased teadmisest formaalsest loogikast ja Boole'i algebrast aga tulevad kasuks, samuti hulga- ja graafiteooria ning kombinatoorika aluste tundmine.

Palju tähtsam on võime matemaatikute kombel loogiliselt mõelda ning järgida tuletusahelaid. Ehkki enamik matemaatikast sind otseselt ei aita, läheb sul tarvis matemaatikas vajatavat distsipliini ja intelligentsi. Ilma intelligentsita pole sul häkkerina erilist lootust - kui puudub distsipliin, on viimane aeg seda arendada.

Minu arust on üheks heaks viisiks selgitada, kas sul on vajaminevad omadused olemas, võtta kätte Raymond Smullyani raamat What Is The Name Of This Book?. Smullyani mänglev loogika vastab paljus häkkerivaimule - kui suudad tema ülesandeid lahendada, on hea - kui need sulle meeldivad, on veelgi parem.

K: Millisest keelest peaksin alustama?

V: XHTMList (HTMLi värskeim dialekt), kui sa seda juba ei oska. Kehvasid HTMLi õpikuid on paraku väga palju ja häid masendavalt vähe. Minu arust parim on HTML: The Definitive Guide.

HTML aga pole päris programmeerimiskeel. Kui sa oled valmis alustama programmeerimisega, soovitaksin alustada Pythonist. Paljud soovitavad Perli ja Perl on endiselt populaarsem kui Python, kuid see on raskem ning (minu arvates) mitte nii hästi disainitud.

C on väga tähtis, kuid ka palju raskem kui Python või Perl. Ära ürita seda esimesena õppida.

Windowsi kasutajad, ärge valige Visual Basicut. See õpetab teile halbu harjumusi ning ei ole porditav Windowsist väljapoole. Hoiduge sellest eemale.

K: Millist riistvara mul vaja läheb?

V: Vanasti olid personaalarvutid kehva jõudluse ja mälumahuga, seades nii kunstlikke piiranguid häkkeri õppeprotsessile. Alates 1990-ndate keskpaigast pole see enam nii - iga Intel 486DX50-st parem masin on rohkem kui piisav arendustööks, X-i ja võrgusuhtluse rakendusteks. Kõige pisemad müügilolevad kõvakettad on enam kui piisavad.

Tähtis on aga valida õppimiseks arvuti, mille riistvara toetab Linuxit (või BSD-d, kui valid selle tee). Taas on see nii enamiku moodsate arvutite juures. Ainsad kahtlased valdkonnad on modemid ja WiFi-kaardid - mõnedes arvutites on Windowsi-spetsiifilised lahendused, mis Linuxiga ei tööta.

Riistvara ühilduvuse kohta on olemas vastav KKK.

K: Ma tahaks ka kaasa lüüa. Oskad sa mulle pakkuda lahendamiseks mõnda probleemi?

V: Ei, sest ma ei tea sinu andeid ega huvisid. Sa pead ise leidma motivatsiooni, muidu sa ei jää püsima - seepärast ei ole suuna etteandmine teiste poolt peaaegu kunagi hea idee.

K: Kas ma pean vihkama ja kiruma Microsofti?

V: Ei, ei pea. Mitte et Microsoft poleks põlgust väärt, kuid häkkerikultuur oli olemas kaua enne Microsofti ning on ka siis, kui Microsoft on ammu ajalugu. Microsofti vihkamisele kuluvat energiat on palju parem kasutada oma kunsti armastamiseks. Kirjuta head koodi - see näitab Microsoftile piisavalt hästi koha kätte.

K: Kuid kas avatud lähtekood ei võta programmeerijailt ära võimalust elatist teenida?

V: See on ebatõenäoline - seni on avatud tarkvara pigem loonud töökohti kui neid ära kaotanud. Kui programmi loomisele tehtud kulutused end majanduslikult ära tasuvad, saab programmeerija oma töötasu, ükskõik kas programm on avatud koodiga või ei. Ja ükskõik kui palju vaba tarkvara luuakse, jääb alati alles vajadus uute ja kohandatud rakenduste järele. Ma olen kirjutanud sel teemal põhjalikumalt Open Source'i leheküljel.

K: Kust ma võiksin endale tasuta Unixi saada?

V: Kui sa pole veel oma arvutisse Unixit paigaldanud, siis vaata mujal sellel lehel leiduvaid viiteid, kust saada kõige levinumaid vabu Unixeid. Olemaks häkker, vajad sa motivatsiooni, initsiatiivi ja võimet ennast harida. Tee sellega algust - kohe praegu...

Liugur

Kakupesa avalehele