venerdì 26 dicembre 2014

Mini-Corso Hacking - Parte 1

Ecco finalmente il mini-corso hacking che ti spiegherà come diventare hacker e ti farà addentrare nell'affascinante mondo dell'hacking. Inizierai da zero (cos'è e come è fatto un computer) fino ad apprendere concetti ed argomenti più tecnici e complessi. Questa prima parte sarà teorica e riguarderà il concetto di hacking e com'è fatto un computer.

Introduzione

Questo corso non può ovviamente essere svolto in un solo post e per questo sarà diviso in più parti. Ma cos'è esattamente questo corso? È frutto di conoscenza e anni di esperienza nel mondo informatico e dell'hacking, apprenderai in maniera semplice i concetti base dell'hacking. A chi è rivolto? È rivolto a chiunque vuole addentrarsi nel mondo dell'hacking, principiante o utente esperto che sia, gli unici requisiti sono quelli elencati nel paragrafo che seguirà.
Partirai da zero, capendo il concetto di hacking e cos'è e come è fatto un computer, per poi apprendere argomento più tecnici e complessi. Il corso, inoltre, sarà sia teorico che pratico, potrai esercitarti e mettere in pratica le tecniche imparate.

Requisiti

Per poter seguire al meglio questo corso occorrono i seguenti requisiti:
  1. Passione per l'informatica e l'hacking. Ovviamente, occorre che tu sia appassionato di tecnologia e informatica altrimenti potresti abbandonare la lettura del corso.
  2. Costanza. Questo è il secondo elemento fondamentale, non stancarti mai di apprendere nuove cose, abbi sete di conoscenza.
  3. Volontà di approfondire. Oltre a seguire questo mini-corso dovrai anche trattare gli argomenti in una maniera più ampia e approfondita. Quello che ti consiglio di fare è di imparare dalla guida Come Diventare Hacker: La Guida Base che ti guiderà passo passo sul sentiero dell'hacking.

Il concetto di hacking

Iniziamo col trattare l'argomento fondamentale del corso: l'hacking. Questo termine è abusato e spesso non si conosce il vero significato di esso. Ma cos'è realmente l'hacking? È la ricerca della conoscenza e di soluzioni a problemi che avviene in maniera creativa. In ambito informatico, quindi, è l'insieme dei metodi, delle tecniche e delle operazioni volte a conoscere, accedere e modificare un sistema hardware o software.

Le tre parole chiave sono: conoscere, accedere e modificare. Esse sono strettamente correlate con la risoluzione di un problema. Risolvere un problema, infatti, consiste in 3 fasi:
  1. Analisi (conoscere il sistema), ovvero lo studio del sistema sul quale si deve operare e delle possibili soluzioni al problema posto. Questa è la fase più faticosa e che richiede più tempo.
  2. Sfruttare le falle del sistema (accedere). Questa fase consiste nell'usufruire dei "buchi" di sicurezza del sistema trovati durante la prima fase. In pratica ci si prepara per risolvere praticamente il problema.
  3. Risoluzione. Una volta che si ha accesso al sistema si ha il controllo parziale o totale di esso e quindi si può procedere nel compiere le operazioni che portano alla risoluzione del problema.

Cos'è e com'è fatto un computer

Un computer è una macchina in grado di compiere operazioni aritmetiche e logiche composta da componenti hardware (componenti fisici) e software (i programmi). I componenti hardware svolgono le funzioni che gli vengono dettate dal software (ad esempio il sistema operativo). I principali elementi fisici (hardware) sono:
  • La CPU (Central Processing Unit) o microprocessore è fondamentale in quanto permette di compiere operazioni aritmetiche (calcoli) e logiche.
  • La RAM (Random Access Memory) o memoria centrale è una memoria che contiene i dati e le istruzioni dei software (programmi) in esecuzione. Essa è una memoria a breve termine perché i dati vengono persi quando si spegne il computer.
  • L' Hard Disk o disco rigido è una memoria di massa che permette di conservare dati. Non è a breve termine in quanto i dati non vengono persi quando il PC viene spento.
  • Il BUS o canale di trasmissione dei dati è un canale che trasmette dati da un componente hardware ad un altro (ad esempio dalla RAM alla CPU). I dati, dunque, viaggiano attraverso il BUS.
  • I dispositivi di input sono tutti quei componenti che permettono al computer di ottenere informazioni date dall'utente. La tastiera è un dispositivo di input in quanto l'utente da in input al computer i tasti premuti (ad ogni tasto corrisponde un determinato segnale). Anche lo scanner è un dispositivo di input in quanto il computer riceve in input un insieme di dati che corrispondono ad una immagine.
  • I dispositivi di output, invece, sono quelli attraverso i quali il computer comunica all'utente dei dati o informazioni. Il monitor, ad esempio, è un dispositivo di output in quanto da un output all'utente quello che esso sta compiendo (ad esempio sta spostando un file, aprendo un programma).
Questi sono i componenti principali ma il computer può anche possederne altri come ad esempio la scheda grafica ecc...

Il principale software è il sistema operativo (SO) che è una sorta di interfaccia tra il computer e l'utente (colui che utilizza il PC). Se vuoi rinominare una cartella o spostare un file basta un click e il sistema operativo organizza il lavoro dei componenti hardware per far sì che venga eseguito ciò che hai richiesto. I sistemi operativi più conosciuti sono Windows, Mac OS e Linux.

Il linguaggio macchina

Questo argomento è un po' complicato quanto affascinante. Innanzitutto bisogna capire come fa il sistema operativo o qualsiasi altro software a comunicare con i componenti hardware ovvero come fa a dir loro ciò che devono compiere. Comunica con segnali elettrici che viaggiano attraverso il BUS (canale di trasmissione dei dati). Una sequenza di segnali è una istruzione (o dato) in linguaggio macchina. Quest'ultimo viene rappresentato mediante 2 numeri (ed è per questo che viene anche chiamato codice binario) che sono 0 e 1. Lo 0 rappresenta il segnale nullo (ovvero assenza di segnale) mentre il numero 1 rappresenta la presenza di segnale. Un esempio di istruzione rappresentata in codice binario potrebbe essere: 01001101011110. La componente hardware (ad esempio la CPU) in base alla sequenza di presenza e assenza di segnale si comporta di conseguenza, si dice che compie quella determinata istruzione. Anche i dati sono rappresentati in codice binario, il numero 15 ad esempio si rappresenta così: 00001111.

Linguaggi di programmazione

Come hai potuto notare, è complicatissimo per un uomo comunicare con il computer in linguaggio macchina ovvero inviando e non inviando (presenza e assenza di segnale) i segnali elettrici. Per tale ragione sono stati ideati i linguaggi di programmazione che sono linguaggi più vicini all'uomo; le istruzioni, infatti, sono in lingua inglese (che, si sa, è la lingua dell'informatica) e viene fatto uso anche dei vari operatori matematici. I codici scritti nei linguaggi di traduzione vengono "tradotti" in istruzioni binarie da appositi software che sono i compilatori e gli interpreti. L'operazione di "traduzione" è ovviamente complicatissima.

I compilatori funzionano in questo modo: prendono il file (che contiene il codice in un linguaggio di programmazione) che si vuole tradurre e creano un nuovo file contenente le stesse istruzioni ma in linguaggio macchina. Gli interpreti, invece, prendono man mano le righe di codice (scritto in un linguaggio di programmazione) del file che si vuole eseguire, le convertono in codice binario e le eseguono. In sostanza, quindi, la differenza tra compilatori e interpreti è che gli interpreti non creano nessun nuovo file contenente istruzioni in linguaggio macchina.

Per l'hacking è quindi importantissimo conoscere almeno un linguaggio di programmazione, ti consiglio di iniziare ad imparare il Python che è semplice e potente allo stesso tempo ed è interpretato (viene convertito in codice binario dall'interprete e non dal compilatore). Una volta aver preso dimestichezza con questo linguaggio passa ad uno un po' più complicato ma più potente come il C++ (questo, invece, è compilato non interpretato).

Conclusioni

Purtroppo, all'inizio la teoria è fondamentale ed è per questa ragione che questo primo articolo è stato abbastanza corposo. La prossima lezione, però, tratterà le rete, sarà ricca di esempi e ci sarà un minimo di pratica.

8 commenti:

  1. La seconda parte quando arrivera'?

    RispondiElimina
    Risposte
    1. Fra 1 o 2 giorni giorni, resta "sintonizzato" sul blog.

      Elimina
    2. Certo, da quando conosco questo blog ci entro ogni giorno.
      Le tue guide sono spiegate molto bene.
      Quante guide ci sono in tutto?

      Elimina
    3. Innanzitutto grazie del commento, mi sei di incoraggiamento. Cerco di metterci tutto l'impegno in ogni articolo che scrivo.

      Il numero preciso delle guide non lo so.

      Visto che mi sei simpatico ti rivelo anche una novità, a breve penso che arriverà anche qualche video guida.

      Elimina
  2. Bellissimo corso aspetto con ansia la parte 2...

    RispondiElimina
    Risposte
    1. Grazie Anonimo, la seconda parte arriverà tra oggi e domani.

      Elimina
  3. Potete fare corsi su come creare programmi!!!!!

    RispondiElimina
    Risposte
    1. In effetti è una buona idea, già ci avevo pensato e arriveranno video guide sulla programmazione.

      Grazie del commento.

      Elimina