Come diventare un hacker | |
Traduzione italiana del famoso documento "How To Become A Hacker". |
Andrea Ferraresso |
Introduzione La versione originale di questo documento (il cui titolo originale è 'How To Become A Hacker') si trova qui:
http://www.tuxedo.org/~esr/faqs/hacker-howto.html
ed è stata scritta da Eric S. Raymond.
Il testo è stato tradotto da Andrea Ferraresso (ferraresso@programmazione.it). Le note NdT che si trovano nel testo sono le Note del Traduttore. Questo testo è stato tradotto nel mese di dicembre 2001. Perché questo documento Come curatore di Jargon File http://www.tuxedo.org/jargon e autore di pochi altri (ma ben conosciuti) documenti simili, mi capita spesso di ricevere email da parte di principianti entusiasti che mi chiedono”'come posso diventare un mago dell'hacking?”. Ecco, allora, il mio pensiero a riguardo. Esposto in maniera abbastanza singolare da non assomigliare ad una qualsiasi altra FAQ o ad altro documento web che affronti questa vitale questione. (NdT: FAQ = Frequently Asked Questions = Domande Poste più di Frequente). Se stai leggendo questo documento offline, o se stai leggendo una traduzione, la versione corrente si trova a questo indirizzo: http://www.tuxedo.org/~esr/faqs/hacker-howto.html. Sempre allo stesso indirizzo sono disponibili i link verso le numerose traduzioni disponibili. Nota: c'è una lista di Frequently Asked Questions alla fine di questo documento. Per favore leggila un paio di volte prima di mandarmi un'email con richieste riguardo all'argomento che sto affrontando ora. Cos'è Un Hacker? Il Jargon File http://www.tuxedo.org/jargon contiene una quantità di significati del termine “hacker”, molti dei quali hanno a che fare con l'attitudine tecnica e il piacere di risolvere problemi e superare limiti. Se vuoi sapere come diventare un hacker, comunque, solo due definizioni solo realmente rilevanti. Esiste una comunità, una cultura condivisa, di programmatori esperti e maghi della rete per trovare le origini della quale dobbiamo andare indietro nei decenni, fino ai tempi dei primi minicomputer funzionanti in time-sharing o dei primi esperimenti con ARPAnet. I membri originari di questa 'civiltà' generarono il termine 'hacker'. Gli hacker costruirono Internet. Gli hacker costruirono il sistema operativo Unix così come lo conosciamo oggi. Sempre grazie agli hacker abbiamo avuto Usenet e il World Wide Web. Se tu sei parte di questa cultura, se hai dato il tuo contributo e altre persone che ne fanno parte ti conoscono e ti chiamano hacker, tu sei un hacker. La predisposizione mentale dell'hacker non è confinata alla cultura dell'hacking del software. Ci sono personaggi che hanno applicato la propria attitudine hacker ad altre cose, come ad esempio all'elettronica o alla musica - puoi veramente trovarla ai più alti livelli di qualsiasi scienza o arte. Gli hacker del software riconoscono queste anime affini e le possono anche definire 'hacker' - e qualcuno sostiene che la natura hacker sia realmente indipendente dal medium con il quale l'hacker si esprime. Ma nel resto del documento noi focalizzeremo l'attenzione sulle capacità e sugli atteggiamenti degli hacker del software, e sulle tradizioni di quella cultura che originò il termine 'hacker'. C'è un altro gruppo di persone le quali ad alta voce si definiscono hacker, ma non lo sono. Queste sono persone (principalmente adolescenti maschi) che provano piacere a penetrare nei computer e a compiere azioni di phreaking al sistema telefonico. I veri hacker chiamano questi personaggi 'cracker' e non vogliono avere nulla a che fare con loro. I veri hacker, per lo più, pensano che i cracker siano pigri, irresponsabili e non troppo svegli, e obiettano che imparare a compiere atti di pirateria informatica non ti fa hacker più di quanto imparare a scassinare macchine ti faccia diventare ingegnere meccanico. Sfortunatamente, molti giornalisti e scrittori utilizzato stupidamente il termine 'hacker' per descrivere i cracker, e questo irrita infinitamente i veri hacker. La differenza di base è questa: gli hacker costruiscono cose, i cracker le rompono. Se tu vuoi diventare un hacker, continua a leggere. Se vuoi diventare un cracker, vai a leggere il newsgroup alt.2600 (news:alt.2600). E questo è tutto quello che avevo intenzione di dire circa i cracker.
|
L'atteggiamento dell'hacker
Gli hackers risolvono problemi e costruiscono cose, e credono nella libertà e nell'aiuto reciproco. Per essere accettato come hacker, devi comportarti come se anche tu avessi questo tipo di atteggiamento. E per comportarti come se avessi questo atteggiamento, devi crederci con convinzione.
Ma se pensi che coltivare l'atteggiamento da hacker sia solo un modo per accrescere l'accettazione nella comunità, stai sbagliando. Diventare il tipo di persona che crede in queste cose è importante soprattutto per te stesso - per aiutarti a imparare e per mantenerti motivato. Come per tutte le arti creative, il modo più efficace di diventare un maestro è imitare l'atteggiamento mentale dei maestri - non solo dal punto di vista intellettualmente ma anche da quello affettivo.
Ora, il seguente poema Zen (moderno) dice: “per seguire il percorso”:
· cerca il Maestro;
· segui il Maestro;
· cammina con il Maestro;
· guarda attraverso il Maestro;
· diventa il Maestro.
Così, se tu vuoi diventare un hacker, ripeti le seguenti cose fino a che non credi in loro:
1. Il mondo è pieno di affascinanti problemi che aspettano di essere risolti
Diventare un hacker è molto divertente, ma è un tipo di divertimento che necessita di un sacco di fatica. La fatica necessita di motivazione. Gli atleti di successo traggono la loro motivazione dalla possibilità di effettuare delle performance che li spingono a superare i propri limiti fisici. In maniera simile, per essere un hacker devi provare una forte eccitazione dal risolvere problemi, affinando le tue abilità ed esercitando la tua intelligenza.
Se sei un tipo di persona non che sente queste cose naturalmente, dovrai diventare così prima di tentare di raggiungere le vette dell'hacking. Altrimenti scoprirai che la tua energia hacker è fiaccata da distrazioni come il sesso, il denaro e il desiderio di approvazione sociale.
(Dovresti anche sviluppare una fede speciale nelle tue capacità di apprendimento - un credo secondo cui anche se non sei in grado di sapere tutto ciò che sarebbe necessario per risolvere un problema, se ne affronti solo un pezzetto e ce la fai, hai imparato abbastanza da passare al pezzetto successivo - e così via finché non ce l'avrai fatta del tutto.)
2. Nessun problema dovrebbe essere risolto due volte
Le menti creative sono una risorsa limitata e di valore. Essi non dovrebbero sprecarsi a re-inventare la ruota quando ci sono molti nuovi affascinanti problemi che aspettano lì fuori.
Per comportarsi come un hacker, devi convincerti che il tempo speso dagli altri hacker a pensare è prezioso - così tanto che è quasi un dovere morale condividere le informazioni, risolvere problemi e successivamente diffondere le soluzioni, in modo che gli altri hacker possano risolvere nuovi problemi al posto di doverne ri-risolvere di vecchi.
(Non devi pensare di essere obbligato a regalare tutto il tuo prodotto creativo, sebbene gli hacker che lo fanno siano quello che attirano più rispetto dagli altri hacker. È coerente con i valori dell'hacker venderne abbastanza di esso per ottenere cibo, affitto e computer. È bello usare le tue abilità di hacker per sostenere una famiglia e se diventi ricco, non dimenticare la lealtà verso la tua arte e i tuoi compagni hacker.)
3. La noia e i lavori stupidi sono il male
Gli hacker (e le persone creative in generale) non dovrebbero mai essere annoiati o doversi affaticare con un lavoro stupido e ripetitivo, poiché quando questo accade significa che non stanno facendo l'unica cosa che dovrebbero fare: risolvere nuovi problemi. Questo processo di spreco è dannoso per tutti quanti. Quindi la noia e la ripetitività non sono solo spiacevoli, sono realmente il male.
Per comportarti come un hacker, devi credere in questo abbastanza da voler automaticamente allontanare il più possibile tutto ciò che è noioso, non solo per te stesso ma per tutti gli altri (specialmente gli altri hacker).
(Esiste un'unica apparente eccezione a questa regola. Gli hacker, a volte, fanno delle cose che possono sembrare ripetitive o noiose ad un osservatore, come esercizi per ripulire la mente o allo scopo di acquisire capacità o provare qualche tipo di esperienza. Ma questa è una scelta - nessun pensatore dovrebbe essere forzato a operare in una situazione tediosa.)
4. La libertà è buona
Gli hacker sono degli anti-autoritari per natura. Chiunque possa darti degli ordini, può fermati dal risolvere problemi dai quali tu sei affascinato - e, visto il modo con cui le menti autoritarie funzionano, tali ordini generalmente saranno motivati da ragioni orribilmente cretine. Così, l'atteggiamento autoritario deve essere combattuto ovunque si trovi, affinché non soffochi te e gli altri hacker.
(Ciò non è la stessa cosa che combattere tutte le forme di autorità. I bambini hanno bisogno di essere guidati e i criminali devono essere fermati. Un hacker potrebbe essere d'accordo nell'accettare qualche tipo di autorità allo scopo di ottenere qualcosa alla quale tiene di più che al tempo speso a eseguire ordini. Ma questo è un caso limitato, un patto del tipo dare-avere; il tipo di resa personale che gli autoritari vorrebbero non è in discussione.)
Gli autoritari prosperano sulla censura e sulla segretezza. E distruggono la cooperazione volontaria e lo scambio di informazioni - l'unica 'cooperazione' che piace a loro è quella sotto il loro controllo. Così, per agire come un hacker, devi sviluppare un'istintiva avversione verso la censura, la segretezza e l'uso della forza o dell'inganno utilizzati nei confronti delle persone adulte. E devi essere disposto a mettere in atto questo credo.
5. L'atteggiamento non è un'alternativa alla competenza
Per essere un hacker, devi sviluppare questi atteggiamenti. Ma l'atteggiamento da solo non basta a fare di te un hacker, non più di quanto ti faccia diventare un atleta di successo o una star del rock. Per diventare un hacker c'è bisogno di intelligenza, pratica, dedizione e lavoro duro.
Prima di tutto, devi imparare a diffidare degli atteggiamenti e a rispettare le competenze di ogni genere. Gli hacker non perdono tempo con i poser (NdT: un 'poser' è qualcuno che ama farsi notare, al di là delle proprie capacità reali; nel mondo dello skateboard è qualcuno che ama le esibizioni che fanno scena, ma tecnicamente piuttosto semplici), ma adorano la competenza - specialmente la competenza nell'hacking, ma la competenza è buona in genere. In particolar modo è ottima una competenza in alcune capacità che pochi hanno, ancora meglio se sono capacità quali una mente brillante, astuzia e concentrazione.
Se veneri la competenza, ti divertirai a svilupparla in te stesso - il duro lavoro e la dedizione diventeranno una sorto di gioco intenso invece che una sfacchinata. E ciò è vitale per diventare un hacker.
Capacità basilari dell’hacker
L'attitudine hacker è vitale, ma le capacità lo sono ancora di più. L'attitudine non è la sostituta della competenza, e c'è un insieme di capacità di base che tu devi avere prima che qualsiasi hcker si sogni di chiamarti così.
Questo bagaglio di conoscenze cambia lentamente nel tempo, quando la tecnologia crea nuove abilità e ne rende obsolete altre. Per esempio, il bagaglio di conoscenze standard, di solito include la programmazione in linguaggio macchina e solo di recente include l'HTML. Ma in questo momento il bagaglio di conoscenze 'obbligatorie' prevede questo:
1. Impara a programmare
Questa, ovviamente, è la capacità fondamentale per l'hacker. Se non conosci alcun linguaggio di programmazione, ti raccomando di partire con Python. È progettato in maniera chiara, ben documentato e abbastanza adatto ai principianti. Malgrado sia un buon linguaggio con il quale cominciare, non è proprio un giocattolo; è molto potente e flessibile e adatto anche a grandi progetti. Ho scritto una più dettagliata recensione su Python la trovi qui: http://noframes.linuxjournal.com/lj-issues/issue73/3882.html. Dei buoni tutorials http://www.python.org/doc/Intros.html sono disponibili sul sito web di Python http://www.python.org/.
Anche Java è un buon linguaggio con il quale imparare a programmare. È più difficile di Python, ma produce del codice più veloce rispetto a Python. Lo ritengo un eccellente secondo linguaggio.
Ma sii conscio che non raggiungerai i livelli di abilità di un hacker o più semplicemente di un programmatore se conosci solamente uno o due linguaggi - devi necessariamente imparare a pensare ai problemi legati alla programmazione in maniera più generale, indipendentemente dal linguaggio. Per essere un vero hacker, hai bisogno di arrivare al punto in cui sarai in grado di apprendere un nuovo linguaggio in pochi giorni dando un'occhiata al manuale. Questo significa che dovrai imparare parecchi linguaggi differenti tra loro.
Se vuoi programmare seriamente, devi imparare il C, il linguaggio cardine di Unix. Il C++ è molto vicino al C; se tu già conosci uno di questi due, non dovrebbe essere un problema imparare l'altro. Nessuno di questi due linguaggi, comunque, è un buon linguaggio con il quale iniziare.
Altri linguaggi particolarmente importanti per gli hacker sono Perl http://www.perl.com/ e LISP http://snaefell.tamu.edu/~colin/lp/. Perl è degno di essere appreso per ragioni pratiche; è largamente utilizzato per costruire pagine web dinamiche e per l'amministrazione di sistema; così, anche anche se non dovrai mai scrivere in Perl, dovresti imparare almeno a leggerlo. LISP è da imparare per la profonda e illuminante esperienza che proverai quando finalmente riuscirai a farlo tuo; questa esperienza ti renderà un programmatore migliore per il resto dei tuoi giorni, anche se non lo utilizzerai poi molto.
È meglio, addirittura, imparare tutti questi cinque linguaggi (Python, Java, C/C++, Perl, e LISP). Oltre che essere i linguaggi più importanti per l'hacking, rappresentano approcci molto differenti alla programmazione, e ognuno ti educherà in maniera preziosa.
Non posso fornire qui delle istruzioni complete su come imparare un linguaggio - è un compito complesso. Ma posso dirti ciò che libri e corsi vari non ti fanno sapere (molti, forse la maggior parte dei migliori hacker è autodidatta). Puoi imparare le caratteristiche dei linguaggi - pezzi di conoscenza - dai libri, ma l'approccio mentale che trasforma la conoscenza in reali capacità puòo essere appreso solo grazie alla pratica e all'apprendistato. Ciò che devi fare è (a) leggere codice e (b) scrivere codice.
Imparare a programmare è come imparare a scrivere bene nel linguaggio nativo. Il miglior modo per farlo è leggere del materiale scritto dai maestri della forma, scrivere qualcosa per conto proprio, leggere molto di più, scrivere qualcosa in più, leggere molto di più, scrivere qualcosa in più... e ripetere il tutto finché comincia a svilupparsi la forza e l'economia che vedi nei tuoi modelli.
Una volta, trovare del buon codice da leggere era un'impresa ardua, poiché esistevano ben pochi programmi che fossero disponibili anche sotto forma di codice sorgente, a disposizione degli hacker per maneggiarci sopra. Tutto ciò è cambiato; software open-source, strumenti per la programmazione, e sistemi operativi (tutti costruiti da hacker) sono oggi largamente disponibili. Questo mi porta al prossimo argomento ...
2. Procurati uno Unix open-source e impara ad utilizzarlo
Sto dando per scontato che tu abbia un personal computer o che tu possa avere accesso ad un computer (questi giovani d'oggi hanno tutto facile :-)). L'unico passo importante che un principiante possa compiere per acquisire delle capacità da hacker è procurarsi una copia di Linux o di uno degli Unix *BSD, installarlo sulla propria macchina ed eseguirlo.
Sì, ci sarebbero altri sistemi operativi al mondo oltre a Unix. Ma sono distribuiti solo sotto forma di file binari - non puoi leggerne il codice sorgente e non puoi neppure modificarlo. Imparare a hackerare sotto macchine DOS o Windows o MacOS è come provare a ballare mentre si è ingessati.
Unix, inoltre, è Il Sistema Operativo di Internet. Anche se puoi imparare ad utilizzare Internet senza conoscere Unix, non puoi essere un hacker di Internet senza conoscere Unix. Per questa ragione, la cultura hacker oggi è fortemente legata a Unix. (Questo non è stato sempre vero, e qualche vecchio hacker non ne è troppo contento, ma la simbiosi tra Unix e Internet è diventata forte abbastanza che neanche i muscoli della Microsoft sembrano essere in grado di rappresentare una seria minaccia.)
Allora, procurati uno Unix Unix - Io amo Linux, ma ci sono altre vie (e... sì, puoi anche far girare Dos/Windows e Linux sulla stessa macchina). Impara ad usarlo. Fallo girare. Armeggiaci sopra. Usalo per connetterti a Internet. Leggine il codice sorgente. Modifica il codice sorgente. Avrai a disposizione i migliori strumenti di programmazione (tra i quali C, LISP, Python e Perl) che qualsiasi sistema operativo della Microsoft possa sognarsi, ti divertirai, assorbirai più conoscenza di quanto saprai rendertene conto, finché diventerai un maestro hacker.
Per altre informazioni sull'apprendimento di Unix, vedi “Loginataka” http://www.tuxedo.org/~esr/faqs/loginataka.html.
Per mettere le mani su Linux, vedi “Where can I get Linux” http://linuxresources.com/apps/ftp.html.
Esistono anche aiuti e risorse su Unix *BSD http://www.bsd.org/.
Personalmente ho scritto una specie di sillabario sulle basi di Unix e Internet http://www.linuxdoc.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html.
(Nota: Non ti consiglio di installare Linux o *BSD da solo, se sei un principiante. Per Linux, trova un LUG, gruppo locale di utenti e chiedi aiuto a loro; oppure contatta l'Open Projects Network http://www.linpeople.org/. LISC mantiene dei canali IRC http://openprojects.nu/services/irc.html dove puoi trovare aiuto).
3. Impara a usare il World Wide Web e scrivere in HTML
Molte delle cose che la cultura hacker ha costruito operano in posti assolutamente non in vista, aiutando a far funzionare aziende e uffici e università senza alcun evidente impatto sulla vita dei non-hacker. Il Web è l'unica, enorme eccezione, il gigantesco e splendido giocattolo hacker che, anche i politici lo ammettono, sta cambiando il mondo. Solo per questa ragione (ma ce ne sarebbero molte altre di altrettanto buone), hai bisogno di imparare come funziona il Web.
Questo non significa solamente imparare ad utilizzare un browser (chiunque può farlo), ma imparare a scrivere in HTML, il linguaggio 'a marcatori' del Web. Se ancora non sai programmare, scrivendo in HTML acquisirai delle abitudini mentali che ti aiuteranno a imparare. Costruisci una home page. Esistono alcuni buoni tutorial per principianti su Web; eccone uno: http://www.teleport.com/~danal/Pages/making.html.
Ma avere solamente una home page non è abbastanza per poterti definire 'hacker'. Il Web è pieno di home page. Molte sono inutili, della fanghiglia senza contenuti, fanghiglia bella da vedere, certo, ma sempre fanghiglia. Per un approfondimento su questo argomento vedi “The HTML Hell Page”, http://www.tuxedo.org/~esr/html-hell.html.
Per essere meritevole, la tua home page deve avere contenuti - dovrebbe essere interessante e/o utile agli altri hacker. E questo ci porta al prossimo argomento ...
La posizione sociale nella cultura hacker
Come molte culture che non hanno un'economia basata sulla moneta, l'universo hacker vive sulla reputazione. Tu stai tentando di risolvere interessanti problemi, ma per quanto interessanti siano, e benché le tue soluzioni siano veramente il massimo, è qualcosa che solo le persone con la tua stessa preparazione (o superiore) sono in grado di apprezzare.
In accordo con questo concetto, quando giochi a fare l'hacker, impari a fare attenzione principalmente di cosa gli altri hacker pensano delle tue capacità (questo perché tu non sei veramente un hacker finché altri hacker non ti chiamano così). Questo fatto è oscurato dall'immagine dell'hacking come un lavoro solitario; anche da alcuni tabù della cultura hacker (che stanno gradualmente scemando ma sono ancora consistenti) contro il voler ammettere che l'ego o l'essere ben considerati dagli altri contribuiscano ad alimentare le proprie motivazioni.
Entrando nel dettaglio si può dire che l'universo hacker è ciò che gli antropologi chiamano 'gift culture' (Ndt: 'cultura del talento'). Tu guadagni posizione sociale e reputazione non dominando altre persone o grazie alla tua bellezza o possedendo beni che gli altri vorrebbero, ma piuttosto donando cose. Donando il tuo tempo, la tua creatività ed i risultati delle tue capacità.
Ci sono, principalmete, cinque tipi di cose che tu puoi fare per essere rispettato dagli altri hacker:
1. Scrivi software open-source
La prima cosa (la cosa più importante, anche dal punto di vista della tradizione) è scrivere programmi che gli altri hacker possano considerare utili e divertenti, e rilasciarne il codice sorgente all'intera comunità hacker.
(Di solito chiamiamo questi programmi col termine “free software”, ma questo finisce col confondere troppo persone che non sono sicure su cosa si intenda con il termine 'free'. Molti di noi, allora, preferiscono usare l'espressione “open-source” http://www.opensource.org/ per indicare questo tipo di software).
I più riveriti semi-dei dell'universo hacker sono persone che hanno scritto dei gran bei programmi che andavano incontro ad un bisogno molto diffuso. Questi programmi sono stati distribuiti liberamente e sono diventati di uso comune.
2. Aiuta a testare e a fare il debug di software open-source
Ci vuole anche ci prova ed esegue il debug di software open-source. In questo mondo imperfetto, spendiamo molto del nostro tempo a disposizione per sviluppare software, nella fase di debugging (Ndt: correzione degli errori). Per questo motivo tutti gli autori di software open-source ti diranno che un buon beta tester (un utilizzatore, cioè, che sa descrivere i sintomi in maniera chiara, localizzare i problemi con precisione, tollerare i bachi nelle versioni instabili e che è in grado di applicare qualche ruotine diagnostica) vale tanto oro quanto pesa. Uno di questi personaggi può fare la differenza tra una fase di debugging tipo 'incubo' e una in stile 'semplice e salutare scocciatura'.
Se tu sei un principiante, prova a trovare un programma che è ancora in fase di sviluppo e che ti interessi, e diventa un buon beta-tester. Esiste una progressione naturale dall'aiutare a testare i programmi fino ad arrivare a modificarli in prima persona. Imparerai molto in questa maniera e creerai un buon karma con delle persone che in futuro potranno aiutarti.
3. Pubblica informazioni utili
Altra buona cosa è raggruppare e selezionare informazioni utili e/o interessanti in pagine web o documenti in stile Frequently Asked Questions (FAQ), e rendere il tutto disponibile in rete.
I manutentori delle FAQs più tecniche godono di ampio rispetto da parte degli autori di software open-source.
4. Aiuta a tenere in piedi l'infrastruttura lavorativa
La cultura hacker (è lo sviluppo della struttura di Internet, se è per quello) è portata avanti da volontari. Ci sono un sacco di lavori necessari, ma poco affascinanti che avrebbero bisogno di essere seguiti - amministrare mailing list, moderare newsgroup, mantenere ampi siti web con archivi di software, sviluppare RFC (Request For Comment) e altri standard tecnici.
Le persone che fanno questo genere di cose ottengono molto rispetto, perché tutti sanno che queste attività sono avide di tempo e non altrettanto divertenti che giocare con il codice sorgente. Fare questi lavori vuol dire esprimere dedizione.
5. Servi la cultura hacker
Infine, tu puoi servire e propagandare la cultura hacker stessa (scrivendo, ad esempio un accurato testo-guida su come diventare un hacher :-)). Ciò non è qualcosa che sarai obbligato a fare finché non diventerai ben conosciuto per uno dei precedenti quatto punti.
La cultura hacker non deve avere leader, piuttosto deve avere eroi e anziani del villaggio e storici e portavoci. Quando sarai rimasto in trincea abbastanza a lungo, potresti divenire una figura come quelle appena elencate. Gli hacker diffidano degli ego chiassosi nei loro capi tribù, così la visibilità raggiunto a causa di questo tipo di fama è pericolosa. Piuttosto che batterti per questa, devi piuttosto essere umile.
Il rapporto tra hacker e nerd
Contrariamente alle leggende popolari, non devi essere per forza un nerd per essere un hacker. Può aiutare, comunque, e molti hacker sono effettivamente dei nerd. Diventare un emarginato sociale aiuta a rimanere concentrato sulle cose importanti, come pensare e hackerare.
Per questa ragione, molti hacker hanno adottato l'etichetta 'nerd' e utilizzano anche il termine 'geek' con orgoglio - è una maniera di dichiarare la propria indipendenza dalle normale aspettative sociali. Vai alla The Geek Page http://samsara.circus.com/~omni/geek.html per una discussione più ampia.
Se tu poi organizzarti per hackarare bene e avere anche una vita normale, ciò è cosa buona. Questo è più facile oggi di quando io ero un hacker negli anni '70; la cultura 'ufficiale' è molto più amichevole con i techno-nerd al giorno d'oggi. C'è anche un numero crescente di persone che ritiene che gli hacker siano spesso degli ottimi amanti e 'da sposare'.
Se sei attratto dall'hacking perché non hai una vita sociale, è comunque OK - almeno non avrai problemi di concentrazione. Forse avrai una vita sociale più avanti.
Appunti di stile
Ancora, per essere un hacker, devi avere la forma-mentis degli hacker. Ci sono alcune cose utili che tu poi fare quando non sei davanti al computer. Non sono sostituti all'hacking (niente lo è), ma molti hacker le fanno, e sentono che esiste un legame tra queste cose e l'essenza dell'hacking.
· Impara a scrivere bene nella tua lingua. Benché esista lo stereotipo del programmatore che non sa scrivere, un sorprendente numero di hacker (inclusi i migliori che io conosca) sono abili scrittori;
· leggi riviste scientifiche. Partecipa a convegni scientifici (un buon modo per incontrare hacker e proto-hacker);
· studia lo Zen, e/o le arti marziali (la disciplina mentale è utile in molti casi);
· sviluppa un orecchio analitico per la musica. Impara ad apprezzare diversi tipi di musica. Impara a suonare bene qualche strumento, o a cantare;
· sviluppa il tuo apprezzamento per i giochi di parole e gli anagrammi.
Maggiori sono le cose tra queste che già fai, maggiore è la predisposizione naturale che hai per fare l'hacker. Perché queste cose in particolare non è molto chiaro, tuttavia esse sono connesse con un mix di capacità della parte destra - e sinistra - del cervello che sembrano essere importanti (gli hackers hanno bisogno di essere capaci sia a ragionare in maniera logica, sia, all'occorrenza, a tenersi distanti dalla logica apparente di un problema).
Infine, un po' di cose da non fare:
· non usare soprannomi grandiosi e stupidi;
· non entrare nelle flame-war su usenet (i newsgroup), o da qualsiasi altra parte;
· non ti chiamare 'cyberpunk' e non perdere tempo con chiunque lo faccia;
· non spedire lettere o e-mail piene di errori di battitura e/o scadenti dal punto di vista grammaticale.
L'unica reputazione che ti guadagnerai nel fare una qualsiasi di queste cose è quella del cretino. Gli hackers hanno una memoria di ferro - dunque ci potrebbero volere vari anni per essere riaccettati.
La questione dei nomi finti o dei soprannomi, necessità di un approfondimento.
Nascondere la tua identità dietro ad un soprannome è una stupida e bambinesca caratteristica di crackers, warez d00dz e altre forme di vita inferiori.
Gli hacker non fanno questo. Loro sono orgogliosi di ciò che fanno e vogliono che venga associato al loro vero nome.
Quindi, se hai un un soprannome, eliminalo. La cultura hacker ti marchierebbe come un perdente.
Altre risorse
Peter Seebach mantiene un eccellente Hacker FAQ http://www.plethora.net/~seebs/faqs/hacker.html per managers che non capiscono come trattare con gli hacker. Se questo sito non dovesse risultare attivo, la seguente ricerca con Excite http://search.excite.com/search.gw?search=%22HACKER+FAQ%22+%2Bseebach%26tsug=-1%26c+sug=10 dovrebbe fartene trovare una copia.
Io ho scritto A Brief History Of Hackerdom http://www.tuxedo.org/~esr/writings/hacker-history/hacker-history.html.
Ho scritto inoltre, The Cathedral and the Bazaar http://www.tuxedo.org/~esr/writings/cathedral-bazaar/index.html, che spiega molto di come funzionano le culture Linux e open-source. Ho affrontato questo argomento ancora più direttamente nel suo seguito Homesteading the Noosphere http://www.tuxedo.org/~esr/writings/homesteading/.
Rick Moen ha scritto un eccellente documento su come far funzionare un Linux user group http://linuxmafia.com/~rick/essays/newlug.html.
Io e Rick abbiamo collaborato ad un altro documento chiamato How To Ask Smart Questions http://www.tuxedo.org/~esr/faqs/smart-questions.html. Questo ti aiuterà a cercare assistenza in un modo più piacevole di quello che stai utilizzando.
Frequently Asked Questions
Mi insegni a fare dell'hacking?
Dalla prima pubblicazione di questo documento, ho ricevuto parecchie richieste del tipo 'insegnami tutti sull'hacking'. Sfortunatamento non ho il tempo e l'energia per farlo; i miei progetti personali di hacker e i viaggi in veste di sostenitore dell'open-source, mi portano via il 110% del mio tempo.
Comunque, anche se volessi, l'hacking è un'attidudine e un'abilità che tu devi apprendere da solo. Imparerai che, mentre i veri hacker vogliono aiutarti, non avranno rispetto se chiederai di essere imboccato da loro.
Impara un po' di cose, prima. Mostra che ci stai provando, che sei in grado di apprendere. Poi, rivolgiti agli hacker con questioni precise.
Se scrivi un'email ad un hacher per chiedere aiuto, ricordati bene queste due cose.
Primo, abbiamo capito che la gente che è pigra e negligente nello scrivere, è anche prigra e negligente nell'intenzione di diventare un buon hacker - così fai attenzione a scrivere correttamente e usa una buona grammatica e punteggiatura, altrimenti verrai probabilmente ignorato.
Secondo, non provare a chiedere che la risposta ti venga inviata ad un ISP account diverso da quello dal quale hai spedito l'email; le persone che fanno ciò stanno generalmente usando account rubati, e non abbiamo ovviamente intenzione di dar loro alcun aiuto.
Come posso partire, allora
La maniera migliore per iniziare potrebbe essere quella di andare ad un raduno di un LUG (Linux user group). Puoi trovare maggiori informazioni nella LDP General Linux Information Page http://www.linuxdoc.org/intro.html (NdT: per gli aspiranti hacker italiani, gli indirizzi dei LUG presenti in Italia si trovano al seguente indirizzo http://www.linux.it/); probabilmente ce ne sarà uno dalle tue parti, possibilmente associato ad una università. I membri del LUG ti daranno una copia di Linux, se glielo chiedi e certamente ti aiuteranno anche nell'installazione e nella partenza.
Quando iniziare? È troppo tardi per imparare?
Qualsiasi età alla quale tu sviluppi la motivazione per partire è una buona età. Sembra che molte persone comincino ad interessarsi all'hacking tra i 15 e i 20 anni, ma conosco eccezioni in entrambe le direzioni.
Quanto ci impiegherò ad imparare ad 'hackerare'?
Questo dipende da quanto talento hai e da quanto duramente lavori. Molti riescono ad acquisire capacità del tutto rispettabili in 18/24 mesi, se si impegnano. Non pensare che sia finita lì, comunque. Se sei un vero hacker, passerai il resta della tua vita ad imparare e a perfezionarti.
Visual Basic o Delphi sono buoni linguaggi con i quali cominciare?
No, poiché non sono portabili. Non ci sono versioni open-source di questi linguaggi e questo ti vincolerebbe ad utilizzare solo le piattaforme che i produttori decidono di supportare. Accettare questo tipo di monopoli non è un modo di agire da hacker.
Visual Basic è, in particolar modo, terribile. Il fatto che sia un linguaggio di proprietà della Microsoft è già abbastanza per squalificarlo e così come altri Basic è un linguaggio progettato in maniera misera che ti insegna cattive abitudini di programmazione.
Una di queste cattive abitudini è diventare dipendenti da un unico fornitore di librerie, widgets, e tool di sviluppo. In genere, qualsiasi linguaggio che non sia supportato almeno sotto Linux o uno Unix BSD, e/o da almeno tre diversi fornitori di sistemi operativi, è una cosa misera con cui imparare a hackerare.
Mi aiuteresti a crackare un sistema, o mi insegneresti come fare ciò?
No. Colui che ancora mi pone una domanda come questa anche dopo aver letto queste FAQ è troppo stupido per essere educato anche se io avessi del tempo da dedicare all'insegnamento. Tutte quelle richieste via email di questo tipo che io riceverò, saranno ignorate o genereranno delle risposte estremamente dure.
Come posso ottenere la password di un account appartenente ad un'altra persona?
Questo è cracking. Corri via, idiota.
Come posso leggere e/o utilizzare l'email di qualcun altro?
Questo è cracking. Corri via, deficiente.
Come posso rubare canali o privilegi su IRC?
Questo è cracking. Corri via, cretino.
Sono stato crackato. Mi aiuteresti a difendermi dagli attacchi futuri?
No. Ogni volta che mi è stata posta questa domanda, proveniva sempre da qualche povero sfigato che stava facendo girare Microsoft Windows. Non è possibile rendere i sistemi Windows realmente sicuri contro gli attacchi informatici; il codice e l'architettura hanno troppi difetti, che rendono l'opera di rendere sicuro Windows simile a svuotare una nave piena d'acqua con un secchio bucato. L'unica soluzione affidabile consiste nel migrare verso Linux o altro sistemo operativo che sia progettato per essere sicuro.
Sto avendo problemi con il software di Windows. Mi aiuti?
Sì, entra nel prompt del DOS e scrivi: 'format c:'. Qualsiasi sia il tuo problema, sarà eliminato in pochi minuti.
Dove posso trovare dei veri hacker e parlare con loro?
La maniera migliore è trovare un gruppo locale di utenti Unix o Linux e andare ai loro incontri (link e parecchi elenchi possono di gruppi di utenti possono essere reperiti al sito LDP http://www.linuxdoc.org/ presso il Metalab).
(Di solito a questo punto dicevo che non puoi trovare dei veri hacker su IRC, ma qualcosa sta cambiando. Qualche comunità di hacker che contribuisce allo sviluppo di progetti come GIMP e Perl, ha canali IRC, adesso).
Puoi consigliarmi libri utili sul hacking?
Io mantengo il Linux Reading List HOWTO http://www.linuxdoc.org/HOWTO/Reading-List-HOWTO/index.html che tu potresti trovare utile. Anche Loginataka http://www.tuxedo.org/~esr/faqs/loginataka.html potrebbe risultare interessante.
Per una introduzione al linguaggio Python, dai un'occhiata al materiale introduttivo http://www.python.org/doc/Intros.html sul sito di Python.
Devo necessariamente essere bravo in matematica per diventare un hacker?
No. Mentre devi diventare bravo a pensare in maniera logica e a seguire il processo del ragionamento esatto, l'hacking usa molto poco la matematica o l'artimetica.
In particolare, tu non avrai bisogno di calcoli e analisi (lasciamo questa roba agli ingegneri elettronici :-)). Qualche base di matematica finita potrebbe essere di aiuto.
Che linguaggio devo imparare per primo?
HTML, se non lo conosci già. Ci sono un sacco di enormi, lucenti e pessimi libri sull'HTML in giro, e, dolorosamente, pochi sono quelli buoni. Quello che io preferisco è HTML: The Definitive Guide http://www.oreilly.com/catalog/html3/.
Ma HTML non è un linguaggio di programmazione completo. Quando sarai pronto a programmare, ti raccomando di iniziare con Python (http://www.python.org/). Sentirai molte persone che ti raccomandano Perl, e Perl è, per ora, più popolare di Python, ma è più difficile da imparare e (a mio parere) progettato meno bene.
Il linguaggio C è veramente importante, ma è anche molto più difficile sia di Python che di Perl. Non provare ad iniziare con questo.
Utenti di Windows, non optate per Visual Basic. Vi insegnerà delle abitudini sbagliate, e non è portabile al di fuori di Windows. Da evitare.
Di che tipo di hardware ho bisogno?
Ero sempre stato convinto che i computer fossero sotto-dimensionati e poveri di memoria, tanto da imporre dei limiti artificiali ai progressi degli hacker. Questo è diventato falso da qualche tempo. Qualsiasi elaboratore dall'Intel 486DX50 in su è potente abbastanza per sviluppare software farci girare X e connettersi a Internet, e dischi più piccoli che tu puoi comprare oggi hanno spazio a sufficienza.
La cosa importante è scegliere una macchina il cui harware sia Linux-compatibile (o BSD-compatibile, se hai scelto di seguire questa strada). Ancora, ciò dovrebbe essere vero per le macchine moderne; l'unico neo è rappresentato da modem e stampanti, alcune di queste periferiche sono create appositamente per Windows e non vogliono saperne di lavorare con Linux.
C'è un FAQ sulla compatibilità hardware, l'ultima versione è in http://users.bart.nl/~patrickr/hardware-howto/Hardware-HOWTO.html.
Devo necessariamente odiare e combattere Microsoft?
No, non è obbligatorio. Non che Microsoft non sia detestabile, ma esisteva una cultura hacker molto prima di Microsoft e ne esisterà una anche dopo che Microsoft sarà consegnata alla storia. L'energia che tu spendi per odiare Microsoft potrebbe essere utilizzate in maniera migliore amando il tuo mestiere di hacker. Scrivi del buon codice - questo darà fastidio a sufficienza a Microsoft senza inquinare il tuo karma.
Ma il software open-source software non impedisce ai programmatori di guadagnare abbastanza per poter vivere?
Ciò sembra improbabile - finora l'industria del software open-source sembra creare posti di lavoro piuttosto che farne perdere. Se scrivere un programma dà più profitti che non scriverlo, un programmatore sarà pagato sia che il programma diventi o non diventi open-source, una volta realizzato. E non importa quanto software 'free' venga scritto, sembra ci sia sempre più richiesta per applicazioni nuove e personalizzate. Ho scritto di più a riguardo sulle pagine Open Source http://www.opensource.org/.
Come posso partire?
Da qualche parte in questa pagina ho inserito i link verso quei siti dove puoi trovare le versioni free di Unix più utilizzate. Per diventare un hacker, hai bisogno di motivazione, iniziativa e capacità di auto-educazione. Inizia ora ...