Forumet - Äntligen hack Guide !

Äntligen hack Guide !

1159 0 14
Hur man blir en hacker




Varför detta dokument?

Som redaktör för Jargon File, får jag ofta frågor via e-post från entusiastiska nätverksnybörjare som undrar (ungefär) "hur kan jag lära mig att bli en hacker?". Märkligt nog verkar det inte finnas några FAQer, eller web-dokument som berör denna viktiga fråga, så här är mitt.

Om du läser en kopia av detta dokument så kan du finna den senaste versionen på http://www1.tripnet.se/~mly/open/faqs/hacker-howto.se.html.

Vad är en hacker?

Jargon File innehåller ett antal definitioner av termen `hacker', som företrädesvis har att göra med teknisk skicklighet och förtjusning över att lösa problem och att övervinna gränser. Fast om du vill veta hur man blir en hacker, så är det bara två som är riktigt relevanta.

Det finns en gemenskap, en gemensam kultur, av programmerings- och nätverksexperter, som spårar sin historia genom decennierna till de första tidsdelade minidatorerna och de första experimenten med ARPAnet. Medlemmarna i denna kultur skapade begreppet 'hacker'. Hackers byggde Internet. Hackers gjorde operativsystemet Unix till vad det är idag. Hackers driver Usenet. Hackers får World Wide Web att fungera. Om du är del av denna kultur, om du har bidragit till den, och om andra människor i den vet att du är, och kallar dig en hacker, så är du en hacker.

Hacker-inställningen är inte begränsad till denna kultur av programvaru-hackers. Det finns folk som tillämpar hacker-attityden på annat, såsom elektronik eller musik -- du kan faktiskt finna den på den högsta nivån av varje vetenskap eller konstart. Programvaru-hackers känner igen denna själarnas gemenskap, och kan kalla även dessa personer 'hackers' -- och vissa menar att hacker-andan är egentligen är oberoende av det specifika medium en hacker arbetar med. I resten av detta dokument kommer vi dock att fokusera på programvaru-hackers förmågor och attityder, och traditionerna i den gemensamma kultur som skapat begreppet 'hacker'.

Det finns en anan grupp människor som ljudligt framställer sig som hackers, men som inte är det. Detta är människor (vanligtvis unga män) som blir upphetsade av att bryta sig in i dator- och telefonsystem. Riktiga hackers kallar dessa människor 'crackers' och vill inte ha något med dem att göra. Riktiga hackers tycker att crackers är lata, oansvariga, och inte vidare begåvade; och invänder att förmågan att kunna bryta sig in i ett datorsystem inte gör dig till en hacker mer än förmågan att tjuvkoppla bilar för dig till fordonskonstruktör. Tyvärr har många journalister och skribenter lurats till att använda begreppet 'hacker' för att beskriva crackers. Dessa är ytterligt irriterande för riktiga hackers.

Den grundläggande skillnaden är: Hackers bygger upp saker, crackers river ner dem.

Om du vill bli en hacker, fortsätt läs. Om du vill bli en cracker, läs nyhetsgruppen alt.2600 och förbered dig på fem till tio år i fängelse efter att du kommit på att du inte var så smart som du trodde. Det är allt jag kommer att säga om crackers.
Hacker-attityden
Hackers löser problem och bygger saker, och de tror på frihet och frivillig, ömsesidig hjälp. För att accepteras som hacker måste du bete dig som att du har denna attityd själv. För att bete dig som om du har denna attityd måste du verkligen tro på den.

Men om du tänker odla hacker-attityden bara för att bli accepterad har du missat hela poängen. Att bli en sådan människa som tror på dessa ideal är viktigt för dig -- för att hjälpa dig att lära, och för att motivera dig. Som med alla kreativa konster är det effektivaste sättet att bli en mästare att ta efter mästarnas inställning -- inte bara intellektuellt, utan även känslomässigt.

Så, om du vill bli en hacker, repetera det följande tills du tror på det:
1. Världen är full av fascinerande problem som väntar på att lösas.
Att vara en hacker är väldigt roligt, men det är roligt på ett arbetsamt sätt. Arbetet kräver motivation. Framgångsrika idrottsmän får sin motivation från den fysiska lyckan i att få sin kropp att åstadkomma något speciellt, att pressa sig förbi sina egna gränser. På samma sätt måste du som hacker få din stimulans från problemlösning, från utveckling av din förmåga och från att utnyttja din intelligens.

Om du inte är den typen av person som känner så här naturligt, så behöver du bli en sådan för att lyckas som hacker. Annars kommer du att finna att den energi du behöver som hacker förslösas på distraktioner som sex, pengar och socialt godkännande.

(Du behöver också utveckla en slags tro på din förmåga att lära dig saker -- en tro på att även om du inte kan allt som behövs för att lösa ett visst problem, så kan du ta dig an en del av det och lära dig från det, och på så sätt lära dig tillräckligt för att ge dig på nästa del -- och så vidare, tills du är klar.)

2. Ingen skulle någonsin behöva lösa samma problem två gånger.
Kreativa hjärnor är värdefulla, begränsade resurser. De borde inte slösas på att uppfinna hjulet en gång till, när det finns så många fascinerande nya problem där ute.

För att bete dig som en hacker, så måste du tro på att den tid andra hackers tänker är en värdefull resurs -- så mycket att det nästan är en moralisk plikt för dig att dela med dig av information, lösa problem och att sedan dela med dig av dina lösningar så att andra hackers kan lösa nya problem istället för att för evigt sysselsätta sig med gamla.

(Du behöver inte känna dig tvungen att skänka bort alla resultat av din kreativitet, även om de hackers som gör det är de som får mest respekt från andra hackers. Det är i enlighet med hacker-värderingar att ta betalt för så mycket av sin kreativitet att man har råd med mat, husrum och datorer. Det är i enlighet med hacker-värderingar att du använder din förmåga som hacker för att finansiera din familj, eller till och med bli rik, så länge du inte glömmer att du är en hacker när du gör det.)

3. Det tråkiga och enformiga är ondskefullt.
Hackers (och kreativa människor i allmänhet) skulle aldrig behöva vara uttråkade eller behöva slava med rutinmässigt, repetitivt arbete, för när det händer innebär det att de inte gör det som bara de kan göra -- lösa nya problem. Denna slösaktighet skadar alla. Därför är det tråkiga och enformiga inte bara obehagligt, utan också ondskefullt.

För att bete dig som en hacker måste du tro tillräckligt mycket på detta för att vilja automatisera bort tråkiga moment så mycket som möjligt. Inte bara för dig själv, utan även för alla andra (speciellt andra hackers).

(Det finns ett uppenbart undantag här. Hackers gör ibland saker som förefaller repetitiva eller tråkiga för utomstående som en övning för att rensa skallen, eller för att erhålla en viss förmåga eller erfarenhet som de annars inte skulle kunna få. Men detta är ett medvetet val -- ingen som kan tänka skulle någonsin tvingas att ha tråkigt.)

4. Frihet är gott.
Hackers är naturligt mot auktoritär makt. Vem som helst som kan beordra dig, kan hindra dig från att lösa det problem som fascinerar dig -- och med tanke på hur auktoritära sinnen fungerar, kommer de förmodligen finna någon förfärligt dum anledning att göra det. Den auktoritära attityden måste därför bekämpas varthän den påträffas, annars kommer den att krossa dig och andra hackers.

(Detta är inte det samma som att bekämpa all överhet. Barn behöver gränser, och kriminella behöver kontrolleras. En hacker kan gå med på en viss överhet för att få något som är viktigare än den tid han lägger på att följa order. Men detta är en begränsad, medveten kompromiss. Den slags personlig kapitulation som auktoritära personer vill ha kan aldrig erbjudas.)

Auktoritära människor lever på censur och hemlighetsmakeri. De misstror frivilligt samarbete och informationsdelning -- de tycker bara om 'samarbete' som det själva styr. Så, för att bete dig som en hacker måste du utveckla en instinktiv fientlighet till censur, hemlighetsmakeri och användning av övermakt eller bedrägeri för att tvinga ansvarskännande vuxna. Du måste dessutom vara beredd att handla i enlighet med din uppfattning.
5. Attityd kan inte ersätta kompetens.
För att bli en hacker måste du utveckla vissa attityder, men att ta till sig en attityd räcker inte för att göra dig till hacker, mer än det skulle räcka för att göra dig till elitidrottsman eller rockstjärna. Att bli en hacker kräver intelligens, övning, engagemang och hårt arbete.

Därför måste du lära dig att misstro attityd och respektera kompetens av varje slag. Hackers låter inte tillgjorda person slösa bort deras tid, men de högaktar kompetens -- speciellt hacker-kompetens, men kompetens på vad som helst är bra. Kompetens på krävande områden som få behärskar är speciellt bra, och kompetens som involverar mental skärpa, hantverksmässighet och koncentration är bäst.

Om du vördar kompetens, kommer du att utveckla det själv. Det hårda arbetet och engagemanget blir en slag intensiv lek istället för slavgöra. Och det är vitalt för att bli en hacker.

Grundläggande hacker-färdigheter
Hacker-attityden är nödvändig, men färdigheterna är ännu viktigare. Attityd kan aldrig ersätta kompetens, och det finns en viss, grundläggande uppsättning färdigheter som du behöver ha innan någon hacker kommer att drömma om att kalla dig hacker.

Denna uppsättning förändras långamt allt eftersom tekniken skapar nya färdigheter och gör andra överflödiga. Till exempel ingick programmering i maskinkod, och HTML har tillkommit nyligen. Just nu ingår tämligen tveklöst nedanstående:

1. Lär dig hur man programmerar.
Detta är givetvis den fundamentala hacker-förmågan. 1997 är det språk du absolut måste lära dig C. (Men det är inte det du ska försöka lära dig först.) Men du är inte en hacker för att du kan ett språk -- du behöver lära dig att tänka om programmeringsproblem på ett allmänt sätt, oberoende av varje specifikt språk. För att bli en riktigt hacker måste nå den punkt där du kan lära dig ett nytt språk på några dagar, genom att relatera det som står i manualen med det du redan kan. Detta innebär att du ska lära dig flera mycket olika språk.

Förutom C, ska du åtminstone lära dig Lisp och Perl (och Java trycker på för att komma in på listan). Förutom att dessa är de viktigaste hacker-språken, så representerar de mycket olika angreppsätt för programmering, och alla kommer att lära dig viktiga saker.

Jag kan inte ge kompletta instruktioner för hur du ska lära dig att programmera här -- det är en komplex aktivitet. Men jag kan säga att böcker och kurser inte kommer att göra det. (Många, kanske de flesta av de bästa hackers är självlärda.) Vad som spelar roll är att (a) läsa kod och skriva kod.

Att lära sig att programmera är som att lära sig att författa. Det bästa sättet är att läsa böcker skrivna av konstens mästare, skriva lite själv, läsa mycket mer, skriva lite mer, läsa mycket mer, skriva lite mer ... och repetera tills din förmåga att skriva börja bli så stark och koncentrerad som dina förebilders.

Det brukade vara svårt att hitta bra kod att läsa, eftersom det fanns få program med källkod som nykläckta hackers kunde läsa och mixtra med. Detta har dramatiskt förändrats. Open Source-program, programmeringsverktyg och operativsystem (som alla byggts av hackers) är nu vitt spridda, vilket elegant för mig till nästa ämne...
2. Skaffa en open-source-unix och lär dig att använda den.
Jag antar att du har en persondator, eller att du kan få tillgång till en (dagens ungdomar har det så enkelt :-)). Det viktigaste steg en nybörjare kan ta mot för att skaffa hacker-förmåga är att få fatt på en kopia av Linux eller en BSD-Unix, installera det på en persondator, och köra det.

Ja, det finns andra operativsystem i världen utom Unix, men de distribueras i binär-form -- du kan inte läsa koden, och du kan inte modifiera den. Att försöka lära sig att hacka på en DOS- eller Windows-dator eller under MacOS är som att försöka lära sig dansa med hela kroppen gipsad.

Dessutom är Unix Internets operativsystem. Även om du kan lära dig att använda Internet utan att kunna Unix, kan du inte bli en Internet-hacker utan att förstå det. Därför är hacker-kulturen idag tämligen Unix-centrerad. (Det var inte alltid så, och vissa äldre hackers är inte helt förtjusta, men symbiosen mellan Unix och Internet har blivit så stark att inte ens Microsoft verkar kunna rå på den på allvar.)

Så, få igång en Unix -- jag själv gillar Linux, men det finns andra vägar. Lär dig den. Kör den. Mixtra med den. Prata med Internet med den. Läs koden. Modifiera koden. Du får bättre programmeringsverktyg (inkluderande C, Lisp och Perl) än något operativsystem från Microsoft du kan drömma om. Du kommer att ha kul, och du kommer att suga upp mer kunskap än du kommer att inse förrän du ser tillbaka på det som mäster-hackare.

För mer om att lära sig Unix, se The Loginataka [engelsk].

För att få fatt på Linux, se Where To Get Linux [engelsk].
3. Lär dig att använda world wide web och att skriva HTML.
De flesta saker hacker-kulturen byggt gör sitt jobb i det fördolda, och hjälper fabriker, kontor och universitet utan att ha något uppenbart inflytande på hur icke-hackers lever. World wide web är det stora undantaget, den enorma, glänsande hacker-leksaken som till och med politiker medger förändrar världen. Av detta skäl (liksom av många andra goda orsaker) behöver du lära dig hur du arbetar med webben.

Detta handlar inte om att kunna använda en web-bläddrare (vem som helst kan göra det), utan att lära sig hur man skriver HTML, webbens uppmärkningsspråk. Om du inte kan programmera så kommer du att lära dig lite av de mentala vanor som underlättar lärandet genom att skriva HTML. Så skapa en hemsida.

Men att ha en hemsida för dig inte i närheten av att vara en hacker. Webben är full av hemsidor. Det mesta är en meningslös, innehållslös sörja. Visserligen en sörja som ser väldigt häftig ut, men ändå en ren sörja. (För mer om detta, se The HTML Hell Page [engelsk]).

För att vara meningsfull måste din sida ha innehåll -- den måste vara intressant och/eller användbar för andra hackers. Det för oss till nästa ämne...
Status i hacker-kulturen
Liksom de flesta kulturer utan penning-ekonomi drivs hacker-kulturen av ryktbarhet. Du försöker lösa intressanta problem, men hur intressanta de är, och om dina lösningar är riktigt bra, är något som bara dina tekniska jämlikar eller övermän kan avgöra.

Därför lär du dig, när du spelar med i hacker-spelet, att räkna poäng huvudsakligen genom vad andra hackers tycker om din förmåga. (Det är därför du inte är en hacker förrän andra hacker konsekvent kallar dig hacker.) Detta döljes av bilden av hacker-jobb som ensamt arbete, och av ett hacker-kulturellt tabu (avtagande men ändå verksamt) mot att erkänna att det egna egot eller utomståendes omdömen på något sätt påverkar ens motivation.

Hacker-kulturen är vad antropologer kallar en gåvo-kultur. Status och ryktbarhet får du inte genom att dominera andra människor, utan genom att skänka bort saker. Specifikt, genom skänka bort din tid, din kreativitet och resultaten av din kreativitet.

Det finns i princip fem saker som du kan göra för att få respekt från andra hackers:

1. Skriv open-source-program.
Det första (mest centrala och mest traditionella) är att skriva program som andra hackers tycker är kul eller användbara, och att ge källkoden till hela hacker-kulturen.

(Vi brukade kalla dessa verk fri programvara, eller "free software", men det förvirrade många som inte riktigt förstod vari friheten bestod. Många av oss föredrar nu termen "open-source"-program) [engelsk länk].

Hacker-kulturens mest vördade husgudar är människor som har skrivit stora, användbara program som tillfredställt ett vida spritt behov och skänkt bort dem, så att alla använder dem nu.

2. Hjälp till att testa och avlusa open-source-program
Även de som testar och avlusar andras program är till hjälp. I den operfekta värld är det ofrånkomligt att vi spenderar den större delen av vår programvaruutvecklingstid i avlusningsfasen. Det är därför som varje tänkande open-source-utvecklare talar om för dig att bra beta-testare (som vet hur de ska beskrive symptom klart, lokalisera problem väl, kan tolerera fel i en snabb-uppdatering av programmet och som är villiga att tillämpa några få diagnostiska rutiner) är värda sin vikt i rubiner. Bara en av dessa kan vara skillnaden mellan en avlusningsfas som är en utdragen, utmattande mardröm eller bara ett smärre obehag.

Om du är nybörjare, försök hitta ett program under utveckling som du är intresserad av, och var en bra beta-testare. Det finns en naturlig utveckling från att hjälpa till att testa program till att hjälpa till att modifiera dem. På detta sätt lär du dig mycket, och genererar god karma hos folk som senare kommer att hjälpa dig.
3. Publicera användbar information.
En annan bra sak är att samla och filtrera användbar och intressant information till web-sidor eller dokument som FAQer (Frequently Asked Questions = ofta ställda frågor), och att göra dessa allmänt tillgängliga.

De som sköter om de stora tekniska FAQerna får nästan lika mycket respekt som de som skriver open-source-program.

4. Hjälp till att hålla igång infrastrukturen.
Hacker-kulturen (och den tekniska utvecklingen av Internet för den delen) drivs av frivilliga. Det finns mycket nödvändigt men oglamoröst arbete som behöver göras för att hålla det snurrande -- administration av e-post-listor och nyhetsgrupper, underhåll av stora programvaruarkiv, utveckling av RFCer och andra tekniska standarder.

Folk som gör sådant väl får mycket respekt, för alla vet att dessa jobb är mycket tidskrävande och inte så kul som att leka med kod. Att göra dem visar på hengivelse.

5. Betjäna själva hacker-kulturen.
Till sist kan du betjäna och utveckla kulturen själv (till exempel genom att skriva en korrekt introduktion om hur man blir en hacker :-)). Detta är inget du har möjlighet att göra förrän du varit med ett tag, och blir välkänd för någon av de fyra tidigare sakerna.

Hacker-kulturen har inte precis några ledare, men den har hjältar och stam-äldste och historiker och talesmän. När du har varit i skyttegravarna tillräckligt länge kan du växa till att bli en av dem. Akta dig: Hackers misstror skräniga egon bland sina äldste, så att synligt sträcka sig efter detta slags berömmelse är farligt. Snarare än att sträva efter det, behöver du sätta dig så att det trillar ner i ditt knä, och sedan vara ödmjuk och värdig för din status.

Hacker/nerd-kopplingen
I motsats till folktron behöver du inte vara en nerd för att vara en hacker. Det hjälper dock, och mången hacker är faktiskt en nerd. Att var socialt utstött hjälper dig att koncentrera dig på riktigt viktiga saker, som att tänka och hacka.

Av detta skäl har många hackers tagit till sig etiketten 'nerd' eller till och med den hårdare termen 'geek' som ett äro-märke -- det är ett sätt att deklarera sitt oberoende från normala sociala förväntningar. Se The Geek Page [engelsk] för omfattande utläggning.

Om du klarar av att koncentrera dig så mycket på hackandet att det går bra samtidigt som du har ett socialt liv så är det bra. Det är mycket lättare idag än när jag var en nybörjare på 70-talet. Folk i allmänhet är mycket mer positiva till en teknik-nerd idag. Det finns till och med en växande skara som förstår att hackers ofta är utmärkta älskare och makar. För mer om detta, se: Girl's Guide to Geek Guys [engelsk].

Om du dras till hacker-kulturen för att du inte har något socialt liv så är det också OK -- du kommer ha mindre bekymmer med koncentrationen. Du kanske får ett riktigt liv senare.
Stilpoäng
Alltså, för att bli hacker måste du tänka och känna som en hacker. Det finns saker du kan göra när du är ifrån datorn som verkar hjälpa. De är ingen ersättning för att hacka (det finns inte) men många hackers gör detta, och känner att det knyter an till kärnan i hackandet.

* Läs science fiction. Besök science fiction-konvent (ett bra sätt att träffa hackers och proto-hackers).
* Studera Zen, och/eller börja med kampsporter. (Den mentala disciplinen förefaller vara liknande på viktiga sätt.)
* Utveckla ett analytiskt öra för musik. Lär dig att uppskatta specifika musikstilar. Lär dig att spela något instrument väl, eller att sjunga.
* Utveckla din känsla för ordlekar.
* Lär dig att skriva ditt modersmål väl. (En förvånande andel av hackers, inklusive alla de bästa jag känner till, är begåvade skribenter.)

Ju mer av dessa saker du gör, desto mer sannolikt är det att du har vad som krävs för att bli en hacker. Det är inte helt klart varför just dessa saker spelar roll, men de är kopplade till en blandning av förmågor i både vänstra och högra hjärnhalvan som förfaller viktig. (Hackers behöver både kunna resonera logiskt och kunna kliva ur ett problems givna logik på ett ögonblick.)

Till slut, några saker att inte göra.

* Använd inte löjliga eller överdrivna användaridentiteter el dyl.
* Låt dig inte dras in i ordkrig på Usenet (eller någon annan stans).
* Kalla dig inte 'cyberpunk', och slösa inte tid på någon som gör det.
* Skriv inte inlägg eller e-post fulla av stavfel eller dålig grammatik.

Det enda rykte du får om du gör dessa saker är som idiot. Hackers har gott minne -- det kan ta åratal att bli accepterad efter sådant.

Andra resurser
Loginataka [engelsk] har en del att säga om ordentlig träning och attityd för en Unix-hacker.

Jag har också skrivit A Brief History Of Hackerdom. [engelsk]

Peter Seebach sköter om en utmärkt Hacker FAQ [engelsk] för chefer som inte vet hur de ska hantera hackers.

Jag har skrivit ett papper, The Cathedral and the Bazaar, [engelsk] som förklarar mycket om hur Linux och open-source-kulturer fungerar.

Vanliga frågor (FAQ)
Fråga: Kan du lära mig hur man hackar?
Sedan jag först publicerade denna sida, har jag varje vecka fått ett flertal förfrågningar från folk om "lär mig allt om hur man hackar". Tyvärr har jag varken tid eller ork att göra det; mina egna projekt tar 110% av min tid.

Även om jag kunde, så är hackande en attityd och förmåga du huvudsakligen måste lära dig själv. Medan du kommer att märka att hackers vill hjälpa dig, så kommer de inte att respektera dig om du ber dem att sked-mata dig med allt de kan.

Lär dig några saker först. Visa att du försöker, att du kan lära dig själv. Gå sedan till hackers du träffar med dina frågor.

Fråga: Var kan jag hitta några riktiga hackers att prata med?
Det bästa sättet är att leta upp en lokal användargrupp för Unix eller Linux, och att gå på deras möten. (Du kan hitta länkar till ett flertal listor med användargrupper på Linux Documentation Project [engelsk] på Sunsite).

(Här brukade jag säga att det inte finns några riktiga hackers på IRC (chat), men så vitt jag förstår ändras detta. Tydligen finns riktiga hacker-sällskap knutna till saker som GIMP och Perl som har egna IRC-kanaler nu.)

Fråga: Vilket språk ska jag lära mig först?
HTML om du inte redan kan det. Det finns gott om glättiga, pratiga och dåliga HTML-böcker på marknaden, och bekymmersamt ont om bra. Den jag gillar bäst är HTML: The Definitive Guide. [engelsk]

När du är redo att börja programmera skulle jag rekommendera att du börjar med Perl eller Python [engelska länkar]. C är verkligen viktigt, men det är också mycket svårare.

Fråga: Men kommer inte open-source-program göra det omöjligt för programmerare att tjäna pengar?
Det verkar osannolikt -- än så länge verkar open-source-industrin skapa jobb snarare än att ta bort dem. Om det är mer lönsamt att få ett program skrivet än att inte få det skrivet, så kommer programmeraren att betalt oavsett om programmet kommer att vara fritt efteråt eller inte. Och oavsett hur mycket fri programvara som skrivs, så verkar det alltid finnas behov av mer kundanpassade program.
Fråga: Hur kommer jag igång? Var hittar jag fri Unix?
På andra ställen i detta dokument finns referenser till var du får fatt på Linux. För att bli en hacker behöver du motivation, initiativ och förmågan att lära dig själv. Börja nu...

Spana också in: