giovedì 13 novembre 2008

Gli Hacker

Cos'è un hacker?

Un hacker è un esperto di informatica che sfrutta le proprie conoscenze per fare del bene. Risolvono problemi e costruiscono cose, e credono nella libertà e nell'aiuto reciproco; infatti agli hacker piacciono i software open source, proprio perchè credono nella libertà. 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. Un vero hacker non si definisce mai come tale, finché non sono gli altri hacker a chiamarlo in questo modo; a quel punto si è davvero degli hacker. Molte volte chi si definisce hacker non lo è veramente, ma un lamer (se ne parla tra poco). L'hacker è una persona onesta e, navigando in rete, trovasse qualche bug, lo segnalerebbe subito al webmaster; chi invece cerca di sfruttare i bug trovati, viene definito cracker (se ne parla tra poco).

Il lamer è quella persona che, priva di conoscenze informatiche, si autodefinisce hacker. Fa il grande con i conoscenti, dicendo magari di aver creato un virus o di aver defacciato un sito con una shell. In realtà, invece, il lamer non conosce nemmeno il semplice linguaggio html, però magari riesce a defacciare un sito copiando le informazioni specifiche che danno gli altri (hacker, cracker o lamer). E' da specificare che anche l'hacker sa defacciare un sito, ecc. e alcune volte scrive anche come fare, ma in modo superficiale, solo per far capire come avviene questo tipo di attacco. I lamer vengono visti in malomodo dagli hacker; infatti "lamer" è il nome che utlizzano gli hacker come dispregiativo nei confronti della gente che non ha conoscenze informatiche e crede di fare chi sa cosa.

Il cracker è una persona con conoscenze informatiche come quelle dell'hacker, solo che utlizza le sue conoscenze per fare del male; deacciare siti, prendere il controllo di forum come admin, ecc. I cracker creano virus per i loro scopi e sono anche i creatori dei siti di phising (a chi di voi non è mai arrivata una email di paypal, poste italiane o altro con un link?? beh, alcune volte reindirizzano a dei siti simili a quelli originali, solo per rubare le password di accesso).



Cosa devo sapere per diventare un hacker?

L'attitudine hacker è vitale, ma le capacità lo sono ancora di più. L'attitudine non è un sostituto della competenza, e c'è un insieme di capacità di base che devi avere prima che qualsiasi hacker si sogni di chiamarti tale.Questo bagaglio di conoscenze cambia lentamente nel tempo, man mano che la tecnologia crea nuove abilità e ne rende obsolete altre. Per esempio, esso in genere include la programmazione in linguaggio macchina e solo di recente richiede l'HTML. Al momento attuale il bagaglio di conoscenze di base prevede quanto segue:

1. Impara a programmare.
Questa, ovviamente, è la capacità fondamentale dell'hacker. Se non conosci alcun linguaggio di programmazione, ti suggerisco di iniziare 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. Dei buoni manuali sono disponibili sul sito web di Python. Anche Java è un buon linguaggio per imparare a programmare. È più difficile di Python, ma produce un codice più veloce rispetto a Python. Lo ritengo un eccellente secondo linguaggio. Ma devi essere conscio che non raggiungerai i livelli di abilità di un hacker o più semplicemente di un programmatore se conosci solamente uno o due linguaggi - hai bisogno di imparare a pensare ai problemi legati alla programmazione in maniera più generale, indipendentemente dal linguaggio specifico. Per essere un vero hacker, hai bisogno di arrivare al punto di poter apprendere un nuovo linguaggio in pochi giorni semplicemente confrontando il manuale con quanto già sai. Questo significa che dovrai imparare parecchi linguaggi differenti tra loro. Se vuoi dedicarti seriamente alla programmazione, dovrai imparare il C, il linguaggio cardine di Unix. Il C++ è molto vicino al C; se già ne conosci uno, non ti sarà difficile imparare l'altro. Nessuno di questi due linguaggi, comunque, è adatto per iniziare ad imparare. E, al momento, quanto più riesci a evitare di programmare in C tanto più sarai produttivo. Il C è veramente efficiente, e utilizza al meglio le risorse della macchina. Sfortunatamente, C fornisce questa efficienza in cambio di una notevole mole di lavoro manuale per la gestione delle risorse (quali la memoria) ad un basso livello. Tutta la programmazione di basso livello è complessa e soggetta a bug, e ti richiederà un'enorme quantità di tempo per il debugging. Con le odierne macchine, così potenti, questo in genere rappresenta un cattivo compromesso - è più conveniente utilizzare un linguaggio che impiega in maniera meno efficiente il tempo della macchina ma che impiega più efficacemente il tuo tempo. Ad esempio, Python. Altri linguaggi di particolare importanza per gli hacker sono Perl e LISP. Perl è degno di essere appreso per ragioni pratiche; è largamente utilizzato per costruire pagine web dinamiche e per l'amministrazione di sistema; così, anche se non dovrai mai scrivere in Perl, dovresti imparare almeno a leggerlo. Molte persone usano Perl nella maniera in cui io suggerisco di usare Python, per evitare di programmare in C quei lavori che non richiedono l'efficienza della macchina che C fornisce. Avrai bisogno di essere in grado di capire il loro codice. LISP è da imparare per un altro motivo: 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, essi rappresentano approcci molto differenti alla programmazione, e ognuno ti educherà in maniera preziosa. Non posso fornire qui delle istruzioni complete su come imparare a programmare - è un compito complesso. Ma posso dirti che libri e corsi vari non te lo insegnano (molti, forse la maggior parte dei migliori hacker è autodidatta). Puoi imparare le caratteristiche dei linguaggi - frammenti di conoscenza - dai libri, ma l'approccio mentale che trasforma quella conoscenza in reali capacità può essere appreso solo mediante la pratica e l'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é la tua scrittura inizia a sviluppare 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 disponibili anche sotto forma di codice sorgente, a disposizione degli hacker per la lettura e la manipolazione. Tutto ciò è cambiato radicalmente; 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 un sistema Unix open-source e impara ad utilizzarlo.
Sto assumendo che tu abbia un personal computer o che possa averne accesso (questi giovani d'oggi lo ottengono facilmente :-)). 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 utilizzarlo. Certo, ci sono altri sistemi operativi al mondo oltre a Unix. Ma sono distribuiti solo in forma di file binari - non puoi leggerne il codice sorgente e non puoi neppure modificarlo. Imparare l'hacking su macchine DOS o Windows o MacOS è come cercare di imparare a ballare mentre si è ingessati. Unix, inoltre, è il sistema operativo di Internet. Sebbene tu possa imparare ad utilizzare Internet senza conoscere Unix, non puoi essere un hacker di Internet senza capire Unix. Per questa ragione, la cultura hacker oggi è fortemente centrata su Unix. (Questo non è sempre stato vero, e alcuni hacker dei tempi andati non ne sono molto contenti, ma la simbiosi tra Unix e Internet è diventata forte abbastanza che neppure i muscoli della Microsoft sembrano in grado di rappresentare una seria minaccia.) Pertanto, procurati un sistema Unix - io amo Linux, ma ci sono altre scelte (è vero, 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 e modificalo. Avrai a disposizione i migliori strumenti di programmazione (incluso C, LISP, Python e Perl) che qualsiasi sistema operativo della Microsoft possa mai sognarsi, ti divertirai, acquisirai più conoscenza di quanto saprai rendertene conto, finché non lo guarderai con gli occhi di un maestro hacker. (Nota: se sei un principiante non ti consiglio di installare Linux o BSD da solo. Per Linux, trova un Linux User Group nella tua zona e chiedi aiuto a loro oppure contatta l'Open Projects Network. LISC mantiene dei canali IRC dove puoi ottenere aiuto.)

3. Impara come usare il World Wide Web e scrivere in HTML.

La maggior parte delle cose che la cultura hacker ha costruito operano in posti assolutamente non in vista, contribuendo a far funzionare aziende, uffici e università senza alcun evidente impatto sulla vita dei non- hacker. Il Web è l'unica, grande eccezione, il gigantesco e splendido giocattolo degli hacker che, come anche i politici ammettono, sta cambiando il mondo. Basterebbe questa ragione (e ce ne sarebbero molte altre, altrettanto buone), per capire che 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 di marcatori del Web. Se ancora non sai programmare, scrivere in HTML ti fornirà delle abitudini mentali che ti aiuteranno ad imparare. Costruisci quindi una home page. (Esistono alcuni buoni tutorial per principianti sul Web; eccone uno.) Ma avere solamente una home page non è sufficiente a fare di te un hacker. Il Web è pieno di home page. Molte sono inutili, poltiglia senza contenuti, bella da vedere, certo, ma sempre poltiglia (per maggiori dettagli vedi The HTML Hell Page). 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...

4. Se non comprendi l'Inglese, imparalo.
L'inglese è la lingua base per la cultura hacker e per internet, e che avrai bisogno di conoscerlo per essere funzionale nella comunità hacker. Questo è profondamente vero. Ho saputo che molti hacker che conoscevano l'Inglese come seconda lingua utilizzavano questo nelle discussioni tecniche, anche quando condividevano informazioni con un loro connazionale; all'epoca mi fu detto che l'Inglese disponeva di un vocabolario tecnico più ricco di qualsiasi altra lingua e comunque è uno strumento migliore per il lavoro. Per ragioni analoghe, le traduzioni di libri tecnici scritti in Inglese sono spesso insoddisfacenti (quando sono fatte). Linus Torvalds, un Finlandese, commenta il proprio codice in Inglese (e apparentemente non ha mai avuto bisogno di fare altrimenti). La sua dimestichezza con l'Inglese è stata un importante fattore nella sua capacità di aggregare una comunità mondiale di sviluppatori attorno a Linux. Questo rappresenta un esempio da seguire.





Fonte per conoscenze base dell'hacking: www.ba.infn.it

Nessun commento: