<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-638875891875607163</atom:id><lastBuildDate>Tue, 28 Nov 2023 00:20:01 +0000</lastBuildDate><category>Hacking</category><category>Guide</category><category>Script</category><category>Sicurezza</category><category>Internet</category><category>Programmazione</category><category>Web</category><category>Python</category><category>Crittografia</category><category>Linux</category><category>Network</category><category>Recensione</category><category>SQL</category><category>Cracking</category><category>Hardware</category><category>WarGames</category><category>Wi-Fi</category><category>Ebook</category><category>Javascript</category><category>Python Hacking</category><category>Windows</category><category>XSS</category><category>Youtube</category><category>Android</category><category>DoS</category><category>Email</category><category>Port Scanner</category><category>Reverse Engineering</category><category>Smartphone</category><category>Videogame</category><category>Web Mastering</category><title>Diventare Hacker</title><description>Come Diventare Hacker! Guide sull&#39;hacking e sulla sicurezza informatica.</description><link>http://www.diventarehacker.it/</link><managingEditor>noreply@blogger.com (DiventareHacker.it)</managingEditor><generator>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-1666763228739047972</guid><pubDate>Thu, 17 May 2018 19:55:00 +0000</pubDate><atom:updated>2018-05-20T02:53:37.149+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Cracking</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Reverse Engineering</category><title>Come Crackare Un Programma | Reverse Engineering - Lezione 1</title><description>&lt;div dir=&quot;ltr&quot;&gt;
In questa serie ci addentreremo nel mondo del &lt;b&gt;reverse engineering&lt;/b&gt;. Inizieremo con una veloce panoramica e una rapida ricapitolazione del &lt;b&gt;cracking &lt;/b&gt;e del linguaggio Assembly (non si chiama Assembler come molti pensano!) per poi entrare nel vivo del corso: &lt;b&gt;Reverse Engineering | Come Crackare Un Programma&lt;/b&gt;. Buona prima lezione.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-fpDrLWNsvfw/WvHXUF_4rkI/AAAAAAAAApg/sJe5M-xYLE0G1GbgNn29qb2Gkwhbojg5wCLcBGAs/s1600/reverse_engineering_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1024&quot; height=&quot;320&quot; src=&quot;https://2.bp.blogspot.com/-fpDrLWNsvfw/WvHXUF_4rkI/AAAAAAAAApg/sJe5M-xYLE0G1GbgNn29qb2Gkwhbojg5wCLcBGAs/s320/reverse_engineering_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Intro&lt;/h2&gt;
&lt;/div&gt;
Il &lt;b&gt;reverse engineering&lt;/b&gt; è un argomento fondamentale, oserei dire essenziale, nel mondo dell&#39;hacking e della sicurezza informatica. Sul web si trovano molte guide ma poche sono complete, dettagliate e al passo coi tempi. Ho deciso, quindi, di realizzare una serie di articoli e video a riguardo.&lt;br /&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Vedremo come applicare il reverse engineering e come crackare un programma. Partiremo con un semplice programma scritto da me in linguaggio C, per poi passare, nelle successive lezioni, a programmi più complessi.&lt;br /&gt;
&lt;br /&gt;
Ci saranno anche dei video per ogni lezione, che puoi trovare nella playlist &lt;a href=&quot;https://www.youtube.com/playlist?list=PLCiZgRw_M3dRSbfj5SNDKBsYMocypL_DS&quot;&gt;Reverse Engineering&lt;/a&gt; del mio canale YouTube &lt;a href=&quot;https://www.youtube.com/c/DiventareHacker&quot;&gt;DiventareHacker&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Tuttavia, ti consiglio di vivamente di leggere gli articoli oltre a guardare le video-lezioni poiché in essi saranno approfonditi in maniera più dettagliata i vari argomenti trattati.&lt;br /&gt;
&lt;br /&gt;
Inoltre, se ami il mondo dell&#39;hacking ti consiglio di dare un&#39;occhiata al &lt;a href=&quot;http://www.diventarehacker.it/p/come-diventare-hacker.html&quot; target=&quot;_blank&quot;&gt;video-corso completo&lt;/a&gt; che ti guiderà passo passo partendo da zero fino a mostrarti tecniche avanzate.&lt;/div&gt;
&lt;h2&gt;
Requisiti&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Gli unici due requisiti fondamentali per seguire al meglio questa lezione, ma in generale tutto il corso, sono:&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Conoscenza base di Assembly&lt;/li&gt;
&lt;li&gt;Conoscenza base di C o C++&lt;/li&gt;
&lt;/ul&gt;
Anche se non sei molto ferrato con l&#39;Assembly, tranquillo, faremo una veloce ricapitolazione in questa prima lezione ripetendo alcune delle istruzioni principali Assembly. Ti basta, quindi, soltanto una conoscenza di base, sommaria, di tale linguaggio.&lt;br /&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Occorre anche qualche nozione di C (o C++) visto che talvolta cercheremo di ricostruire il codice (in C) del programma che staremo reverse ingegnerizzando. Oppure, creare dapprima un programma in C per poi cercare di crackarlo.&lt;/div&gt;
&lt;h2&gt;
Cos&#39;è Un Programma&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Forse sarò troppo banale o scontato, ma voglio partire proprio dalla base dando una definizione di programma.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Un &lt;b&gt;programma&lt;/b&gt; (o applicazione software) è una porzione di codice che può essere eseguita da un processore.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
E fin qui, tutto ok. Ora, però, occorre capire anche cos&#39;è un eseguibile (file con estensione .exe per intenderci). Esso infatti non è un programma nel senso stretto del termine.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Un &lt;b&gt;eseguibile&lt;/b&gt; (file EXE per Windows) è un file che contiene del codice eseguibile e varie altre informazioni utili per il sistema operativo.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
La struttura di un file eseguibile è la seguente (su Windows, per Linux e MacOS è simile):&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-zSn-a33WkQw/WvF7IIqxk5I/AAAAAAAAApA/lCfqfRwfc1gI2bAIGfMAwLfAU2esYLVzQCLcBGAs/s1600/Portable_Executable_32_bit_Structure_in_SVG.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1131&quot; data-original-width=&quot;800&quot; height=&quot;320&quot; src=&quot;https://3.bp.blogspot.com/-zSn-a33WkQw/WvF7IIqxk5I/AAAAAAAAApA/lCfqfRwfc1gI2bAIGfMAwLfAU2esYLVzQCLcBGAs/s320/Portable_Executable_32_bit_Structure_in_SVG.png&quot; width=&quot;226&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Come puoi notare, un file eseguibile non è solo codice. Esso contiene, oltre al codice del programma, anche tante informazioni utili al sistema operativo per avviarlo e farlo girare.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
È bene capire questa non tanto sottile differenza tra programma ed eseguibile fin dall&#39;inizio in modo da seguire tutto il corso senza problemi.&lt;/div&gt;
&lt;h2&gt;
Com&#39;è Fatto Il Codice Di Un Programma&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
L’hard disk (così come la memoria RAM) può memorizzare solo informazioni di tipo binario, quindi sequenze composte da 0 e 1 (ad esempio: 0100101001110).&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Un eseguibile viene memorizzato sull&#39;hard disk e quando viene eseguito viene caricato in memoria RAM.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Quindi un eseguibile è composto da 0 e 1 (formato binario).&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Un programma (che è contenuto nell&#39;eseguibile) è memorizzato in linguaggio macchina, quindi anch&#39;esso è in formato binario.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Per facilitare la vita ai reverse engineer (ma anche ai programmatori) esistono i &lt;b&gt;debugger&lt;/b&gt;, ovvero dei software che, dato in input un eseguibile, ne prendono il codice del programma e lo convertono da linguaggio macchina a linguaggio Assembly. God bless debuggers!&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
In questo corso, faremo largo uso dei debugger già dalla prima lezione. Per questo motivo, è di fondamentale importanza avere quantomeno delle basi di Assembly.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Se sei un po&#39; arrugginito riguardo questo linguaggio, continua a leggere perché faremo una veloce ripetizione.&lt;/div&gt;
&lt;h2&gt;
Quick Recap: Linguaggio Assembly&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Ci basta fare una ricapitolazione solo di alcune delle principali istruzioni Assembly.&lt;/div&gt;
&lt;h4&gt;
MOV&lt;/h4&gt;
&lt;div dir=&quot;ltr&quot;&gt;
La prima è l&#39;istruzione MOV (&lt;i&gt;move&lt;/i&gt;, cioè &lt;i&gt;muovi&lt;/i&gt;). Essa è strutturata nel seguente modo:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
MOV operando1, operando2&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Ma facciamo un esempio per capire al meglio questa istruzione:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
MOV esp, 0x34&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Cosa fa questa istruzione? Mette il valore dell&#39;operando2, in questo caso 0x34 che è un numero scritto in base esadecimale, infatti c&#39;è il &quot;0x&quot; come prefisso, nell&#39;operando2 ovvero nel registro esp.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Aspetta... Cosa? Registro? Cos&#39;è?&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Partiamo dal fatto che già dovresti sapere cosa sia un registro perché, ripeto per la 100esima volta, per seguire questo corso già devi avere delle basi di Assembly.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Tuttavia, oggi mi sento magnanimo, quindi te lo rispiego: un registro possiamo vederlo come una piccola (molto piccola, infatti è di 64 o 128 bit) memoria contenuta nel processore stesso, quindi velocemente e facilmente accessibile da quest&#39;ultimo.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
I principali registri di un processore che abbiamo a disposizione per memorizzare determinati valori: EAX, EBX, ECX, EDX, EBP, ESP.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
In questo caso abbiamo utilizzato il registro ESP. Grazie alla MOV, abbiamo messo il valore 0x34 nel registro ESP.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Ora vediamo una &quot;variante&quot; dell&#39;istruzione MOV:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
MOV [eax], 0x34&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Questa istruzione mette il valore 0x34 non nel registro EAX ma nell&#39;indirizzo di memoria contenuto in EAX.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Mi spiego meglio con un esempio: supponiamo nel registro EAX ci sia il valore 0x80c40f (si ho messo delle lettere all&#39;interno di un numero, se sei confuso corri a leggere cosa sia il &lt;a href=&quot;https://it.wikipedia.org/wiki/Sistema_numerico_esadecimale&quot;&gt;sistema numerico esadecimale&lt;/a&gt;). Quando nella MOV utilizziamo le parentesi quadre, stiamo dicendo di mettere il valore 0x34 non in EAX ma all&#39;indirizzo di memoria RAM 0x80c40f.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Ultimo esempio e poi smetto. Giuro.&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
MOV [eax], ebx&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Prende il valore di ebx e lo mette nell&#39;inidirizzo di memoria contenuto in eax.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Stop. Sono di parola.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Tuttavia... abbiamo anche altre istruzioni da rivedere e il tempo è poco. Quindi meglio sbrigarsi.&lt;/div&gt;
&lt;h4&gt;
JMP&lt;/h4&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Questa è facile, possiamo liquidarla velocemente.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
JMP sta per &lt;i&gt;jump&lt;/i&gt;, che in inglese vuol dire &lt;i&gt;salta&lt;/i&gt;. Ma tu già lo sapevi vero? Da buon hacker quale sei, conosci alla perfezione l&#39;inglese.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Esempio:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
JMP 0x8008f0&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Non fa altro che saltare all&#39;istruzione che si trova all&#39;indirizzo di memoria 0x8008f0 ovvero riprende l&#39;esecuzione del programma da 0x8008f0.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Pensate a un if:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
if (a == 2) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; printf(&quot;Ciao&quot;);&lt;br /&gt;
} else {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; printf(&quot;Buona sera&quot;);&lt;br /&gt;
}&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Se la variabile a è 2 allora &lt;b&gt;salta&lt;/b&gt; al printf(&quot;Ciao&quot;), altrimenti &lt;b&gt;salta&lt;/b&gt; al printf(&quot;Buona sera&quot;).&lt;/div&gt;
&lt;h4&gt;
CMP&lt;/h4&gt;
&lt;div dir=&quot;ltr&quot;&gt;
CMP sta per &lt;i&gt;compare&lt;/i&gt;, cioè &lt;i&gt;compara&lt;/i&gt;, &lt;i&gt;metti al confronto&lt;/i&gt;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Essa è strutturata in questo modo:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP operando1, operando2&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Essa non fa altro che comparare l&#39;operando1 con l&#39;operando2. In base al risultato della comparazione (cioè se i due operandi sono uguali, diversi, uno è maggiore dell&#39;altro ecc...) vengono settati dei flag, cioè dei bit all&#39;interno di registri &quot;speciali&quot;.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Esempio:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP eax, ebx&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Fa il confronto del valore che si trova nel registro EAX col valore che si trova nel registro EBX.&lt;/div&gt;
&lt;h4&gt;
JE e JNE&lt;/h4&gt;
&lt;div dir=&quot;ltr&quot;&gt;
JE (&lt;i&gt;Jump if Equal&lt;/i&gt;, &lt;i&gt;salta se uguali&lt;/i&gt;) e JNE (&lt;i&gt;Jump if Not Equal&lt;/i&gt;, &lt;i&gt;salta se non uguali&lt;/i&gt;) sono alcune delle &quot;varianti&quot; dell&#39;istruzione JMP.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Esse compiono il salto solo se sono settati determinati flag nei registri &quot;speciali&quot; di cui parlavamo poc&#39;anzi.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Esempio pratico:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP eax, 0x2c&lt;br /&gt;
JE 0x800400&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
In questo caso il salto all&#39;istruzione nell&#39;indirizzo 0x800400 viene compiuto solo se il valore in EAX e il valore 0x2c sono &lt;b&gt;uguali&lt;/b&gt;. Ecco perché si chiama Jump if Equal.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Inversamente:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP eax, 0x2c&lt;br /&gt;
JNE 0x800400&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Fa il salto all&#39;istruzione in 0x800400 solo se il valore in EAX e il valore 0x2c sono diversi, cioè &lt;b&gt;non uguali&lt;/b&gt;. Da cui: Jump if Not Equal.&lt;/div&gt;
&lt;h4&gt;
Note finali riguardo l&#39;Assembly&lt;/h4&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Da notare che ho nella maggior parte delle sintassi Assembly se scrivi un&#39;istruzione o il nome di un registro in maiuscolo o minuscolo non cambia niente. Infatti avrei potuto scrivere tranquillamente:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mov eax, 0x500&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Oppure:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
MOV EAX, 0x500&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
È soltanto una questione di convenzione.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Bene, la ricapitolazione dell&#39;Assembly è ufficialmente finita! Yeah!&lt;/div&gt;
&lt;h2&gt;
Cos&#39;è Il Reverse Engineering&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Definizione da Wikipedia:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Il processo di &lt;b&gt;reverse engineering&lt;/b&gt; (anche chiamato in italiano &lt;b&gt;ingegneria inversa&lt;/b&gt;) consiste nell&#39;analisi dettagliata del funzionamento, progettazione e sviluppo di un oggetto (dispositivo, componente elettrico, meccanismo, software, ecc.) al fine di produrre un nuovo dispositivo o programma che abbia un funzionamento analogo. [Fonte: &lt;a href=&quot;https://it.wikipedia.org/wiki/Reverse_engineering&quot;&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Definizione mia a prova di stupido:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Fare reverse engineering di un programma significa capire il suo funzionamenti nel dettaglio (anche se non tutto il suo funzionamento, ma solo la parte che ci interessa) in modo da capire dove &quot;mettere mano&quot; per modificarlo e fargli fare ciò che vogliamo. [Fonte: My brain]&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
In questa prima lezione vedremo come fare reverse engineering di un programma grazie ad un tool molto utile: &lt;a href=&quot;http://www.ollydbg.de/&quot;&gt;OllyDBG&lt;/a&gt;. Esso altro non è che un debugger con alcune funzionalità aggiunte: tipo possiamo modificare il codice Assembly e riassemblarlo in modo da ottenere un nuovo programma.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
In questo corso utilizziamo la versione 2.0 di OllyDBG che, pur non essendo stabile ma beta, sembra avere meno bug e più funzionalità utili. Puoi scaricarlo da qui: &lt;a href=&quot;http://www.ollydbg.de/version2.html&quot;&gt;OllyDBG 2.0&lt;/a&gt;&amp;nbsp;(è una pagina molto lunga e con molta scritta, quindi per trovare il link del download di consiglio di fare Ctrl+F e cercare &lt;i&gt;download&lt;/i&gt;).&amp;nbsp;&lt;/div&gt;
&lt;h2&gt;
Cosa Vuol Dire Crackare Un Programma&lt;/h2&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Con &lt;b&gt;cracking&lt;/b&gt; si intende la modifica di un software per rimuovere la protezione dalla copia, oppure per ottenere accesso ad un&#39;area altrimenti riservata. La distribuzione di software così reso privo di protezione (detto warez) è generalmente un&#39;azione illegale a causa della violazione di un copyright. Il crack viene spesso ottenuto tramite il reverse engineering, tecnica che permette di capire la logica del software analizzando il suo funzionamento e le risposte a determinati input. [Fonte: &lt;a href=&quot;https://it.wikipedia.org/wiki/Cracking_(informatica)&quot;&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Non do la definizione mia, perché quella di Wikipedia è già a prova di stupido.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Voglio soffermarmi sul fatto che la distribuzione di software crackato è illegale. Quindi non farlo anche se alla fine di questo corso saprai come crackare.&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Queste guide, infatti, sono puramente a scopo informativo.&lt;br /&gt;
&lt;br /&gt;
Detto questo, quindi, si capisce dalla definizione di Wikipedia che crackare un software vuol dire studiarne il funzionamento e grazie a varie tecniche bypassare la protezione/licenza.&lt;/div&gt;
&lt;h2&gt;
Come Crackare Un Programma&lt;/h2&gt;
&lt;div dir=&quot;ltr&quot;&gt;
Finalmente la parte pratica! Questo video, oltre a fare una ricapitolazione di tutto quello che hai letto fin&#39;ora ti spiegherà passo passo come crackare un programma (molto banale direi) scritto da me in linguaggio C. Puoi scaricarlo da questo link (&lt;a href=&quot;https://www.dropbox.com/s/nmzxemqcx3ve4qo/crackme.rar?dl=0&quot;&gt;Dropbox&lt;/a&gt;) per poterti esercitare a crackarlo. Consideralo come un sacco da boxe cui puoi dare calci, pugni, farci quello che vuoi per esercitarti per il vero match.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/xE4SsgE72nE/0.jpg&quot; src=&quot;https://www.youtube.com/embed/xE4SsgE72nE?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
In pratica abbiamo due modi per crackare un programma.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Cambiare il flusso di esecuzione&lt;/b&gt;&lt;br /&gt;
Ad esempio, dopo aver fatto reverse engineering, siamo arrivati alla conclusione che il programma ha un funzionamento del genere:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
int codice;&lt;br /&gt;
int codice_corretto = [non sappiamo, per il momento, il suo valore];&lt;br /&gt;
printf(&quot;Inserisci il codice:&quot;);&lt;br /&gt;
scanf(&quot;%d&quot;, &amp;amp;codice);&lt;br /&gt;
if (codice == codice_corretto) {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; printf(&quot;Codice corretto!&quot;);&lt;br /&gt;
} else {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; printf(&quot;Codice errato!&quot;);&lt;br /&gt;
}&lt;/blockquote&gt;
In pratica vogliamo cambiare il flusso di esecuzione, cioè vogliamo dirottare il programma a dire &quot;Codice corretto!&quot; anche se inseriamo un codice errato.&lt;br /&gt;
&lt;br /&gt;
Per fare ciò ci basta fare un if inverso ovvero sostituire&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
if (codice == codice_corretto)&lt;/blockquote&gt;
con&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
if (codice != codice_corretto)&lt;/blockquote&gt;
oppure&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
if (!(codice == codice_corretto))&lt;/blockquote&gt;
che è la stessa cosa.&lt;br /&gt;
&lt;br /&gt;
Per fare ciò dobbiamo disassemblare il programma (con OllyDBG o qualsiasi altro debugger) e cercare l&#39;istruzione dove vengono messi a confronto codice con codice_corretto. Dovrebbe essere un&#39;istruzione del genere:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP codice, codice_corretto&lt;br /&gt;
JE 0x800400&lt;/blockquote&gt;
Ovviamente, invece di codice e codice_corretto ci saranno gli indirizzi di memoria in cui essi sono contenuti (ad esempio [esp+0x1c], ovvero prendi il valore contenuto in esp, sommagli 0x1c e così ottieni il valore in cui è memorizzato codice).&lt;br /&gt;
&lt;br /&gt;
Per cambiare (o dirottare) il flusso di esecuzione di questo programma ci basta sostituire JE con JNE in modo che il programma salterà all&#39;istruzione all&#39;indirizzo 0x800400 (che si suppone essere quella che fa printf(&quot;Codice corretto!&quot;)) solo se il codice è sbagliato.&lt;br /&gt;
&lt;br /&gt;
Quindi, possiamo inserire tutti i codice tranne che quello corretto per poter bypassare questo controllo di codice ed ottenere la scritta &quot;Codice corretto!&quot;.&lt;br /&gt;
&lt;br /&gt;
Ecco un chart flow che riassume com&#39;è stato cambiato (dirottato) il flusso di esecuzione di questo programma:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-V_AJWe47OMU/WvHR9f-HxFI/AAAAAAAAApQ/0Z3NOy-t5cwycRBGEgN0n6VNVVx4nmgmQCLcBGAs/s1600/diagram.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;652&quot; data-original-width=&quot;636&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/-V_AJWe47OMU/WvHR9f-HxFI/AAAAAAAAApQ/0Z3NOy-t5cwycRBGEgN0n6VNVVx4nmgmQCLcBGAs/s320/diagram.png&quot; width=&quot;312&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Scoprire il valore corretto&lt;/b&gt;&lt;br /&gt;
Anche se questo approccio è generalmente più complicato del primo, per programmi banali può essere quello più immediato.&lt;br /&gt;
&lt;br /&gt;
Nel programma di esempio del video, il codice Assembly del programma da crackare è di questo tipo (mostro solo la parte che ci interessa):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP [esp+0x1c], 0x190&lt;br /&gt;
JE 0x800400&lt;/blockquote&gt;
Ho usato un&#39;indirizzo di istruzione a cui saltare a caso (0x800400), ma tanto non è questo ciò su cui dobbiamo focalizzarci.&lt;br /&gt;
&lt;br /&gt;
Ciò che dobbiamo notare, da buon reverse engineer, è che il valore all&#39;indirizzo ESP+0x1c (che si suppone sia il valore dov&#39;è memorizzato il codice preso in input) viene messo a confronto col valore 0x190. Quindi, in teoria, tale valore dovrebbe essere il valore corretto. Infatti è così. 0x190 in valore decimale corrisponde a 400. Se scriviamo 400 quando il programma ci chiede il codice, notiamo che ci dice &quot;Codice corretto!&quot;, quindi il codice è questo. Trovato!&lt;br /&gt;
&lt;br /&gt;
Se il codice fosse stato leggermente diverso, ad esempio:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
CMP [esp+0x1c], [esp]&lt;br /&gt;
JE 0x800400&lt;/blockquote&gt;
In tal caso avremmo dovuto controllare il valore contenuto nell&#39;indirizzo di memoria ESP e all&#39;indirizzo ESP+0x1c. Uno dei due valori sarebbe dovuto essere il codice corretto, mentre l&#39;altro il codice inserito da noi. Conoscendo il valore inserito in input (dato che lo abbiamo scritto noi) sapremmo quale sarebbe stato il codice corretto.&lt;br /&gt;
&lt;br /&gt;
Ci sono anche tecniche più avanzate per scoprire il codice/seriale corretto ma per il momento ci fermiamo qui.&lt;br /&gt;
&lt;br /&gt;
Questi sono i due modi principali per crackare un software.&lt;br /&gt;
&lt;h2&gt;
Considerazioni finali&lt;/h2&gt;
Questa prima lezione è stata ricca di teoria. Nelle seguenti lezioni entreremo nel vivo del corso e vedremo come crackare software un po&#39; più complessi e capiremo le varie tecniche che le software house utilizzano per evitare la pirateria.&lt;br /&gt;
&lt;br /&gt;
Occorre sempre tenere in considerazione, come già detto, che tutto ciò che leggi in questo corso (così come tutto ciò che trovi nei video) è a scopo puramente informativo e didattico.&lt;br /&gt;
&lt;br /&gt;
Ti invito ad iscriverti al canale Youtube: &lt;a href=&quot;https://www.youtube.com/c/DiventareHacker&quot;&gt;DiventareHacker&lt;/a&gt;. Puoi trovare la playlist sul reverse engineering: &lt;a href=&quot;https://www.youtube.com/playlist?list=PLCiZgRw_M3dRSbfj5SNDKBsYMocypL_DS&quot;&gt;Reverse Engineering&lt;/a&gt;.&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2018/05/come-crackare-un-programma-reverse.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-fpDrLWNsvfw/WvHXUF_4rkI/AAAAAAAAApg/sJe5M-xYLE0G1GbgNn29qb2Gkwhbojg5wCLcBGAs/s72-c/reverse_engineering_logo.png" height="72" width="72"/><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-4745166094773100187</guid><pubDate>Sun, 06 May 2018 15:14:00 +0000</pubDate><atom:updated>2018-05-12T14:41:46.727+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Network</category><category domain="http://www.blogger.com/atom/ns#">Port Scanner</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Python Hacking</category><category domain="http://www.blogger.com/atom/ns#">Script</category><title>Python Hacking | Creare Un Port Scanner In Python</title><description>Un &lt;b&gt;port scanner&lt;/b&gt; è un strumento utilizzato per fare la scansione di porte su un determinato host (o server). La sua principale funzione è determinare quali delle porte sono aperte e quale servizio è in ascolto su di esse. Una tipologia più avanzata di port scanner è il banner grabber (che analizzeremo nel dettaglio in un futuro articolo).&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #111111; font-family: &amp;quot;roboto&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 14px; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAo0/6LhyJ1JwjmAUBsx2LhdrcVFzEV5yIWtKgCPcBGAYYCw/s1600/python_hacking_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;600&quot; data-original-width=&quot;600&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAo0/6LhyJ1JwjmAUBsx2LhdrcVFzEV5yIWtKgCPcBGAYYCw/s320/python_hacking_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Intro&lt;/h2&gt;
Anche se questa guida non è di quelle avanzate, ho deciso di partire comunque dalle basi. Creiamo delle fondamenta con i concetti essenziali, capiremo il funzionamento di una rete per poi entrare nel vivo dell&#39;articolo. Inoltre ci sarà un video pratica che spiega come&amp;nbsp;&lt;b&gt;scrivere da zero un port scanner in Python.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Ti ricordo che se sei uno alle prime armi nel mondo dell&#39;hacking, o anche se sei un hacker un po&#39; più esperto, ti consiglio il mio video-corso completo che ti guida passo passo, partendo da zero, nel mondo dell&#39;hacking e della sicurezza informatica. Ecco il link: &lt;a href=&quot;http://diventarehacker.blogspot.it/p/come-diventare-hacker.html&quot; target=&quot;_blank&quot;&gt;Video-Corso Come Diventare Hacker&lt;/a&gt;.&lt;br /&gt;
&lt;h2&gt;
Comunicazione Sicura Fra Due Computer (o Macchine)&lt;/h2&gt;
Il concetto che sta alla base della sicurezza informatica è senza ombra di dubbio la comunicazione tra due computer.&lt;br /&gt;
&lt;br /&gt;
Far comunicare due macchine in maniera veloce e sicura è sempre stato un dilemma per gli informatici. Occorre sempre aggiornarsi e studiare metodi nuovi per rendere la comunicazione sempre più sicura.&lt;br /&gt;
&lt;br /&gt;
Basti pensare che un anno fa è stata resa pubblica una grave falla nel protocollo di comunicazione Wi-Fi WPA2 (che è quello che utilizziamo tutti nelle reti domestiche):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
I ricercatori Mathy Vanhoef e Frank Piessens della Katholieke Universiteit di Leuven, hanno recentemente scoperto una grave falla di sicurezza relativa al protocollo di comunicazione Wi-fi Protected Access 2 (comunemente noto come WPA2). Tale scoperta (pubblicata su un articolo scientifico pubblicamente accessibile) dimostra che chiunque si trovi nel raggio di comunicazione della rete wireless attaccata, può implementare il cosiddetto Key Reinstallation AttaCK (KRACK) e leggere il contenuto dei dati scambiati tra il PC e il router/access point. [&lt;span style=&quot;text-align: right;&quot;&gt;Fonte: &lt;/span&gt;&lt;a href=&quot;http://www.html.it/articoli/wpa2-password-crack-attacco-al-wifi/&quot; style=&quot;text-align: right;&quot; target=&quot;_blank&quot;&gt;html.it&lt;/a&gt;]&lt;/blockquote&gt;
Infatti è possibile, a causa di questa falla, &lt;a href=&quot;http://www.diventarehacker.it/2016/03/hacking-wifi-scoprire-password-wifi-con.html&quot; target=&quot;_blank&quot;&gt;crackare e scoprire password WiFi&lt;/a&gt; in una rete.&lt;br /&gt;
&lt;br /&gt;
Non è semplice, quindi, far parlare due computer senza dare la possibilità ad un hacker di intromettersi.&lt;br /&gt;
&lt;br /&gt;
Tuttavia, almeno per questo articolo non parleremo di come aumentare la sicurezza in una rete o come sfruttare determinate vulnerabilità.&lt;br /&gt;
&lt;br /&gt;
Vogliamo, invece, creare vari tool (in questa e nelle prossime guide) che ci serviranno per due scopi:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Comprendere in maniera più approfondita come funziona una rete (visto soprattutto dal lato programmatore/hacker)&lt;/li&gt;
&lt;li&gt;Imparare a maneggiare Python per poter creare tool più complessi in futuro&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Per fare ciò, dobbiamo capire prima cosa sia una rete.&lt;br /&gt;
&lt;h2&gt;
Cos&#39;è Una Rete&lt;/h2&gt;
Ecco la fatidica domanda... a cui risponderà Wikipedia (in ogni caso, per comprendere meglio puoi leggere questa &lt;a href=&quot;http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-2.html&quot; target=&quot;_blank&quot;&gt;guida&lt;/a&gt;).&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
In informatica e telecomunicazioni una rete di computer è un insieme di dispositivi hardware e software collegati l&#39;uno con l&#39;altro da appositi canali di comunicazione, che permette il passaggio da un utente all&#39;altro di risorse, informazioni e dati in grado di essere pubblicati e condivisi. [Fonte: &lt;a href=&quot;https://it.wikipedia.org/wiki/Rete_di_computer&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;
Quindi una rete è &quot;due cose&quot;:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Insieme dei dispositivi&lt;/li&gt;
&lt;li&gt;Canali di comunicazione&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-M5HTa5QK7Lk/WvbV091sjSI/AAAAAAAAAp8/nWVBCUNOFMM34Nqpl4BDAlHd8t7DNMXXwCLcBGAs/s1600/schema_rete_port_scanner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1125&quot; data-original-width=&quot;1600&quot; height=&quot;449&quot; src=&quot;https://4.bp.blogspot.com/-M5HTa5QK7Lk/WvbV091sjSI/AAAAAAAAAp8/nWVBCUNOFMM34Nqpl4BDAlHd8t7DNMXXwCLcBGAs/s640/schema_rete_port_scanner.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Appurato ciò, facciamo un esempio.&lt;br /&gt;
Una rete domestica (tipo la rete di casa tua) è composta da:&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Dispositivi: il tuo PC, il tuo cellulare, i dispositivi degli altri abitanti della casa ecc...&lt;/li&gt;
&lt;li&gt;Canali di comunicazione: WiFi (a meno che tu non viva nel paleolitico ed usi il cavo ethernet)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Secondo esempio, rete Internet:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;Dispositivi, il tuo PC, il tuo cellulare, il mio PC, il mio cellulare ecc...(beh non posso elencarli tutti)&lt;/li&gt;
&lt;li&gt;Canali di comunicazione: qui la question si fa più complicata, diciamo che i canali di comunicazione sono gli ISP (Internet Service Provider, per intenderci le aziende che ti danno Internet e linea telefonica) anche se non è propriamente corretto&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Ora sorge la questione numero 2: come comunicano queste macchine connesse in rete?&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;
Come Si Comunica In Rete?&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
Arriviamo al sodo. Innanzitutto c&#39;è bisogno di distinguere un dispositivo dall&#39;altro, quindi ognuno di essi deve avere un codice identificativo univoco.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Per chi non conosce l&#39;italiano: codice univoco vuol dire che non esiste un altro codice uguale. Ovvero se un PC connesso in rete ha un codice X, un altro PC connesso in rete nello stesso momento non potrà avere codice X ma magari avrà Y o Z (o qualsiasi altra lettera che non sia X).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Cosa sono questi codici? Sono gli indirizzi IP: ovvero 4 numeri (compresi tra 0 e 255) divisi da un punto (esempio: 127.0.0.1). In realtà è un po&#39; pià complicato spiegare cosa sia un indirizzo IP, ma per il momento ci basta capire questo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Prendi il portatile, apri il cmd (o Prompt dei comandi) e digita ipconfig e premi Invio. Dovrebbe apparirti, tra le altre cose, l&#39;indirizzo IP del tuo portatile.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-rBsSCzonPCQ/WvbTvDQC_eI/AAAAAAAAApw/CnTebA66kDYGDS-qcyDBr8Y-O2iEMDFwgCLcBGAs/s1600/ip_config_port_scanner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;150&quot; data-original-width=&quot;711&quot; height=&quot;134&quot; src=&quot;https://4.bp.blogspot.com/-rBsSCzonPCQ/WvbTvDQC_eI/AAAAAAAAApw/CnTebA66kDYGDS-qcyDBr8Y-O2iEMDFwgCLcBGAs/s640/ip_config_port_scanner.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Se fai la stessa cosa dal PC fisso, noterai che esso avrà un IP diverso.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Quindi, se vuoi far comunicare (diciamo tramite WiFi) il portatile col fisso, ognuno di essi dovrà conoscere l&#39;IP dell&#39;altro.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Server e Client&lt;/h2&gt;
&lt;div&gt;
Occorre precisare il &quot;metodo&quot; di comunicazione server/client.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ecco un&#39;immagine per comprendere al meglio:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-N42uy8dl1LQ/WvbWY8mIeDI/AAAAAAAAAqE/l9T3SZ98oPYQOWDIuocbNIIJBpyRayGogCLcBGAs/s1600/client-server_model_port_scanner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1200&quot; data-original-width=&quot;1600&quot; height=&quot;240&quot; src=&quot;https://1.bp.blogspot.com/-N42uy8dl1LQ/WvbWY8mIeDI/AAAAAAAAAqE/l9T3SZ98oPYQOWDIuocbNIIJBpyRayGogCLcBGAs/s320/client-server_model_port_scanner.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Il &lt;b&gt;server &lt;/b&gt;è il dispositivo che offre un servizio. Esempio: il sito Google, esso offre come servizio il motore di ricerca.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Il &lt;b&gt;client &lt;/b&gt;è il dispositivo che usufruisce del servizio. Esempio: il tuo smartphone, quando cerchi qualcosa su Google stai usufruendo del servizio offerto da Google.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Se voglio conoscere l&#39;indirizzo IP di un server mi basta aprire il cmd e scrivere:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ping dominio&lt;/blockquote&gt;
&lt;div&gt;
Invece della parola dominio, ovviamente, va scritto il dominio del sito. Nell&#39;esempio di google:&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ping google.com&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
E ci apparirà il suo IP.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-q9wm1TTDRo0/WvbW7VhNGdI/AAAAAAAAAqM/l-gntVt0LwAhC5qRShxK6HwWh2qRzto9wCLcBGAs/s1600/ping_port_scanner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;270&quot; data-original-width=&quot;712&quot; height=&quot;241&quot; src=&quot;https://4.bp.blogspot.com/-q9wm1TTDRo0/WvbW7VhNGdI/AAAAAAAAAqM/l-gntVt0LwAhC5qRShxK6HwWh2qRzto9wCLcBGAs/s640/ping_port_scanner.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;
Porte&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Quando vogliamo comunicare con un server, c&#39;è bisogno di specificare su quale porta vogliamo &quot;connetterci&quot;. Infatti, un server può avere più di una porta aperta (ora vedremo cosa significa) e su ognuna di esse è in ascolto un determinato programma che offre uno specifico servizio.&lt;br /&gt;
&lt;br /&gt;
Capiamo meglio questo concetto specificando prima cosa sia una &lt;b&gt;porta&lt;/b&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Le &lt;b&gt;porte&lt;/b&gt;, in informatica nell&#39;ambito delle reti di calcolatori, sono lo strumento utilizzato per realizzare la multiplazione delle connessioni a livello di trasporto, ovvero per permettere ad un calcolatore di effettuare più connessioni contemporanee verso altri calcolatori, facendo in modo che i dati contenuti nei pacchetti in arrivo vengano indirizzati al processo che li sta aspettando. [Fonte: &lt;a href=&quot;https://it.wikipedia.org/wiki/Porta_(reti)&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;
Questa definizione è un po&#39; complicata per gli inesperti, quindi cerco di spiegare in parole povere.&lt;br /&gt;
&lt;br /&gt;
Immagina che un server sia come un palazzo con vari appartamenti. Ogni appartamento rappresenta un servizio offerto. La gente che passa davanti a questo palazzo rappresenta i client. Ogni persona che vuole un determinato servizio (client) entra nel palazzo (si connette server) e cerca la porta dell&#39;appartamento che offre tale servizio (si collega a quella determinata porta del server). Se la porta è aperta significa che il servizio è disponibile e quindi l&#39;utente può entrare ed usufruirne, se è chiusa vuol dire che il server non sta erogando nessun servizio in quel determinato appartamento e il client torna a casa sconsolato.&lt;br /&gt;
&lt;br /&gt;
Le porte sono numerate. Per i servizi più comuni esse hanno quasi sempre numeri fissi. Ad esempio, la porta http ovvero quella che ci permette di visitare i siti web è solitamente la numero 80.&lt;br /&gt;
&lt;br /&gt;
Schema delle porte di un server (dominio: esempio.com).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-Iye7BDLNGYs/WvbbP4Ex6mI/AAAAAAAAAqg/Zmk9r2RjU4I-NAYwXaTZvTD9g4c8roNugCLcBGAs/s1600/schema_porte_port_scanner.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;993&quot; data-original-width=&quot;1600&quot; height=&quot;396&quot; src=&quot;https://1.bp.blogspot.com/-Iye7BDLNGYs/WvbbP4Ex6mI/AAAAAAAAAqg/Zmk9r2RjU4I-NAYwXaTZvTD9g4c8roNugCLcBGAs/s640/schema_porte_port_scanner.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Quando vai su Google per cercare qualcosa, infatti ti connetti al server di Google e stabilisci un collegamento sulla porta 80. Una volta che viene stabilito tale collegamento, tu e Google potete comunicare tranquillamente su quella porta. Tu invii richieste a Google (ad esempio la parola o frase che vuoi cercare) e Google ti risponde (ad esempio inviandoti i risultati della ricerca che hai effettuato).&lt;br /&gt;
&lt;br /&gt;
Questa è una spiegazione molto base di come due macchine comunicano in rete.&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Cos&#39;è Un Port Scanner&lt;/h2&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
In informatica il port scanning è una tecnica informatica progettata per sondare un server o un host al fine di stabilire quali porte siano in ascolto sulla macchina. [Fonte: &lt;a href=&quot;https://it.wikipedia.org/wiki/Port_scanning&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;
&lt;div&gt;
&lt;b&gt;Port scanner&lt;/b&gt; vuol dire appunto &quot;scansionatore delle porte&quot;, cioè un programma che ci permette di&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
capire lo stato delle porte di un server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Continuando con l&#39;esempio del palazzo, il port scanner è un omino che mandiamo a sondare quali porte del palazzo sono aperte e quali chiuse.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Possiamo mandarlo &quot;alla cieca&quot; senza specificargli le porte che ci interessano, quindi impiegherà molto tempo per controllare tutto il palazzo (a meno che non mandiamo più omini contemporaneamente). Oppure possiamo orinargli di controllare solo un range di porte, ad esempio solo dalla numero 100 alla numero 800, così compierà il suo lavoro in minor tempo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Lo scopo di questa guida è appunto creare un omino che permette di fare ciò. Per chi non lo avesse capito l&#39;omino rappresenta il programma Python che andremo a creare.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2&gt;
Perché è Utile Un Port Scanner&lt;/h2&gt;
&lt;div&gt;
Esso è utile per svariati motivi in ambito della sicurezza informatica.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mettiamoci nei panni di un hacker: vogliamo testare la sicurezza di un server. Non abbiamo accesso fisicamente ad esso, quindi l&#39;unico modo è trovare una vulnerabilità a livello comunicativa tra il server e la tua macchina (client). Per comunicare con un server sappiamo che dobbiamo collegarci ad una porta e capire quale servizio è in ascolto su essa, se il servizio è vulnerabile ad un qualche tipo di attacco il gioco è fatto!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Quindi, è essenziale capire quali porte sono aperte (questo sarà il compito del port scanner) e quali servizi sono in ascolto su di esse (questo sarà il compito del banner grabber, che è un port scanner più avanzato, vedremo come crearlo in Python nell&#39;articolo successivo).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Una volta capito che servizio (che altro non è che un programma) in ascolto su una porta e la sua versione, possiamo cercare in rete le sue vulnerabilità e quindi studiare un attacco su quella porta per hackerare il server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Dunque possiamo dire che un port scanner utilizzato tantissimo nel mondo dell&#39;hacking e del pentesting, infatti il primo step che si fa per testare la sicurezza delle reti e fare la scansione delle porte e capire quali sono aperte e quali chiuse e soprattutto conoscere i programmi in ascolto su di esse.&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Come Creare Un Port Scanner In Python&lt;/h2&gt;
Ecco il video che spiega come creare un port scanner:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/p3SxPJUym7E/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/p3SxPJUym7E?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2 style=&quot;clear: both; text-align: left;&quot;&gt;
Port Scanner Più Utilizzati&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Ecco una lista dei port scanner più utilizzati in ambito della sicurezza informatica e penetration testing:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://nmap.org/&quot; target=&quot;_blank&quot;&gt;nmap&lt;/a&gt;: senza dubbio il migliore, è completo, free, disponibile su Linux, Windows&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.advanced-port-scanner.com/it/&quot; target=&quot;_blank&quot;&gt;Advance Port Scanner&lt;/a&gt;: attualmente disponibile solo per Windows&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mitec.cz/netscan.html&quot; target=&quot;_blank&quot;&gt;MiTeC Network Scanner&lt;/a&gt;: un po&#39; sottovalutato ma fa il suo dovere&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Per ora è tutto, nel prossimo articolo di questa serie Python Hacking (a proposito, per chi l&#39;avesse perso lo scorso articolo era: &lt;a href=&quot;http://www.diventarehacker.it/2018/05/python-hacking-creare-un-bruteforce-in.html&quot; target=&quot;_blank&quot;&gt;Python Hacking | Come Creare Un Bruteforce In Python&lt;/a&gt;) scriveremo un banner grabber che, come già detto, è una versione evoluta del port scanner.</description><link>http://www.diventarehacker.it/2018/05/python-hacking-creare-un-port-scanner.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAo0/6LhyJ1JwjmAUBsx2LhdrcVFzEV5yIWtKgCPcBGAYYCw/s72-c/python_hacking_logo.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-2292649283377378757</guid><pubDate>Sat, 05 May 2018 19:49:00 +0000</pubDate><atom:updated>2022-04-01T13:34:56.089+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Python Hacking</category><category domain="http://www.blogger.com/atom/ns#">Script</category><title>Python Hacking | Creare Un Bruteforce In Python</title><description>Questa serie di articoli riguarderà l&#39;hacking tramite tool scritti in Python. Impareremo le varie tecniche e metodologia hacking per poi programmare diversi strumenti col linguaggio Python. Il primo articolo di questa serie è il reupload del vecchio post&amp;nbsp;&lt;a href=&quot;http://www.diventarehacker.it/2016/02/creare-un-bruteforce-in-python-20.html&quot;&gt;Creare Un Bruteforce In Python 2.0 - Attacco A Dizionario&lt;/a&gt;. Sarà un articolo più completa dove entreremo nel dettaglio e vedremo come scrivere il codice di un bruteforce http.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAow/FeAs0A1Ix00HLeHPJSSD8htTdqAbs-naQCLcBGAs/s1600/python_hacking_logo.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;600&quot; data-original-width=&quot;600&quot; height=&quot;320&quot; src=&quot;https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAow/FeAs0A1Ix00HLeHPJSSD8htTdqAbs-naQCLcBGAs/s320/python_hacking_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Ecco il video:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/HVc9c_f8pBU&quot; width=&quot;320&quot; youtube-src-id=&quot;HVc9c_f8pBU&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;</description><link>http://www.diventarehacker.it/2018/05/python-hacking-creare-un-bruteforce-in.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-4_uoZjUSljQ/Wu4KRA9eEyI/AAAAAAAAAow/FeAs0A1Ix00HLeHPJSSD8htTdqAbs-naQCLcBGAs/s72-c/python_hacking_logo.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-2411402608849222726</guid><pubDate>Thu, 07 Apr 2016 15:25:00 +0000</pubDate><atom:updated>2016-04-07T17:25:50.320+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #6 - Decriptare Una Stringa Hash (Bruteforce MD5 In Python)</title><description>Dopo aver appreso e approfondito cosa sono le &lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-5-funzioni-di-hash.html&quot; target=&quot;_blank&quot;&gt;funzioni di hash&lt;/a&gt;, in questo articolo (pratico) vediamo come decriptare una stringa hash (ovvero una stringa criptata con una funzione di hash). Ma non avevamo detto, nei precedenti articoli, che una stringa hash non è decriptabile? No, abbiamo detto che è difficile ma non è impossibile, continua a leggere per scoprire alcuni modi per decriptarla (o &lt;i&gt;crackarla&lt;/i&gt;, che come termine suona più figo).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4wqUaktrhgXh2-Obihe-6Vw/s1600/basi_crittografia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4wqUaktrhgXh2-Obihe-6Vw/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
MD5 Decrypter&lt;/h2&gt;
Nella &lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-5-funzioni-di-hash.html&quot; target=&quot;_blank&quot;&gt;parte precedente&lt;/a&gt;&amp;nbsp;ho parlato di un sito che permette di criptare una stringa in MD5. Ora vediamo come fare per decriptare.&lt;br /&gt;
&lt;br /&gt;
Ci viene in aiuto il sito dello scorso articolo, ovvero: &lt;a href=&quot;http://www.md5online.org/&quot; target=&quot;_blank&quot;&gt;MD5 Online&lt;/a&gt; (questo è il link per poter decriptare una stringa).&lt;br /&gt;
&lt;br /&gt;
Funziona il 100% delle volte? &lt;u&gt;&lt;b&gt;Assolutamente no&lt;/b&gt;&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Come funziona allora&lt;/b&gt;&lt;/u&gt;? Innanzitutto il sito ha un suo database che contiene tantissime stringhe hash con le corrispettive stringhe in chiaro che le hanno generate.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
[...] &lt;br /&gt;
ciao&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6e6bc4e49dd477ebc98ef4046c067b5f&lt;br /&gt;
casa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;202447d5d44ce12531f7207cb33b6bf7&lt;br /&gt;
albero&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;338a96591f778e7af4cce7b601d785d2&lt;br /&gt;
giardino&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2993f3e403f33ab24c72de67921a7102&lt;br /&gt;
[...]&lt;/blockquote&gt;
Quindi, la stringa &lt;i&gt;ciao&lt;/i&gt; criptata in MD5 genera l&#39;hash &lt;i&gt;6e6bc4e49dd477ebc98ef4046c067b5f&lt;/i&gt;.&lt;br /&gt;
La stringa &lt;i&gt;casa&lt;/i&gt; genera &lt;i&gt;202447d5d44ce12531f7207cb33b6bf7&lt;/i&gt;, e così via.&lt;br /&gt;
&lt;br /&gt;
Tieni in considerazione che il database contiene una grande quantità di hash con le rispettive stringhe che le hanno generate.&lt;br /&gt;
&lt;br /&gt;
Quando vai sul sito &lt;a href=&quot;http://www.md5online.org/&quot; target=&quot;_blank&quot;&gt;MD5 Online&lt;/a&gt; e inserisci una stringa criptata in MD5 nel box e premi il pulsante &quot;Decrypt&quot;, il sito cerca nel suo database quale stringa in chiaro (decriptata) corrisponde alla stringa criptata che hai inserito. Se la trova, sei fortunato, e te la mostra. Se non la trova, pazienza... dovrai provare qualche altro metodo, che ora ti presenterò...&lt;br /&gt;
&lt;h2&gt;
Bruteforce MD5 In Python&lt;/h2&gt;
Prima di andare avanti è essenziale che tu legga &lt;a href=&quot;http://www.diventarehacker.it/2013/07/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;questa serie di articoli&lt;/a&gt; che spiegano cos&#39;è un bruteforce e come scriverne uno in Python.&lt;br /&gt;
&lt;br /&gt;
Una volta letti gli articoli, puoi continuare a leggere questa guida.&lt;br /&gt;
&lt;br /&gt;
Bene. Utilizzeremo &lt;a href=&quot;http://pastebin.com/PxRjXkcr&quot; target=&quot;_blank&quot;&gt;questo codice&lt;/a&gt;. Non ci resta che modificare la funziona testaPassword(). Ma prima di fare ciò, ricordati di importare le librerie (scrivendo questo codice in alto prima di tutto il resto):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
import hashlib &lt;/blockquote&gt;
Inoltre, dobbiamo impostare l&#39;hash che vogliamo decriptare (inserendo questo codice appena dopo il codice per importare le hashlib):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
hashDaDecriptare = &quot;74efb8aac68e37c289dfcf260e19ab25&quot;&lt;/blockquote&gt;
In questo caso l&#39;hash che vogliamo decriptare è &lt;i&gt;74efb8aac68e37c289dfcf260e19ab25&lt;/i&gt;, naturalmente tu puoi inserire qualsiasi hash. In questo esempio, la stringa in chiaro che ha generato l&#39;hash è &quot;alba&quot;, ovviamente tu non lo saprai a priori (infatti sarà il bruteforce a trovare la stringa in chiaro generatrice), te lo dico giusto per farti vedere che il codice funziona.&lt;br /&gt;
&lt;br /&gt;
Ora non ci resta che modificare la funzione testaPassword(), che in questo caso dovrebbe chiamarsi testaStringa() se proprio vogliamo essere super-precisi ma lasciamogli il nome così com&#39;è (tanto non cambia nulla). La funzione testaPassword() prova ogni combinazione di lettere (nel nostro codice ogni stringa da testare va dai 4 ai 12 caratteri) e controlla quale sia quella corretta.&lt;br /&gt;
&lt;br /&gt;
Ecco come risulterà la funzione:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
def testaPassword(password):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; m = hashlib.md5()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; m.update(password)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m.hexdigest() == hashDaDecriptare):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Password trovata:&quot;, password&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit()&lt;/blockquote&gt;
&lt;u&gt;&lt;b&gt;Cosa fa questa funzione&lt;/b&gt;&lt;/u&gt; per controllare se la combinazione di lettere che sta testando è corretta, ovvero quella che ha generato l&#39;hash? Non fa altro che criptarla in MD5 e confrontarla con l&#39;hash, se sono uguali allora è quella corretta (stampa la password sullo schermo e il programma termina), se invece sono diverse significa che non è quella corretta e il programma va avanti testando la prossima combinazione.&lt;br /&gt;
&lt;br /&gt;
Ecco il &lt;a href=&quot;http://pastebin.com/vcmZr2qE&quot; target=&quot;_blank&quot;&gt;codice&lt;/a&gt; completo, testato e funzionante.&lt;br /&gt;
&lt;h2&gt;
Ottimizzazioni&lt;/h2&gt;
Come puoi notare, avviando questo script Python, esso è molto lento perchè testa qualsiasi combinazione di lettere (e caratteri speciali). Un metodo per &quot;velocizzarlo&quot; e ottimizzarlo è quello di realizzare un bruteforce a dizionario che spiego in maniera dettagliata in questo &lt;a href=&quot;http://www.diventarehacker.it/2016/02/creare-un-bruteforce-in-python-20.html&quot; target=&quot;_blank&quot;&gt;articolo&lt;/a&gt; (+ video).&lt;br /&gt;
&lt;br /&gt;
Lascio a te come esercizio realizzare un bruteforce MD5 a dizionario.&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Questa parte della serie sulla crittografia è stata molto pratica e intensa. Se hai qualche dubbio, curiosità o proposta non esitare a scrivere nei commenti.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-5-funzioni-di-hash.html&quot;&gt;&amp;lt; Parte 5&lt;/a&gt; &amp;nbsp;| &amp;nbsp;Parte 7 (non ancora disponibile) &amp;gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/04/basi-di-crittografia-6-decriptare-una.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4wqUaktrhgXh2-Obihe-6Vw/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-2141908280790501236</guid><pubDate>Tue, 29 Mar 2016 06:45:00 +0000</pubDate><atom:updated>2016-04-07T12:06:15.504+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DoS</category><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">Network</category><category domain="http://www.blogger.com/atom/ns#">Web</category><title>Perchè DoSsare Un Sito Web È Impossibile (e Smettila di Auto-DoSsarti)</title><description>Molti mi chiedono: come faccio a buttare giù un sito? Come faccio a trovare un DoSser che funziona? Alcuni vedendo che, dopo aver DoSsato un sito web, quest&#39;ultimo non risulta essere raggiungibile (o perlomeno risulta essere lento) credono addirittura che la tecnica abbia funzionato e si sentono hacker. In realtà si stanno auto-DoSsando senza saperlo... Ma approfondiamo l&#39;argomento e facciamo chiarezza.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-Iem5ySrlqTI/VvaSMI8dnTI/AAAAAAAAAes/b4qKUi6d2L4SClHIwueSMiUYphuaDjZww/s1600/impossible_dos.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;202&quot; src=&quot;https://4.bp.blogspot.com/-Iem5ySrlqTI/VvaSMI8dnTI/AAAAAAAAAes/b4qKUi6d2L4SClHIwueSMiUYphuaDjZww/s400/impossible_dos.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
It&#39;s impossible&lt;/h2&gt;
Ho fatto più guide in passato, la più aggiornata è &lt;a href=&quot;http://www.diventarehacker.it/2015/10/dos-denial-of-service-come-dossare-un.html&quot; target=&quot;_blank&quot;&gt;questa&lt;/a&gt;. In queste guide dico chiaramente che &lt;b&gt;non è possibile DoSsare server potenti&lt;/b&gt;. Molta gente non lo capisce perchè probabilmente non ha le conoscenza tecniche e teoriche necessarie per comprenderlo, quindi ho deciso di fare un articolo a riguardo. Non considerarlo un articolo inutile. Questo articolo è, oserei quasi dire, fondamentale per comprendere a fondo cosa sia davvero la tecnica DoS.&lt;br /&gt;
&lt;br /&gt;
Abbiamo detto che DoS significa &lt;i&gt;Denial of Service&lt;/i&gt; che tradotto vuol dire &lt;i&gt;Negazione del Servizio&lt;/i&gt;. Questa tecnica consiste nel bombardare un server con tanti pacchetti sperando che esso non riesca a gestirli tutti e che quindi si sovraccarichi, a volte addirittura &lt;i&gt;andando down&lt;/i&gt; (che è un modo figo per dire che il server di spegne).&lt;br /&gt;
&lt;br /&gt;
Il problema è che quasi tutti i siti web (diciamo tipo il 99,99%) sono hostati su server potenti. Mi spiego meglio.&lt;br /&gt;
&lt;br /&gt;
Facciamo l&#39;esempio di Google. Immagina quante richieste (quindi quanti pacchetti) riceve - e invia - ogni istante da persone da ogni angolo del mondo. Dovrebbe sovraccaricarsi, ma non lo fa. Perché i server Google hanno una grande capacità di calcolo e, cosa più importante, hanno una banda (della rete Internet) con elevate, molto ma molto elevate, velocità di trasmissione, sia in upload (quando invia pacchetti) che in download (quando riceve pacchetti).&lt;br /&gt;
&lt;br /&gt;
Non come la tua connessione domestica ad Internet che per uppare un video su YouTube in HD 1080p (o addirittura in 4k) impiega un&#39;eternità. In realtà, al giorno d&#39;oggi abbiamo connessioni più potenti rispetto a qualche anno fa, anche se siamo indietro rispetto a paesi come gli Stati Uniti.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/--4DGP4IVvQM/VvaP8qLQenI/AAAAAAAAAeY/bFADXOmHg54EgcsVj2V-PkMgq9p4uz6Vg/s1600/low_uploading.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://1.bp.blogspot.com/--4DGP4IVvQM/VvaP8qLQenI/AAAAAAAAAeY/bFADXOmHg54EgcsVj2V-PkMgq9p4uz6Vg/s400/low_uploading.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I server di Google, quindi, siccome sono potenti e hanno connessioni mostruose riescono a gestire tutte le richieste (che significa che riescono a riceverle e a rispondere senza sforzo). Quindi Google, così come siti &quot;potenti&quot; come Facebook e Yahoo, è impossibile da DoSsare. Ripeto: &lt;b&gt;&lt;u&gt;Google è impossibile da DoSsare&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Non riusciremo mai a saturare la banda di download dei server Google. Che tradotto in parole povere significa: non riusciremo mai con la tecnica DoS a bombardare Google con tanti pacchetti fino a farlo sovraccaricare. Spero di essere stato chiaro, per quanto riguarda siti &quot;mostro&quot; come Google e Facebook.&lt;br /&gt;
&lt;br /&gt;
Ora passiamo ai siti minori, tipo il sito della palestra dove vai ad allenarti. Non importa se il sito è fatto bene o male, se ha una grafica brutta o una da invidiare, se ti da la possibilità di farti abbonare online con un semplice click. &lt;b&gt;Quello che importa è su che server è hostato&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Chiunque voglia creare un sito acquista servizi hosting (uno dei più famosi e pubblicizzati in Italia è Aruba, ad esempio) che comunque dispongono di server abbastanza prestanti e con connessioni ad altissime velocità, magari non quanto i server di Facebook, ma comunque alte velocità. Mi sembra ovvio, se chiunque inviando un paio di pacchetti in più potesse saturare la banda di download del server allora nessuno acquisterebbe quel servizio.&lt;br /&gt;
&lt;br /&gt;
Lo stesso discorso vale anche per servizi di hosting gratuito tipo Altervista.&lt;br /&gt;
&lt;br /&gt;
Quindi, &lt;b&gt;&lt;u&gt;il 99,99% dei siti non è DoSsabile&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Quello 0,01% (probabilmente anche di meno) DoSsabile è rappresentato da smanettoni che hanno il sito hostato in locale su un loro computer e, con il Port Forwarding, rendono accessibile una porta del router (con tipo di connessione con IP statico) ad Internet in modo che chiunque possa comunicare su quella porta. Ma non credo che la persona media che decide di aprire un sito sappia fare ciò. E anche se lo sapesse fare, il gioco non vale la candela, il tuo computer è meno potente e la tua connessione è meno veloce dei server e della connessione di Aruba. Inoltre, il sito è offline se il computer (o il router) su cui è hostato il sito è spento.&lt;br /&gt;
&lt;br /&gt;
Chi rende disponibile una porta all&#39;esterno (cioè ad Internet) di solito non è chi vuole aprire un sito web ma qualche ragazzo che vuole giocare a Minecraft in multiplayer con gli amici e quindi crea un server appositamente.&lt;br /&gt;
&lt;br /&gt;
Ricapitolando: &lt;b&gt;DoSsare un sito web non funziona&lt;/b&gt;. Se vuoi, invece, rompere le scatole ai ragazzini che giocano a Minecraft online allora funziona (non incito a farlo).&lt;br /&gt;
&lt;h2&gt;
Smetti di DoSsare te stesso&lt;/h2&gt;
Qualcuno quindi si chiederà: allora perché dopo un po&#39; di tempo dopo aver avviato LOIC (programma per DoSsare), il sito che sto DoSsando (chiamiamolo server target) mi risulta irraggiungibile? La risposta è: in realtà stai impiegando tutta la tua connessione di upload - che in Italia non è delle migliori - per inviare tanti pacchetti al sito (pacchetti che comunque vengono gestiti senza sforzo dal server target). Stai sovraccaricando la tua connessione di upload al punto che non riesci a visitare il sito, anzi non riesci a visitare nessun sito, neanche Google. In poche parole, &lt;b&gt;stai DoSsando te stesso&lt;/b&gt;. Per le altre persone, il sito sarà tranquillamente funzionante, per te no perché stai utilizzando tutta la tua banda di upload per inviare una innumerevole e inutile mole di pacchetti.&lt;br /&gt;
&lt;h2&gt;
Gli Anonymous&lt;/h2&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-uFv5w_V-gG4/VKakxPiLdNI/AAAAAAAAAVA/DDYeLc9o4YEY5ekcyNQmZp7h6ew0KmzJQ/s1600/anonymous.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-uFv5w_V-gG4/VKakxPiLdNI/AAAAAAAAAVA/DDYeLc9o4YEY5ekcyNQmZp7h6ew0KmzJQ/s1600/anonymous.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Quindi, quel qualcuno continuerà a chiedersi: ma allora se la tecnica DoS non funziona con nessun sito o server abbastanza potente, la sua utilità si riduce a buttare giù server di ragazzini che giocano a Minecraft? Inoltre, come fanno gli Anonymous (che vengono nominati 324892482439234 volte nelle email e i commenti che ricevo ogni giorno, come se &quot;hacking = Anonymous&quot;) a DoSsare siti del calibro della Sony?&lt;br /&gt;
&lt;br /&gt;
Rispondo ad entrambe, con una sola risposta.&lt;br /&gt;
&lt;br /&gt;
Gli attacchi DoS degli Anonymous non consistono nell&#39;avviare LOIC su un computer sperando che il sito target venga buttato giù. Gli attacchi DoS degli Anonymous in realtà sono degli attacchi &lt;b&gt;DDoS (Distributed Denial of Service)&lt;/b&gt; effettuati da molte macchine. Immagina 10mila macchine (o anche di più) che compiono un attacco DoS verso un sito, questo insieme di macchine costituisce una &lt;b&gt;botnet&lt;/b&gt; (ovvero un network di bot). Parleremo di botnet in un futuro articolo.&lt;br /&gt;
&lt;br /&gt;
Ora immagina che gli Anonymous si mettano d&#39;accordo e ogni membro attacchi il sito target con la sua botnet. In totale sono tante, ma tante, macchine che compiono attacchi DoS verso il server. In questo caso la tecnica DoS può risultare efficace (anche se non è detto che funzioni il 100% delle volte).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/-jSzm2H7vuC4/VvaQ68JEfgI/AAAAAAAAAeg/Yifm8FSXhBcYmZthS_rssM5rEBjr9pRvw/s1600/dos_figure_4.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;301&quot; src=&quot;https://3.bp.blogspot.com/-jSzm2H7vuC4/VvaQ68JEfgI/AAAAAAAAAeg/Yifm8FSXhBcYmZthS_rssM5rEBjr9pRvw/s400/dos_figure_4.gif&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Fonte: cisco.com&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Quindi, ti ho spiegato come gli Anonymous attaccano i siti con la tecnica DoS e come quest&#39;ultima non si riduca al solo scopo di buttare giù server domestici.&lt;br /&gt;
&lt;br /&gt;
Spero di essere stato chiaro su questo argomento di cui tutti parlano ma che pochi davvero comprendono. Se hai domande o dubbi scrivi pure nei commenti.</description><link>http://www.diventarehacker.it/2016/03/perche-dossare-un-sito-web-e.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-Iem5ySrlqTI/VvaSMI8dnTI/AAAAAAAAAes/b4qKUi6d2L4SClHIwueSMiUYphuaDjZww/s72-c/impossible_dos.png" height="72" width="72"/><thr:total>15</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-6735303902675130527</guid><pubDate>Fri, 25 Mar 2016 07:44:00 +0000</pubDate><atom:updated>2016-03-25T08:44:04.642+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #5 - Funzioni di Hash e MD5</title><description>Nuovo articolo. Riprendiamo l&#39;argomento della parte precedente inquadrandolo da un punto di vista più pratico. Vediamo, quindi, come criptare una stringa in modo che essa non sia facilmente decriptabile (utilizzeremo funzioni di cifratura non reversibili) anche se ci sono metodi che richiedono tempo e risorse per &quot;cercare&quot; di decriptarla e ne vedremo alcuni.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s1600/basi_crittografia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Hash&lt;/h2&gt;
&lt;div&gt;
Finora abbiamo visto solo funzioni che data una stringa di N caratteri, restituiscono una nuova stringa (criptata) di N caratteri.&lt;br /&gt;
&lt;br /&gt;
Se criptiamo, ad esempio, &quot;ciao&quot; con la funzione elementare (ecco il&amp;nbsp;&lt;a href=&quot;http://pastebin.com/1H2KUWXY&quot;&gt;link&lt;/a&gt;) che abbiamo scritto in Python nelle parti precedenti, impostando come chiave, ad esempio, il vettore (1, 2), allora la stringa che la funzione restituirà sarà: &quot;dkbq&quot;.&lt;br /&gt;
&lt;br /&gt;
Il messaggio in chiaro &quot;ciao&quot; contiene 4 caratteri (i caratteri &#39;c&#39;, &#39;i&#39;, &#39;a&#39;, &#39;o&#39;) e il messaggio criptato &quot;dkbq&quot; contiene a sua volta 4 caratteri (i caratteri &#39;d&#39;, &#39;k&#39;, &#39;b&#39;, &#39;q&#39;). &lt;b&gt;&lt;u&gt;Hanno entrambi stesso numero (che abbiamo chiamato N) di caratteri&lt;/u&gt;&lt;/b&gt;. Inoltre, conoscendo la chiave, che in questo caso è il vettore (1, 2), &lt;b&gt;&lt;u&gt;è facilmente possibile decifrare il messaggio criptato&lt;/u&gt;&lt;/b&gt;, basta utilizzare la stessa funzione criptando &quot;dkbp&quot; con la chiave inversa, ovvero (-1, -2), in questo modo otteniamo il messaggio in chiaro ovvero &quot;ciao&quot;.&lt;br /&gt;
&lt;br /&gt;
La nostra funzione, dunque, ha queste caratteristiche:
&lt;ol&gt;
&lt;li&gt;messaggio in chiaro e messaggio criptato hanno stesso numero di caratteri;&lt;/li&gt;
&lt;li&gt;è abbastanza semplice decriptare un messaggio, quindi risalire al messaggio in chiaro che lo ha generato, conoscendo la chiave con cui è stato cifrato.&lt;/li&gt;
&lt;/ol&gt;
Una funzione hash ha &lt;b&gt;caratteristiche opposte&lt;/b&gt; alla nostra funzione. Ecco una definizione di funzione di hash (Wikipedia), poi vediamo nel dettaglio cosa significa.&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Una funzione crittografica di hash &lt;b&gt;&lt;u&gt;trasforma dei dati di lunghezza arbitraria (un messaggio) in una stringa di dimensione fissa&lt;/u&gt;&lt;/b&gt; chiamata valore di hash, impronta del messaggio o somma di controllo, ma spesso anche con il termine inglese message digest.&lt;br /&gt;
La funzione crittografica di hash ideale deve avere tre proprietà fondamentali:
&lt;ol&gt;
&lt;li&gt;deve essere estremamente semplice calcolare un hash da qualunque tipo di dato;&lt;/li&gt;
&lt;li&gt;deve essere estremamente difficile o quasi impossibile risalire al testo che ha portato ad un dato hash;&lt;/li&gt;
&lt;li&gt;deve essere estremamente improbabile che due messaggi differenti, anche se simili, abbiano lo stesso hash.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Fonte: Wikipedia
&lt;/blockquote&gt;
Una funzione di hash, quindi, funziona in questo modo (mi scuso per il gioco di parole):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-4O-bpMzaxgA/Vtimxg0xKzI/AAAAAAAAAco/MemLUlL3Fvg/s1600/crittografia_5_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-4O-bpMzaxgA/Vtimxg0xKzI/AAAAAAAAAco/MemLUlL3Fvg/s1600/crittografia_5_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Non importa quanto sia lungo il messaggio che vuoi criptare, una funzione di hash ti restituisce &lt;b&gt;&lt;u&gt;sempre&lt;/u&gt;&lt;/b&gt; un messaggio criptato di dimensione fissa (nell&#39;esempio dell&#39;immagine questa dimensione fissa è di 32 caratteri, contali se vuoi...).&lt;br /&gt;
&lt;br /&gt;
Inoltre, partendo da una stringa criptata generata da una funzione di hash, è &lt;b&gt;&lt;u&gt;estremamente difficile&lt;/u&gt;&lt;/b&gt; risalire al messaggio in chiaro di partenza. Cioè se io conosco la stringa criptata &quot;0cc175b9c0f1b6a831c399e269772661&quot; (come nell&#39;immagine di sopra) è molto, ma molto, difficile risalire alla stringa che lo ha generato, ovvero &quot;a&quot;.&lt;br /&gt;
&lt;br /&gt;
Ricapitolando: è facile criptare una stringa, ma è difficilissimo decriptarla. Ci ricorda qualcosa? Le funzioni non reversibili (&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-4-funzioni-non.html&quot; target=&quot;_blank&quot;&gt;articolo precedente&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Una funzione di hash è una funzione di cifratura non reversibile, ed inoltre, restituisce sempre come messaggio criptato una stringa (che ovviamente dipende dal messaggio da criptare) di dimensione fissa.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
MD5&lt;/h2&gt;
Una funzione di hash abbastanza moderna è MD5 (&lt;i&gt;Message Digest 5&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Questo tipo di codifica prende in input una stringa di lunghezza arbitraria e ne produce in output un&#39;altra a 128 bit. La codifica avviene molto velocemente e l&#39;output (noto anche come &quot;MD5 Checksum&quot; o &quot;MD5 Hash&quot;)
 restituito è tale per cui è altamente improbabile ottenere con due 
diverse stringhe in input uno stesso valore hash in output. Ad oggi sono
 disponibili molte risorse online che hanno buone probabilità di 
riuscire a decriptare parole comuni codificate.&lt;br /&gt;
Fonte: Wikipedia&lt;/blockquote&gt;
&lt;br /&gt;
In poche parole, prende una qualsiasi stringa di qualsiasi lunghezza e la codifica producendo una nuova stringa di 32 caratteri. È una funzione di hash abbastanza moderna e diffusa anche se ha qualche pecca:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
A oggi, la disponibilità di algoritmi efficienti capaci di generare 
stringhe che collidono (ossia che producono in output lo stesso valore 
di hash) in un tempo ragionevole ha reso MD5 sfavorito rispetto ad altri
 algoritmi di hashing (vedi &lt;a class=&quot;new&quot; href=&quot;https://it.wikipedia.org/w/index.php?title=WHIRLPOOL&amp;amp;action=edit&amp;amp;redlink=1&quot; title=&quot;WHIRLPOOL (la pagina non esiste)&quot;&gt;WHIRLPOOL&lt;/a&gt;, &lt;a class=&quot;mw-redirect&quot; href=&quot;https://it.wikipedia.org/wiki/SHA-1&quot; title=&quot;SHA-1&quot;&gt;SHA-1&lt;/a&gt; o &lt;a href=&quot;https://it.wikipedia.org/wiki/RIPEMD&quot; title=&quot;RIPEMD&quot;&gt;RIPEMD-160&lt;/a&gt;),
 sebbene la sua diffusione sia a tutt&#39;oggi molto estesa (basti pensare 
che il controllo di integrità più frequente su file si basa proprio su 
MD5).&lt;br /&gt;
Fonte: Wikipedia&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Come codificare una stringa in MD5?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Facciamo qualche prova. Vai al sito &lt;a href=&quot;http://www.md5online.fr/crypter-md5.html&quot; target=&quot;_blank&quot;&gt;MD5 Oline&lt;/a&gt;, inserisci una stringa nella textbox e clicca su &quot;Crypter&quot;.&lt;br /&gt;
&lt;br /&gt;
La stringa generata sarà quella sotto (di 32 caratteri).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/--PplFajautI/Vt8E8OOnnjI/AAAAAAAAAc4/kAuO6nq59kQ/s1600/crittografia_5_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/--PplFajautI/Vt8E8OOnnjI/AAAAAAAAAc4/kAuO6nq59kQ/s1600/crittografia_5_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Script In Python&lt;/h2&gt;
Realizziamo ora una funzione Python che cripta una stringa in MD5.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
import hashlib&lt;br /&gt;
&lt;br /&gt;
def cripta(stringa):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; m = hashlib.md5()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; m.update(stringa)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return m.hexdigest()&lt;/blockquote&gt;
Innanzitutto abbiamo importato la libreria &lt;i&gt;hashlib&lt;/i&gt; che contiene varie funzioni hash tra cui anche MD5 (quella che ci serve).&lt;br /&gt;
&lt;br /&gt;
Con il codice:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
m = hashlib.md5()&lt;br /&gt;
m.update(stringa)&lt;/blockquote&gt;
abbiamo innanzitutto creato un &quot;oggetto&quot; di tipo MD5 (&lt;i&gt;m = hashlib.md5()&lt;/i&gt;) poi gli abbiamo assegnato una stringa da criptare (&lt;i&gt;m.update(stringa)&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Con:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
return m.hexdigest()&lt;/blockquote&gt;
abbiamo criptato la stringa e l&#39;abbiamo ritornata.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Dopo lo scorso articolo teorico, finalmente è arrivata un po&#39; di pratica. E tieniti pronto, perché il prossimo articolo sarà molto coinvolgente, vedremo com&#39;è possibile decriptare una password (o stringa) criptata in MD5 o in una qualsiasi altra funzione di hash.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-4-funzioni-non.html&quot;&gt;&amp;lt; Parte 4&lt;/a&gt; &amp;nbsp;| &amp;nbsp;Parte 6 (non ancora disponibile) &amp;gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/03/basi-di-crittografia-5-funzioni-di-hash.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-1262851297775577909</guid><pubDate>Tue, 22 Mar 2016 08:36:00 +0000</pubDate><atom:updated>2016-03-22T09:36:12.709+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Cracking</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">Wi-Fi</category><title>Hacking WiFi: Scoprire Password WiFi Con Kali Linux e Aircrack</title><description>Considerato che molti di voi me l&#39;hanno chiesto più volte, ecco una guida abbastanza semplice che spiega come hackerare una rete WiFi (scoprire una password WiFi). Bando alle chiacchiere, iniziamo!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-TG5331ZAN0Y/Vu8eJlwxPCI/AAAAAAAAAdk/4aydTtzHZ0gPQ5BJxPYJ7OIBnLKBRZpew/s1600/HackingWiFi_aircrack.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://2.bp.blogspot.com/-TG5331ZAN0Y/Vu8eJlwxPCI/AAAAAAAAAdk/4aydTtzHZ0gPQ5BJxPYJ7OIBnLKBRZpew/s320/HackingWiFi_aircrack.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Premessa&lt;/h2&gt;
Tutto quello che troverai in questa guida (e in generale sul blog) è a s&lt;b&gt;&lt;u&gt;olo scopo informativo&lt;/u&gt;&lt;/b&gt; e non vuole essere di incoraggiamento a compiere reati informatici. Crackare una rete WiFi è illegale. Quindi puoi testare solo la tua rete WiFi.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
La Tecnica&lt;/h2&gt;
&lt;h3&gt;
1. Set up&lt;/h3&gt;
Innanzitutto ci sono dei requisiti:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Sistema operativo Linux (consiglio Kali Linux per fare questo tipo di test sulla sicurezza).&lt;/li&gt;
&lt;li&gt;Aircrack-ng. Su Kali Linux è già installato, se usi un&#39;altra distro puoi semplicemente scaricarlo da &lt;a href=&quot;http://www.aircrack-ng.org/&quot;&gt;qui&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Cos&#39;è Aircrack-ng? Non è altro che una suite (un insieme di software, di tool) adatto proprio a fare questo tipo di test su una rete.&lt;br /&gt;
&lt;br /&gt;
Andiamo a crearci una cartella dove andare a lavorare (dove verranno memorizzati i file generati da aircrack).&lt;br /&gt;
&lt;br /&gt;
Apri il terminale Linux. Muoviti nella directory dove vuoi creare la cartella (suppongo tu sappia farlo col comando &lt;i&gt;ls&lt;/i&gt;). Poi crea la cartella dove andare a lavorare (chiamiamola ad esempio &lt;i&gt;prova&lt;/i&gt;) digitando:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
mkdir prova&lt;/blockquote&gt;
Ora, devi conoscere qual è la tua interfaccia della tua scheda di rete wireless.&lt;br /&gt;
&lt;br /&gt;
Dal terminale digita:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
iwconfig&lt;/blockquote&gt;
Di solito l&#39;interfaccia wireless che utilizzi è &lt;i&gt;wlan0&lt;/i&gt;, ma nel caso usassi una chiavetta wireless allora è possibile anche che si chiami &lt;i&gt;wlan1&lt;/i&gt;. In questa guida ipotizzo che la tua interfaccia sia &lt;i&gt;wlan0&lt;/i&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2. Monitor mode&lt;/h3&gt;
Ora dobbiamo settare la scheda di rete wireless (o la tua chiavetta wireless nel caso tu usassi una chiavetta) in &lt;i&gt;monitor mode&lt;/i&gt;. Detto in parole povere, in questa modalità la tua scheda di rete potrà intercettare i pacchetti che viaggiano nella rete anche se tu non sei il destinatario dei pacchetti.&lt;br /&gt;
&lt;br /&gt;
Per fare ciò utilizzeremo il tool &lt;i&gt;airmon-ng&lt;/i&gt; (che ovviamente fa parte della suite di aircrack-ng), digita da terminale:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
airmon-ng start wlan0&lt;/blockquote&gt;
Ovviamente, nel caso la tua interfaccia sia &lt;i&gt;wlan1&lt;/i&gt; scrivi wlan1 anzichè wlan0.&lt;br /&gt;
&lt;br /&gt;
Ora se digiti da terminale:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
iwconfig&lt;/blockquote&gt;
puoi notare che oltre alla tua interfaccia wireless c&#39;è anche &lt;i&gt;mon0&lt;/i&gt; che è l&#39;interfaccia creata da &lt;i&gt;airmon-ng&lt;/i&gt;. Questa interfaccia funziona in &lt;i&gt;monitor mode&lt;/i&gt;, ecco perchè si chiama così.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3. Intercettare l&#39;handshake&lt;/h3&gt;
Ora dobbiamo intercettare i pacchetti che viaggiano nella rete. In particolare vogliamo catturare (intercettare) uno speciale tipo di pacchetto chiamato handshake grazie al quale possiamo, una volta averlo catturato, crackare la password WiFi.&lt;br /&gt;
&lt;br /&gt;
Un handshake viene generato quando un dispositivo si connette alla rete WiFi. &lt;br /&gt;
&lt;br /&gt;
Possiamo intercettare (ovvero a dumpare) i pacchetti digitando il comando:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
airodump-ng mon0 -w capture&lt;/blockquote&gt;
&lt;i&gt;Airodump-ng&lt;/i&gt; intercetterà i pacchetti, utilizzando &lt;i&gt;mon0&lt;/i&gt;, e li memorizzerà in vari file che, in questo caso, inizieranno col prefisso &lt;i&gt;capture&lt;/i&gt; (ecco perchè c&#39;è quel &lt;i&gt;-w capture&lt;/i&gt;), puoi chiamare questo prefisso come vuoi, in questa guida l&#39;ho chiamato &lt;i&gt;capture&lt;/i&gt; giusto per rendere l&#39;idea dei pacchetti catturati. Quindi, come già detto, verranno creati vari file nella directory corrente, ecco perchè all&#39;inizio ti ho fatto la cartella &lt;i&gt;prova&lt;/i&gt; dove andare a lavorare, in questo modo avremo tutti i file nella cartella &lt;i&gt;prova&lt;/i&gt; anzichè &quot;sporcare&quot; il Desktop.&lt;br /&gt;
&lt;br /&gt;
Dovrai dumpare i pacchetti fin quando non avrai catturato un handshake, ovvero fin quando non apparirà la scritta WPA handshake (o WPA2 handshake) come nell&#39;immagine di sotto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-fMJvF6TjH6k/Vu8efCWR51I/AAAAAAAAAdo/Kle2-OqwTJ0i9dLRqUrO8VFT6zBm9fOLQ/s1600/aircrack_1_guida.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;224&quot; src=&quot;https://4.bp.blogspot.com/-fMJvF6TjH6k/Vu8efCWR51I/AAAAAAAAAdo/Kle2-OqwTJ0i9dLRqUrO8VFT6zBm9fOLQ/s640/aircrack_1_guida.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Questa guida è solo a scopo informativo, quindi testa la tua stessa rete WiFi. Per generare un handshake puoi disconnettere e riconettere un dispositivo alla tua rete WiFi.&lt;br /&gt;
&lt;br /&gt;
Aspetta qualche secondo e dai un&#39;occhiata ad &lt;i&gt;airodump-ng&lt;/i&gt; per vedere se ha catturato l&#39;handshake. Se non lo ha catturato, di nuovo disconnetti e riconnetti un dispositivo al WiFi fin quando &lt;i&gt;airodump-ng&lt;/i&gt; non riesce a catturare un handshake.&lt;br /&gt;
&lt;br /&gt;
(Opzionale: In una guida futura, più avanzata, vedremo anche come far disconnettere un dispositivo in modo che sia obbligato a riconnettersi.)&lt;br /&gt;
&lt;br /&gt;
Una volta catturato un handshake puoi terminare &lt;i&gt;airodump-ng&lt;/i&gt; premendo &lt;i&gt;Ctrl + C&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Ora puoi anche chiudere l&#39;interfaccia &lt;i&gt;mon0&lt;/i&gt;, digitando:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
airmon-ng stop&lt;/blockquote&gt;
Se dai un&#39;occhiata dentro la tua cartella &lt;i&gt;prova&lt;/i&gt;, puoi notare come &lt;i&gt;airodump-ng&lt;/i&gt; abbia creato alcuni file che iniziano col prefisso &lt;i&gt;capture&lt;/i&gt; (ad esempio: capture-01.cap, capture-01.csv, ecc...).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
4. Crackare la password WiFi&lt;/h3&gt;
&lt;br /&gt;
Questa tecnica di cracking consisterà nel compiere un attacco bruteforce a dizionario (se non sai cos&#39;è un bruteforce eccoti alcuni link utili: &lt;a href=&quot;http://www.diventarehacker.it/2013/06/bruteforce-il-metodo-piu-efficace-per.html&quot; target=&quot;_blank&quot;&gt;[1]&lt;/a&gt;, &lt;a href=&quot;http://www.diventarehacker.it/2016/02/creare-un-bruteforce-in-python-20.html&quot; target=&quot;_blank&quot;&gt;[2]&lt;/a&gt;, &lt;a href=&quot;http://www.diventarehacker.it/2013/07/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;[3]&lt;/a&gt;) tentando varie password e, grazie, all&#39;handshake catturato potrà capire quale sarà quella giusta.&lt;br /&gt;
&lt;br /&gt;
(Opzionale: In realtà l&#39;handshake che abbiamo catturato è criptato secondo la password del WiFi. Quindi per scoprire la password il bruteforce  cripterà un handshake, hanno tutti uno stesso formato standard, utilizzando varie password fin quando l&#39;handshake catturato e quello appena criptato combaceranno. Per maggiori informazioni sulla crittografia segui la mia &lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-1-cose-la.html&quot; target=&quot;_blank&quot;&gt;guida&lt;/a&gt;.)&lt;br /&gt;
&lt;br /&gt;
Abbiamo, dunque, bisogno di un dizionario. In rete ce ne sono molti. Io ti consiglio, per testare la tua rete WiFi e dimostrarti che questa tecnica funziona, di creare semplicemente un file che contiene varie password casuali e che contiene anche quella giusta. Chiamalo, ad esempio, &lt;i&gt;dizionario.txt&lt;/i&gt; e mettilo nella cartella &lt;i&gt;prova&lt;/i&gt; creata all&#39;inizio.&lt;br /&gt;
&lt;br /&gt;
Per fare questo attacco bruteforce a dizionario utilizziamo il tool &lt;i&gt;aircrack-ng&lt;/i&gt;. Digita da terminale:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
aircrack-ng -w dizionario.txt capture-01.cap&lt;/blockquote&gt;
Se te lo chiede, decidi quale rete WiFi crackare (inserendo il numero corrispondente e premendo &lt;i&gt;Invio&lt;/i&gt;). A quel punto inizierà il cracking...&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Aircrack-ng&lt;/i&gt; farà un attacco bruteforce sui vari handshake catturati (che nel nostro caso si trovano nel file capture-01.cap) utilizzando le password che si trovano nel file &lt;i&gt;dizionario.txt&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Aircrack-ng&lt;/i&gt; riesce a provare tante password al secondo, quindi impiegherà pochissimo tempo con dizionari piccoli.&lt;br /&gt;
&lt;br /&gt;
Quando verrà trovata la password giusta apparirà la scritta &quot;KEY FOUND&quot; e tra parentesi quadre ci sarà la password trovata (vedi l&#39;immagine qui sotto). &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-5FF2eFyBWX4/Vu8e3CDUCbI/AAAAAAAAAdw/jQBRb8hyQPY6fgVS0nYKN9Wx_bwIg9IIQ/s1600/aircrack_2_guida.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;314&quot; src=&quot;https://4.bp.blogspot.com/-5FF2eFyBWX4/Vu8e3CDUCbI/AAAAAAAAAdw/jQBRb8hyQPY6fgVS0nYKN9Wx_bwIg9IIQ/s640/aircrack_2_guida.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ovviamente, se il dizionario non contiene la password giusta allora l&#39;attacco non è andato a buon fine. Occorre provare con un dizionario più grande oppure provare con una tecnica completamente differente.&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Questa guida è abbastanza basilare, in futuro conto di farne una un po&#39; più avanzata.&lt;br /&gt;
&lt;br /&gt;
Se hai domande, dubbi, problemi o anche suggerimenti non esitare a commentare.</description><link>http://www.diventarehacker.it/2016/03/hacking-wifi-scoprire-password-wifi-con.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-TG5331ZAN0Y/Vu8eJlwxPCI/AAAAAAAAAdk/4aydTtzHZ0gPQ5BJxPYJ7OIBnLKBRZpew/s72-c/HackingWiFi_aircrack.png" height="72" width="72"/><thr:total>14</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-6951167995226073636</guid><pubDate>Sun, 20 Mar 2016 08:00:00 +0000</pubDate><atom:updated>2022-04-01T13:49:24.503+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #4 - Funzioni Non Reversibili</title><description>In questa quarta parte vediamo nel dettaglio cos&#39;è e come creare un funzione di cifratura che non sia reversibile, ovvero non è possibile (o meglio, è molto complicato e dispendioso) decriptarla mentre è molto più facile criptarla. Iniziamo subito.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s1600/basi_crittografia.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Funzioni non reversibili&lt;/h2&gt;
Ipotizziamo tu sia il gestore di un famoso Social Network. Molte persone si sono registrate al tuo sito e, quindi, hai le email e le password di tutti gli utenti memorizzate in un database.&lt;br /&gt;
&lt;br /&gt;
Un hacker riesce a trovare una vulnerabilità nel tuo sito. Penetra nel database e ora lui possiede tutte le email e le password.&lt;br /&gt;
&lt;br /&gt;
Le email sono in chiaro (non criptate) mentre le password sono criptate.&lt;br /&gt;
&lt;br /&gt;
Le email sono criptate secondo una funzione di cifratura non reversibile. Ovvero le password criptate non possono ritornare in chiaro (non possono essere decriptate). In realtà è possibile tentare (e ripeto, tentare) di decriptare una stringa cifrata con una funzione non reversibile (ad esempio attraverso una tecnica di bruteforce, come vedremo in futuro) ma occorre molto tempo (anche anni, dipende dalla complessità della funzione).&lt;br /&gt;
&lt;br /&gt;
Da questo esempio capisci quanto siano importanti le funzioni di cifratura non reversibili.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Ma come funzionano?&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Parliamo un po&#39; di matematica (conoscere le basi di matematica è uno dei requisiti di questa guida se ricordi). Prendiamo due numeri primi (ovvero due numeri divisibili solo per 1 e per sé stessi), ad esempio:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
x = 311&lt;br /&gt;
y = 109&lt;/blockquote&gt;
Moltiplichiamoli tra loro (* è il simbolo per indicare la moltiplicazione, in informatica così come in Python) e il risultato lo chiamiamo z:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
x * y = z = 33899&lt;/blockquote&gt;
Quanto ci abbiamo messo per calcolare z (ovvero per moltiplicare x e y)? Pochissimo tempo, esistono le calcolatrici apposta per questo.&lt;br /&gt;
&lt;br /&gt;
Ora consideriamo il processo inverso: conosciamo z e dobbiamo trovare x e y, cioè i due numeri che moltiplicati tra loro ci danno z come risultato. Quanto tempo ed energie impieghiamo? Molte di più. E in questo caso x e y sono numeri abbastanza piccoli, quindi ti lascio immaginare che impresa sarebbe trovarli se fossero numeri più grandi.&lt;br /&gt;
&lt;br /&gt;
Bene. Le funzioni non reversibili si basano su questo concetto matematico: &lt;b&gt;&lt;u&gt;è facile moltiplicare due numeri primi ma è più difficile partendo dal risultato trovare i due numeri primi che moltiplicati ci danno il risultato stesso&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;h2&gt;
Chiave pubblica e privata&lt;/h2&gt;
In una delle scorse parti di questa guida sulla crittografia abbiamo parlato di chiavi e abbiamo visto nel dettaglio cosa è una chiave e qual è il suo scopo. Se ancora non hai letto la &lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-3-criptare-un-file.html&quot; target=&quot;_blank&quot;&gt;parte precedente&lt;/a&gt; in questione ti consiglio di farlo. &lt;br /&gt;
&lt;br /&gt;
Chiave pubblica e privata è un argomento strettamente correlato con le funzioni non reversibili visto che ne fa largo uso.&lt;br /&gt;
&lt;br /&gt;
Per comprendere il concetto di chiave pubblica e privata, partiamo da questa domanda: come fanno a comunicare due PC in una rete in modo sicuro?&lt;br /&gt;
&lt;br /&gt;
Consideriamo il PC A e il PC B. A invia il messaggio &quot;ciao&quot; a B.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-prxz6BrzUPw/Vtbrd1-8PeI/AAAAAAAAAb0/Fvslz9_pWb4/s1600/crittografia_3_1.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-prxz6BrzUPw/Vtbrd1-8PeI/AAAAAAAAAb0/Fvslz9_pWb4/s1600/crittografia_3_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Ad un certo punto si intromette (si connette alla stessa rete) il PC C, il quale riesce ad intercettare il messaggio inviato da A a B. Lo legge, il messaggio è: &quot;ciao&quot;. Ora immagina se quel messaggio fosse stato una password o un qualunque altro dato sensibile. Questo metodo di comunicazione non è per niente sicuro (ecco perché la freccia è rossa). A e B devono trovare un modo più sicuro per comunicare.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-OESptbv-Y58/VtbsYkyix7I/AAAAAAAAAcA/UpAWXheOPyU/s1600/crittografia_3_2.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-OESptbv-Y58/VtbsYkyix7I/AAAAAAAAAcA/UpAWXheOPyU/s1600/crittografia_3_2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Ecco che entrano in azione la chiave pubblica e la chiave privata. A e B hanno entrambi una chiave pubblica che mettono a disposizione di chiunque e chiunque può venirne a conoscenza, e una chiave privata che solo il possessore può conoscere.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://3.bp.blogspot.com/--pvXmSl9ePs/VtbuMquCy1I/AAAAAAAAAcM/-Z-Eczx9Akc/s1600/crittografia_3_3.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://3.bp.blogspot.com/--pvXmSl9ePs/VtbuMquCy1I/AAAAAAAAAcM/-Z-Eczx9Akc/s1600/crittografia_3_3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Quindi sia A che B hanno 2 chiavi. Quella disegnata più grande è la chiave pubblica, mentre quella più piccola è la chiave privata. Se A vuole inviare un messaggio a B deve prendere la chiave pubblica di B e criptare il messaggio con tale chiave. Poi invia il messaggio criptato a B.&amp;nbsp;&lt;b style=&quot;text-decoration: underline;&quot;&gt;Tale messaggio potrà essere decriptato solo con la chiave privata di B&lt;/b&gt;, di cui solo B ne è a conoscenza.&lt;br /&gt;
&lt;br /&gt;
Viceversa, se B volesse inviare un messaggio ad A, dovrebbe prendere la chiave pubblica di A e criptare il messaggio con tale chiave. Poi lo invia ad A. Tale messaggio potrà essere decriptato solo con la chiave privata di A, di cui solo A ne è a conoscenza.&lt;br /&gt;
&lt;br /&gt;
Nel nostro esempio A vuole inviare a B il messaggio &quot;ciao&quot;. Prende la chiave pubblica di B e cripta il messaggio &quot;ciao&quot; con tale chiave. Il messaggio criptato che ne risulta, ad esempio, è &quot;hjkl&quot; (come nell&#39;immagine di sopra). B riceve il messaggio, lo visualizza e lo decripta con la sua chiave privata (ricordo che il messaggio può essere decriptato solo con la chiave privata di B). B vede che il messaggio in chiaro (decriptato) che A ha voluto inviargli è &quot;ciao&quot;. Il PC B, a questo punto, può decidere cosa rispondere ad A criptando la risposta con la chiave pubblica di A e inviando la risposta criptata ad A.&lt;br /&gt;
&lt;br /&gt;
Se C si intromettesse mentre A invia il messaggio (criptato ovviamente) a B?&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-Hl7MFfk4Npg/VtbwwuDY0nI/AAAAAAAAAcY/2R_nRzcs0Ng/s1600/crittografia_3_4.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://1.bp.blogspot.com/-Hl7MFfk4Npg/VtbwwuDY0nI/AAAAAAAAAcY/2R_nRzcs0Ng/s1600/crittografia_3_4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Il PC intercetterebbe il messaggio. Il messaggio è &quot;hjkl&quot;. Ma C non potrà mai sapere cosa significa visto che non possiede la chiave per decriptarlo (ovvero la chiave privata di B). Quindi possiamo definire sicuro questo metodo di comunicazione (ecco perché la freccia è verde).&lt;br /&gt;
&lt;br /&gt;
Per chi non lo sapesse, questo è il metodo di comunicazione delle nostre reti (LAN, WiFi, ecc..).&lt;br /&gt;
&lt;br /&gt;
Possiamo considerare, quindi, la chiave privata come se fosse i due numeri primi x e y dell&#39;esempio precedente. Mentre la chiave pubblica come se fosse il numero z (ovvero il risultato di x * y).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;È facile criptare un messaggio con z, però poi per decriptarlo occorrono i due numeri primi x e y che moltiplicati ci diano come risultato z.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ecco perché il metodo di comunicazione con chiave pubblica e privata è strettamente correlato alle funzioni non reversibili.&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Capisco che questo articolo è stato principalmente teorico (anche se gli esempi sono abbastanza pratici). Nella prossima parte non vedremo come creare una funzione di cifratura non reversibile (questo è compito degli informatici teorici e dei matematici, e non è neanche semplice), noi ci limiteremo a capire come criptare un messaggio con una funzione non reversibile utilizzando funzioni moderne e all&#39;avanguardia, e come è possibile decriptare le stringhe cifrate.
&lt;br /&gt;
&lt;br /&gt;
Se hai dubbi, domande o problemi col codice non esitare a scrivere nei commenti.
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-3-criptare-un-file.html&quot;&gt;&amp;lt; Parte 3&lt;/a&gt; &amp;nbsp;| &amp;nbsp;&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-5-funzioni-di-hash.html&quot;&gt;Parte 5 &amp;gt;&lt;/a&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/03/basi-di-crittografia-4-funzioni-non.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-146203267950098094</guid><pubDate>Tue, 15 Mar 2016 16:18:00 +0000</pubDate><atom:updated>2022-04-01T13:46:29.185+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #3 - Criptare Un File</title><description>Eccoci con un fresco articolo sulla crittografia. Questa parte sarà molto pratica e per niente noiosa, vedremo infatti in maniera approfondita come criptare un file con una nostra funzione personalizzata.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s1600/basi_crittografia.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Criptare un file&lt;/h2&gt;
Perché è importante criptare un file? Perché se esso contiene informazioni sensibili (come ad esempio la tua email e la tua password) allora deve essere reso più sicuro e magari illegibile per chi mette le mani sul file.&lt;br /&gt;
&lt;br /&gt;
Ipotizziamo che sul tuo PC ci sia il file &quot;varie.txt&quot;, il suo contenuto è il seguente:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Email: mia-email@email.it&lt;br /&gt;
Password: 123password123&lt;/blockquote&gt;
Questo file sarà una delizia per chi lo aprirà e lo leggerà, infatti egli avrà accesso alla tua email visto che ora conosce le tue credenziali di login. In che modo avrà accesso al file non è interesse di questa guida, infatti ci sono tantissimi metodi per farlo: con un &lt;a href=&quot;http://www.diventarehacker.it/2013/03/rat-controllare-un-pc-distanza.html&quot; target=&quot;_blank&quot;&gt;RAT&lt;/a&gt;, oppure semplicemente avendo accesso fisico al tuo PC (se te lo rubano, ad esempio).&lt;br /&gt;
&lt;br /&gt;
Questo è uno dei tanti motivi per cui è buona cosa criptare un file che contiene dati sensibili.&lt;br /&gt;
&lt;br /&gt;
Ovviamente, in questa guida scriveremo una funzione semplice ed elementare per criptare un file, esistono tantissime altre funzioni più affidabili. Basta googlare.
&lt;br /&gt;
&lt;h2&gt;
Esempio in Python&lt;/h2&gt;
Cosa dovrà fare il nostro codice:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Impostare la chiave con cui cripteremo e quella con cui decripteremo i file (le memorizziamo nelle variabili &quot;chiaveDiCifratura&quot; e &quot;chiavePerDecriptare&quot; rispettivamente). La nostra chiave di cifratura potrà essere qualsiasi vettore numerico, nel nostro esempio sarà (2, 8, -1, 4). La chiave per decriptare sarà, quindi, la sua inversa ovvero (-2, -8, 1, -4).&lt;/li&gt;
&lt;li&gt;Aprire il file da criptare (o decriptare) in modalità lettura.&lt;/li&gt;
&lt;li&gt;Leggere il suo contenuto e memorizzarlo in una variabile (che chiameremo &quot;contenuto&quot;).&lt;/li&gt;
&lt;li&gt;Chiudere il file.&lt;/li&gt;
&lt;li&gt;Criptare la variabile &quot;contenuto&quot; (che altro non è che una stringa, ed è proprio il contenuto del file letto) con la chiave memorizzata nella variabile &quot;chiaveDiCifratura&quot;. Il contenuto verrà criptato una con la funzione creata nella parte precedente modificata in modo da poter criptare non solo lettere minuscole ma anche le maiuscole e i caratteri speciali (come lo spazio, @, =, !, ecc...). Ecco la nuova funzione: &lt;a href=&quot;http://pastebin.com/SFV6zAWb&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt; al codice. Non dovrebbero esserci problemi nel comprenderla.&lt;/li&gt;
&lt;li&gt;Memorizzare il contenuto criptato nella variabile &quot;contenutoCriptato&quot;.&lt;/li&gt;
&lt;li&gt;Aprire il file in modalità scrittura.&lt;/li&gt;
&lt;li&gt;Scrivere nel file il &quot;contenutoCriptato&quot;.&lt;/li&gt;
&lt;li&gt;Chiudere il file.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Ecco il codice completo che ne risulta:&lt;/div&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
chiaveDiCifratura = (2, 8, -1, 4)&lt;br /&gt;
chiavePerDecriptare = (-2, -8, 1, -4)&lt;br /&gt;
def cripta(stringa, chiave):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; stringaCifrata = &quot;&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; for lettera in stringa:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stringaCifrata += chr((ord(lettera) + chiave[i]) % 128)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i += 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i &amp;gt;= len(chiave):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return stringaCifrata&lt;br /&gt;
&lt;br /&gt;
def criptaFile(nomeFile):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f = open(nomeFile, &quot;r&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; contenuto = f.read()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.close()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; contenutoCriptato = cripta(contenuto, chiaveDiCifratura)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f = open(nomeFile, &quot;w&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.write(contenutoCriptato)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.close()&lt;br /&gt;
&lt;br /&gt;
def decriptaFile(nomeFile):&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f = open(nomeFile, &quot;r&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; contenuto = f.read()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.close()&lt;br /&gt;
&amp;nbsp; &amp;nbsp; contenutoCriptato = cripta(contenuto, chiavePerDecriptare)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f = open(nomeFile, &quot;w&quot;)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.write(contenutoCriptato)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; f.close()&lt;/blockquote&gt;
&lt;div&gt;
&lt;a href=&quot;http://pastebin.com/Cc9XCpL1&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt; al codice.&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
&lt;b&gt;&lt;u&gt;Nota&lt;/u&gt;&lt;/b&gt;: l&#39;unica differenza tra la funzione criptaFile() e decriptaFile() è che la prima cripta con la &quot;chiaveDiCifratura&quot; mentre la seconda cripta con la &quot;chiavePerDecriptare&quot;.&lt;br /&gt;
&lt;br /&gt;
Ora, se vuoi criptare un file (nel nostro esempio il file si chiama &quot;varie.txt&quot;) ti basta inserire in fondo al codice:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
criptaFile(&quot;varie.txt&quot;)&lt;/blockquote&gt;
ed avviare lo script.&lt;br /&gt;
&lt;br /&gt;
Mentre se vuoi decriptare un file che hai già criptato in precedenza ti basterà aggiungere:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
decriptaFile(&quot;varie.txt&quot;)&lt;/blockquote&gt;
ed avviare lo script.&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Questa parte della guida sulla crittografia è stata prevalentemente pratica, la prossima, invece, sarà più teorica. Il mio consiglio è quello di non saltare la teoria perché è utile tanto quanto la pratica.&lt;br /&gt;
&lt;br /&gt;
Nella prossima parte vedremo come creare funzioni di cifratura non reversibili.&lt;br /&gt;
&lt;br /&gt;
Se hai dubbi, domande o problemi col codice non esitare a scrivere nei commenti.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-2-cifratura-chiavi.html&quot;&gt;&amp;lt; Parte 2&lt;/a&gt; &amp;nbsp;| &amp;nbsp;&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-4-funzioni-non.html&quot;&gt;Parte 4 &amp;gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/03/basi-di-crittografia-3-criptare-un-file.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-5268049339812816787</guid><pubDate>Sun, 13 Mar 2016 08:00:00 +0000</pubDate><atom:updated>2016-03-19T23:25:03.679+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #2 - Cifratura A Chiavi</title><description>Ecco la seconda parte della tanto attesa guida sulla crittografia. La &lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-1-cose-la.html&quot; target=&quot;_blank&quot;&gt;prima parte&lt;/a&gt; è stata un&#39;introduzione a ciò che andremo a studiare più nel dettaglio in questi successivi articoli. Abbiamo scoperto l&#39;importanza della crittografia e abbiamo anche visto un primo esempio banale utilizzando il linguaggio di programmazione Python.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s1600/basi_crittografia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Crittografia a Chiavi​&lt;/h2&gt;
Nella guida precedente abbiamo parlato di una funzione banale e primitiva di crittografia, ovvero sostituire una lettera con la sua successiva. Ma è possibile rendere questa funzione un po&#39; più complicata attraverso il sistema a chiavi.&lt;br /&gt;
&lt;br /&gt;
Se voglio, ad esempio, criptare il messaggio:&lt;br /&gt;
&lt;br /&gt;
CIAO AMICO&lt;br /&gt;
&lt;br /&gt;
Posso fare in modo di sostituire ogni lettera, anziché con la sua successiva, con la lettera che viene, ad esempio, dopo 2 posizioni (o 3, o 4, ecc...).&lt;br /&gt;
&lt;br /&gt;
Cosa significa criptare il messaggio CIAO AMICO con la chiave (3, 5, 6)?&lt;br /&gt;
&lt;br /&gt;
Significa che voglio fare in modo che la prima lettera, la C, venga sostituita con la lettera che viene dopo 3 posizioni, cioè la F. Voglio, inoltre, che le seconda lettera, la I, venga sostituita con la lettera che viene dopo 5 posizioni, cioè la N. Voglio che la terza lettera, la A, venga sostituita con la lettera che viene dopo 6 posizioni, cioè la G. Con cosa devo sostituire la quarta lettera? Beh, si ricomincia dal 3. Quindi, la quarta lettera, la O, viene sostituita con la lettera dopo 3 posizioni, cioè la R. E così via.&lt;br /&gt;
&lt;br /&gt;
Il messaggio criptato che ne consegue è:&lt;br /&gt;
&lt;br /&gt;
FNGR FSLHU&lt;br /&gt;
&lt;br /&gt;
Nota bene: Avremmo potuto decidere anche di sostituire ogni lettera con la lettera che la precede di un numero di posizioni. Ad esempio, sostituire la prima lettera, la C, con la lettera che la precede di 3 posizioni, cioè la Z (poiché prima della A si ricomincia a contare dalla Z e viceversa). Sostituire la seconda lettera, la I, con quella che la precede di 5 posizioni, cioè la D. E così via.&lt;br /&gt;
&lt;br /&gt;
Avremmo anche potuto decidere di sostituire alternativamente una lettera con la successiva di 3 posizioni, una lettera con la precedente di 5 posizioni, una lettera con la successiva di 6 posizioni, e così via.&lt;br /&gt;
&lt;br /&gt;
La chiave resta la stessa, cioè (3, 5, 6), ma cambia la cifratura, ovvero il metodo con cui si cripta il messaggio.&lt;br /&gt;
&lt;br /&gt;
Questo ci fa capire che la chiave prescinde dal modo di cifrare. E ci fa capire allo stesso tempo che se vuoi comunicare attraverso messaggi criptati con una chiave, sia tu che il tuo interlocutore dovete conoscere sia il metodo di cifratura che la chiave.&lt;br /&gt;
&lt;h2&gt;
Script in Python​&lt;/h2&gt;
Vogliamo ora scrivere una funzione che data una stringa da cifrare ed una chiave (una lista di numeri), restituisca il messaggio cifrato (criptato).&lt;br /&gt;
&lt;br /&gt;
Il metodo di cifratura che vogliamo utilizzare è quello mostrato sopra. Ovvero sostituire ogni lettera con la successiva di N posizioni. Il numero N varia in base ai numeri della chiave.&lt;br /&gt;
&lt;br /&gt;
Così come nella parte precedente della guida, vogliamo criptare solo le lettere minuscole lasciando invariati gli spazi e gli altri caratteri.&lt;br /&gt;
&lt;br /&gt;
Ecco il codice che ne risulta:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
def cripta(stringa, chiave):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata = &quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stringa = stringa.lower()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lettera in stringa:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; posizione = (ord(lettera) - 97 + chiave[i]) % 26&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ord(lettera) &amp;gt;= 97 and ord(lettera) &amp;lt;= 122:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata += chr(97 + posizione)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i += 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata += lettera&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if i &amp;gt;= len(chiave):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return stringaCifrata&lt;/blockquote&gt;
&lt;a href=&quot;http://pastebin.com/1H2KUWXY&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt; al codice.
&lt;br /&gt;
&lt;br /&gt;
La variabile i svolge un ruolo fondamentale. Essa prende ogni volta un numero dalla chiave (la chiave è appunto una lista, ovvero una sequenza di numeri) che sta ad indicare di quante posizioni deve essere scalata la lettera corrente. Se chiave[ i ] è 3, allora la lettera corrente deve essere sostituita con quella che viene dopo 3 posizioni.&lt;br /&gt;
&lt;br /&gt;
La chiave può contenere anche numeri negativi. Se, ad esempio, chiave[ i ] è -5, allora la lettera corrente deve essere sostituita con quella che viene prima di 5 posizioni.&lt;br /&gt;
&lt;br /&gt;
Il codice&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
posizione = (ord(lettera) - 97 + chiave[i]) % 26&lt;/blockquote&gt;
assegna alla variabile posizione un valore. Questo valore ha un significato preciso ma è difficile spiegarlo teoricamente. Ad esempio, se la lettera corrente è C e chiave[ i ] è 2, allora la lettera cifrata, quella che sostituirà la C, sarà la F. La F nell&#39;alfabeto occupa la quinta posizione. La variabile posizione allora sarà 4, ovvero la quinta posizione (in Informatica si inizia a contare da 0, quindi il 4 è in quinta posizione: 0, 1, 2, 3, 4).&lt;br /&gt;
&lt;h2&gt;
Decriptare&lt;/h2&gt;
Nella prima parte ho mostrato solo la funzione che cripta, ora mostrerò anche come decriptare un messaggio.&lt;br /&gt;
&lt;br /&gt;
Innanzitutto, proviamo a criptare (con la funzione in Python di sopra) la stringa:&lt;br /&gt;
&lt;br /&gt;
ciao a tutti&lt;br /&gt;
&lt;br /&gt;
con la chiave:&lt;br /&gt;
&lt;br /&gt;
(3, 8, 2, 5)&lt;br /&gt;
&lt;br /&gt;
In Python scriveremo così:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
print cripta(&quot;ciao a tutti&quot;, (3, 8, 2, 5))&lt;/blockquote&gt;
L&#39;output, ovvero il messaggio criptato, sarà:&lt;br /&gt;
&lt;br /&gt;
fqct d bwywq&lt;br /&gt;
&lt;br /&gt;
Ma da questo messaggio cifrato, sapendo la chiave, è possibile ottenerne il messaggio originario (chiamato messaggio in chiaro)? Sì, è possibile. Addirittura lo si può decifrare utilizzando la funzione &quot;cripta&quot; stessa ed inserendo come parametri il messaggio cifrato e la chiave inversa, cioè (-3, -8, -2, -5).&lt;br /&gt;
&lt;br /&gt;
Codice:&lt;br /&gt;
&lt;br /&gt;
print cripta(&quot;fqct d bwywq&quot;, (-3, -8, -2, -5))&lt;br /&gt;
&lt;br /&gt;
L&#39;output sarà:&lt;br /&gt;
&lt;br /&gt;
ciao a tutti&lt;br /&gt;
&lt;br /&gt;
Questo perché accade? Ragioniamo. Vogliamo criptare la stringa &quot;fqct d bwywq&quot; con la chiave (-3, -8, -2, -5). Cosa fa il codice? Prende la prima lettera, la f, e la sostituisce con la lettera che viene prima di 3 posizioni, cioè la c. Prende la seconda lettera, la q, e la sostituisce con la lettera che viene prima di 8 posizioni, cioè la i. E così via.&lt;br /&gt;
&lt;br /&gt;
In pratica compie il procedimento inverso di quello che ha compiuto per criptare il messaggio.&lt;br /&gt;
&lt;br /&gt;
Da ciò si può notare l&#39;importanza della chiave nella crittografia.
&lt;br /&gt;
&lt;br /&gt;
Se hai dubbi, domande o problemi col codice non esitare a scrivere nei commenti.
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-1-cose-la.html&quot;&gt;&amp;lt; Parte 1&lt;/a&gt; &amp;nbsp;| &amp;nbsp;&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-3-criptare-un-file.html&quot;&gt;Parte 3 &amp;gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/03/basi-di-crittografia-2-cifratura-chiavi.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbo/PlGsFKDWKl4/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-6942209954971311489</guid><pubDate>Tue, 08 Mar 2016 16:49:00 +0000</pubDate><atom:updated>2016-03-19T23:25:44.331+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Crittografia</category><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Basi Di Crittografia #1 - Cos&#39;è La Crittografia?</title><description>Crittografia, l&#39;arte di offuscare i messaggi. Fondamentale nel mondo dell&#39;hacking. Ecco, quindi, che decido di scrivere una serie di articoli a riguardo per farti addentrare un questo intrigante mondo della crittografia. Sii assetato di conoscenza. Buona lettura.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://4.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbk/7W7IZ9HAu2Y/s1600/basi_crittografia.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; src=&quot;https://4.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbk/7W7IZ9HAu2Y/s320/basi_crittografia.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Premessa​&lt;/h2&gt;
Questa serie di guide non sono articoli a sè stanti. Essi sono in continua evoluzione e miglioramento. L&#39;autore non è il maestro, il lettore non è l&#39;alunno. Ognuno contribuisce ad arricchire questa serie (scrivendo idee e informazioni nei commenti) e chiunque può usufruire delle preziose informazioni che ne scaturiranno.&lt;br /&gt;
&lt;br /&gt;
Questi sono i requisiti per comprendere questa serie di guide:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Cervello&lt;/li&gt;
&lt;li&gt;Conoscenza delle basi di Matematica&lt;/li&gt;
&lt;li&gt;Conoscenza minima del linguaggio di programmazione Python (ci saranno esempi pratici)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
La Crittografia​&lt;/h2&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
La crittografia (dall&#39;unione di due parole greche: κρυπτóς (kryptós) che significa &quot;nascosto&quot;, e γραφία (graphía) che significa &quot;scrittura&quot;) è la branca della crittologia che tratta delle &quot;scritture nascoste&quot;, ovvero dei metodi per rendere un messaggio &quot;offuscato&quot; in modo da non essere comprensibile/intelligibile a persone non autorizzate a leggerlo.&lt;br /&gt;
&lt;br /&gt;
Fonte: Wikipedia&lt;/blockquote&gt;
La crittografia è strettamente correlata con l&#39;informatica e la matematica. Essa consiste nello studiare i vari metodi per rendere un messaggio decifrabile solo al destinatario.&lt;br /&gt;
&lt;br /&gt;
Non va confusa con la crittanalisi che consiste nel decifrare i messaggi crittografati. Ci occuperemo anche di crittanalisi.&lt;br /&gt;
&lt;br /&gt;
La scienza che comprende sia crittografia che crittanalisi è chiamata crittologia.&lt;br /&gt;
&lt;br /&gt;
Esempio:&lt;br /&gt;
Ritorniamo indietro nel tempo, ai tempi della tua adolescenza (ad esempio 13-14 anni). Ipotizza che sei a scuola, in aula. Vuoi passare a un tuo amico del banco di fianco un &quot;biglietto&quot; su cui è scritta una frase che potete comprendere solo tra voi. Entrambi conoscete come scrivere messaggi in maniera &quot;incomprensibile&quot; per gli altri e comprensibile solo per voi.&lt;br /&gt;
&lt;br /&gt;
Sul biglietto scrivi:&lt;br /&gt;
&lt;br /&gt;
DPN&#39;F&#39; BOEBUB JFSJ MB QBSUJUB?&lt;br /&gt;
&lt;br /&gt;
Passi il biglietto al tuo amico. Lui legge e capisce che la frase è:&lt;br /&gt;
&lt;br /&gt;
COM&#39;E&#39; ANDATA IERI LA PARTITA?&lt;br /&gt;
&lt;br /&gt;
Tu ed il tuo amico avete un sistema tutto vostro di comunicare. In pratica, quando tu o lui scrivete una frase &quot;incomprensibile&quot; per gli altri quello che fate è sostituire ogni lettera con la sua successiva. Della frase che gli hai voluto inviare &quot;COM&#39;E&#39; ANDATA IERI LA PARTITA?&quot; hai preso la C e l&#39;hai sostituita con la sua successiva, la D; hai preso la O e l&#39;hai sostituita con la sua successiva, la P; hai preso la M e l&#39;hai sostituita con la N e così via.&lt;br /&gt;
&lt;br /&gt;
La frase cifrata risultante è stata: &quot;DPN&#39;F&#39; BOEBUB JFSJ DPO MBVSB?&quot;. Il tuo amico sa che deve sostituire ogni lettera con la sua precedente per capirne il significato originario. Prende la D e la sostituisce con la precedente, la C; prende la P e la sostituisce con la precedente, la O; prende la N e la sostituisce con la M e così via. In questo modo riesce a capire che la frase che gli hai inviato ha il significato &quot;COM&#39;E&#39; ANDATA IERI LA PARTITA?&quot; che è la frase decifrata.&lt;br /&gt;
&lt;br /&gt;
Il tuo amico dunque sa cosa gli hai voluto dire. Sa anche cosa risponderti, ma per scriverlo sul biglietto di risposta che vuole passarti deve crifrarlo, ovvero utilizzare la stessa tecnica che hai usato tu (sostituire ogni lettera con la successiva) in modo che gli altri non possano comprenderne il significato. Scrive il messaggio cifrato sul biglietto, ma proprio mentre sta per passartelo la prof lo sgama.&lt;br /&gt;
&lt;br /&gt;
Sul biglietto c&#39;era scritto:&lt;br /&gt;
&lt;br /&gt;
BCCJBNP TUSBWJOUP&lt;br /&gt;
&lt;br /&gt;
Conoscendone il significato, ottimo direi...&lt;br /&gt;
&lt;br /&gt;
Ma la prof non sa cosa vuol dire quella strana scritta. Quindi lascia perdere.&lt;br /&gt;
&lt;h2&gt;
Primi esempi in Python​&lt;/h2&gt;
Utilizzando il linguaggio di programmazione Python (&lt;a href=&quot;http://www.python.it/download/&quot; target=&quot;_blank&quot;&gt;download&lt;/a&gt;, consiglio la versione 2.7 che è quella che sarà utilizzata in queste guide) inizieremo ad approcciare il mondo della crittografia.&lt;br /&gt;
&lt;br /&gt;
Sappiamo un primo metodo banale per criptare una frase (una stringa) che consiste nel sostituire ogni lettera con la successiva. Come possiamo scrivere un codice in Python che fa lo stesso?&lt;br /&gt;
&lt;br /&gt;
In Python c&#39;è una funzione molto utile: ord(carattere). A questa funzione dai un carattere come parametro (ad esempio &#39;c&#39; oppure &#39;A&#39;) ed essa ritorna il suo corrispondente numero ASCII (se non sai cos&#39;è cerca su Google &quot;tabella ASCII&quot;, in pratica ad ogni lettera corrisponde un numero).&lt;br /&gt;
&lt;br /&gt;
ord(&#39;a&#39;) ritorna il valore 97. La lettera a nella tabella ASCII, infatti, ha il valore 97.&lt;br /&gt;
ord(&#39;b&#39;) ritorna il valore 98.&lt;br /&gt;
ord(&#39;c&#39;) ritorna il valore 99.&lt;br /&gt;
E così via...&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Attenzione&lt;/b&gt;&lt;/u&gt;: Il carattere &#39;a&#39; ha un valore diverso dal carattere &#39;A&#39;, in quanto sono la stessa lettera ma due caratteri diversi.&lt;br /&gt;
&lt;br /&gt;
Inoltre, in Python, c&#39;è anche un&#39;altra comoda funzione che è chr(valoreASCII). A questa funzione si passa come parametro un valore ASCII ed essa ritorna il corrispondente carattere.&lt;br /&gt;
&lt;br /&gt;
chr(97) ritorna il carattere &#39;a&#39;.&lt;br /&gt;
chr(98) ritorna il carattere &#39;b&#39;.&lt;br /&gt;
chr(99) ritorna il carattere &#39;c&#39;.&lt;br /&gt;
E così via...&lt;br /&gt;
&lt;br /&gt;
Grazie a queste due funzioni possiamo scrivere una funzione che cifra una frase sostituendo ogni lettera con la successiva.&lt;br /&gt;
&lt;br /&gt;
Innanzitutto, premettiamo che la nostra funzione cifrerà solo lettere minuscole, quindi dal carattere &#39;a&#39; al carattere &#39;z&#39;, o meglio dal valore ASCII 97 al valore 122. La nostra funzione non cifra nè gli spazi, nè gli apici, nè i caratteri speciali ma cifra solo lettere minuscole.&lt;br /&gt;
&lt;br /&gt;
La nostra funzione consiste, appunto, nel sostituire ogni lettera con la successiva. Ma cosa succede se deve sostituire la lettera &#39;z&#39; con la successiva? Deve ritornare alla &#39;a&#39;.&lt;br /&gt;
&lt;br /&gt;
Ora che abbiamo, mentalmente, il funzionamento dello script possiamo passare al codice:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
def cifra(stringa):&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata = &quot;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stringa = stringa.lower()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for lettera in stringa:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ord(lettera) &amp;gt;= 97 and ord(lettera) &amp;lt; 122:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata += chr(ord(lettera) + 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif ord(lettera) == 122:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata += &#39;a&#39;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stringaCifrata += lettera&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return stringaCifrata&lt;/blockquote&gt;
&lt;a href=&quot;http://pastebin.com/qDU96XGD&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt; al codice.&lt;br /&gt;
&lt;br /&gt;
La riga&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
stringa = stringa.lower()&lt;/blockquote&gt;
non fa altro che cercare le lettere maiuscole nella stringa da cifrare e sostituirle con le corrispondenti lettere minuscole.&lt;br /&gt;
&lt;br /&gt;
Per chi se ne intende un minimo di programmazione, il codice non dovrebbe risultare molto complicato.&lt;br /&gt;
&lt;br /&gt;
Per stampare una stringa cifrata basta scrivere il codice:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
s = cifra(&quot;com&#39;e&#39; andata ieri la partita?&quot;)&lt;br /&gt;
print s&lt;/blockquote&gt;
&lt;br /&gt;
Lascio a voi scrivere una funzione per decifrare una stringa cifrata.&lt;br /&gt;
&lt;br /&gt;
Se hai dubbi, domande o problemi col codice non esitare a scrivere nei commenti.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2016/03/basi-di-crittografia-2-cifratura-chiavi.html&quot;&gt;Parte 2 &amp;gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2016/03/basi-di-crittografia-1-cose-la.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-LwG8kqXMVpc/VshMJFS7-bI/AAAAAAAAAbk/7W7IZ9HAu2Y/s72-c/basi_crittografia.png" height="72" width="72"/><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-965187067164020402</guid><pubDate>Sat, 20 Feb 2016 10:40:00 +0000</pubDate><atom:updated>2016-03-04T21:47:23.722+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><category domain="http://www.blogger.com/atom/ns#">Python</category><category domain="http://www.blogger.com/atom/ns#">Script</category><title>Creare Un Bruteforce In Python 2.0 - Attacco A Dizionario</title><description>Eccoci qui con una video-guida aggiornata su come creare un bruteforce in Python. Nelle scorse &lt;a href=&quot;http://www.diventarehacker.it/2013/07/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;guide&lt;/a&gt; abbiamo imparato a scrivere in Python un Bruteforce puro che provasse come password ogni possibile combinazione di lettere, numeri e caratteri speciali. In questa guida &quot;fresca&quot; ed aggiornata, invece, vedremo nel dettaglio come creare un bruteforce che compia attacchi a dizionario ovvero provando password prese da una lista.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://2.bp.blogspot.com/-TksQ1w3gngI/VshBzI3AhnI/AAAAAAAAAbU/JDoJ-dS8HHM/s1600/brute_thumb.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://2.bp.blogspot.com/-TksQ1w3gngI/VshBzI3AhnI/AAAAAAAAAbU/JDoJ-dS8HHM/s320/brute_thumb.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/u4jTJxwl1ec/0.jpg&quot; src=&quot;https://www.youtube.com/embed/u4jTJxwl1ec?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
Codice finale: &lt;a href=&quot;http://pastebin.com/6kpH9xvR&quot; target=&quot;_blank&quot;&gt;pyBrute.py - Bruteforce HTTP (Dictionary Attack)&lt;/a&gt;</description><link>http://www.diventarehacker.it/2016/02/creare-un-bruteforce-in-python-20.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-TksQ1w3gngI/VshBzI3AhnI/AAAAAAAAAbU/JDoJ-dS8HHM/s72-c/brute_thumb.png" height="72" width="72"/><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-5387752884893860751</guid><pubDate>Mon, 01 Feb 2016 12:44:00 +0000</pubDate><atom:updated>2016-02-01T13:46:59.621+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">WarGames</category><title>Il Mio Viaggio Nel Mondo Dell&#39;Hacking - OverTheWire: Wargames (Bandit Level 6-7)</title><description>Dopo un periodo di assenza sul blog speso a studiare ed aggiornarmi per scrivere nuovi articoli, rieccomi in carreggiata. Questa è la terza puntata de &quot;Il Mio Viaggio Nel Mondo Dell&#39;Hacking&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s1600/wargames-bandit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s400/wargames-bandit.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Livello 6&lt;/h2&gt;
Connettiamoci:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh bandit5@bandit.labs.overthewire.org&lt;/blockquote&gt;
La password è, ovviamente, quella scoperta nel livello precedente.&lt;br /&gt;
Vediamo un po&#39; cosa abbiamo:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
Solo la cartella &lt;i&gt;inhere&lt;/i&gt;. Muoviamoci al suo interno.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cd inhere&lt;/blockquote&gt;
Diamo un&#39;occhiata:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-UP46DySXx-Q/Vq9FdumSz_I/AAAAAAAAAa0/9TTsVvh55SY/s1600/level6_1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-UP46DySXx-Q/Vq9FdumSz_I/AAAAAAAAAa0/9TTsVvh55SY/s1600/level6_1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Troppe cartelle! Se vedi in ogni cartella ci sono diversi file e non sappiamo qual è quello che contiene la password.&lt;br /&gt;
&lt;br /&gt;
Vediamo la pagina del &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit6.html&quot; target=&quot;_blank&quot;&gt;livello 6&lt;/a&gt; se ci da qualche indizio. Bene. Ci dice che la password si trova in un file che pesa 1033 bytes. Ora ci basta cercare i file che hanno quella dimensione.&lt;br /&gt;
&lt;br /&gt;
Ci viene in aiuto il comando &lt;i&gt;find&lt;/i&gt;.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
find */ -size 1033c&lt;/blockquote&gt;
Il comando &lt;i&gt;find&lt;/i&gt; cerca in tutte le cartelle nella directory in cui ci troviamo (ecco perchè il */, l&#39;asterisco significa &quot;tutto&quot;) i file che hanno dimensione (-size) 1033 bytes. La c dopo il numero 1033 sta ad indicare bytes, la c infatti significa char (carattere) e nel codice ASCII ogni carattere è un byte.&lt;br /&gt;
&lt;br /&gt;
Ecco il risultato:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-1Ka4Ciw0JfU/Vq9Kt6zPs7I/AAAAAAAAAbE/N8C7WqPn0ns/s1600/level6_2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-1Ka4Ciw0JfU/Vq9Kt6zPs7I/AAAAAAAAAbE/N8C7WqPn0ns/s1600/level6_2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ha trovato un solo file di quella dimensione quindi siamo sicuri che è quello che stiamo cercando.&lt;br /&gt;
&lt;br /&gt;
Vediamo il contenuto del file trovato ovvero &lt;i&gt;maybehere07/.file2&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat maybehere07/.file2&lt;/blockquote&gt;
Ecco la nostra password!&lt;br /&gt;
&lt;h2&gt;
Livello 7&lt;/h2&gt;
La pagina ci dice che il file che contiene la password:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;è il file i cui possessori (owners) sono l&#39;utente (user) bandit7 e il gruppo (group) bandit6&lt;/li&gt;
&lt;li&gt;inoltre il file in questione pesa 33 bytes&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Ecco di nuovo in anzione il comando &lt;i&gt;find&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
find */ -user bandit7 -group bandit6 -size 33c&lt;/blockquote&gt;
Cerca in tutti i file presenti nella directory corrente (*/) quelli il cui utente (-user) è bandit7 e il cui gruppo è bandit6 e che pesa 33 bytes. Se non sai cosa sono gli user e i group studia un po&#39; le basi di Linux.&lt;br /&gt;
&lt;br /&gt;
Il comando non ha trovato nulla. Questo significa che il file che stiamo cercando non si trova in questa directory. Muoviamoci nella directory (cartella) superiore.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cd .. &lt;/blockquote&gt;
Riproviamo col nostro comando &lt;i&gt;find&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
find */ -user bandit7 -group bandit6 -size 33c&lt;/blockquote&gt;
Ha trovato una manciata di file che rispecchiano i nostri requisiti. Il problema è che su nessuno di essi abbiamo i permessi necessari (appare la scritta &quot;Permission denied&quot;)&lt;br /&gt;
&lt;br /&gt;
Muoviamoci ancora nella directory superiore:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cd ..&lt;/blockquote&gt;
E riproviamo:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
find */ -user bandit7 -group bandit6 -size 33c &lt;/blockquote&gt;
Ha trovato molti file ma su quasi tutti non abbiamo i permessi necessari. Ce n&#39;è solo uno su cui non appare la scritta &quot;Permission denied&quot;, è il file che stiamo cercando (&lt;i&gt;var/lib/dpkg/info/bandit7.password&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Vediamo il suo contenuto:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
car var/lib/dpkg/info/bandit7.password&lt;/blockquote&gt;
Et voilà!</description><link>http://www.diventarehacker.it/2016/02/il-mio-viaggio-nel-mondo-dellhacking.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s72-c/wargames-bandit.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-1990244594328982967</guid><pubDate>Sun, 01 Nov 2015 09:03:00 +0000</pubDate><atom:updated>2015-11-01T10:03:00.651+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Network</category><category domain="http://www.blogger.com/atom/ns#">Smartphone</category><category domain="http://www.blogger.com/atom/ns#">Wi-Fi</category><title>Scoprire Password Con Android In Una Rete WiFi</title><description>Tutto è vulnerabile. La sicurezza online non esiste. La sicurezza in una rete non esiste. È tutto solo una mera e semplice illusione. Tieniti forte perché sto per dirti quanto è vulnerabile una rete WiFi e com&#39;è possibile prendere informazioni e dati sensibili attraverso di essa. Pensaci: entri in un Bar/Caffè dove c&#39;è una rete WiFi, ti connetti col tuo smartphone ed inizi a prendere informazioni riguardo le altre persone connesse. Ovviamente è illegale (e non ti incoraggio a farlo) ma è possibile ed anche semplice.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-iJeHGGFGb-g/VjT_ga_1tbI/AAAAAAAAAag/0f_ErOtMdOc/s1600/SniffingAndroid.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://4.bp.blogspot.com/-iJeHGGFGb-g/VjT_ga_1tbI/AAAAAAAAAag/0f_ErOtMdOc/s400/SniffingAndroid.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;
Avvertenze&lt;/h2&gt;
&lt;div&gt;
Prima di entrare nel cuore di questo articolo mi è doveroso fare delle premesse: questo articolo è a scopo puramente informativo, esso vuole informarti sui rischi che si corre anche quando si è connessi ad una semplice rete WiFi ma non vuole essere assolutamente di incoraggiamento a compiere reati informatici quali lo sniffing di dati sensibili.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Tutto ciò che troverai scritto in questo articolo potrai tranquillamente provarlo su dispositivi di tua proprietà nella tua rete oppure su dispositivi su cui hai il permesso di fare test di sicurezza.&lt;br /&gt;&lt;h2&gt;
Sniffing&lt;/h2&gt;
La tecnica che sto per mostrarti è la tecnica dello&lt;i&gt; sniffing&lt;/i&gt; (che in inglese significa letteralmente &quot;sniffare&quot;). Consiste nell&#39;intercettare pacchetti in rete di cui non si è il destinatario. Quindi se, ad esempio, tu e Bob siete connessi in una rete WiFi (in cui pacchetti viaggiano nell&#39;aria sottoforma di onde radio, quindi sono facilmente intercettabili) e Bob decide di connettersi a Facebook inserendo email e password. Tu intercetti il pacchetto che Bob invia a Facebook, pacchetto che contiene anche email e password di Bob. Detta in soldoni, questo è lo sniffing.&lt;br /&gt;
&lt;br /&gt;
Piccola curiosità: la Germania ha perso la Seconda Guerra Mondiale perché l&#39;Inghilterra &quot;sniffava&quot; i messaggi dei tedeschi e li decriptava (grazie a Turing e alla macchina Enigma).&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Sniffare con uno smartphone Android&lt;/h2&gt;
C&#39;è un app molto utile per Android (che non trovi nell&#39;app store) che si chiama zAnti. Puoi scaricarla gratuitamente dal &lt;a href=&quot;https://www.zimperium.com/zanti-mobile-penetration-testing&quot; target=&quot;_blank&quot;&gt;sito ufficiale&lt;/a&gt;, attualmente c&#39;è la seconda versione, ovvero zAnti 2. Questo software è stato sviluppato apposta per il &lt;a href=&quot;https://it.wikipedia.org/wiki/Penetration_Test&quot; target=&quot;_blank&quot;&gt;pentesting&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Una volta scaricato il file APK, installa l&#39;applicazione ed avviala. Ti chiederà di registrarti con la tua email Google. Una volta aver completato la registrazione dovrebbe apparirti questa schermata:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-i7u5azcPFek/VjT1UpUTnUI/AAAAAAAAAZ4/3PQAS6ltMzY/s1600/SniffingAndroid1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/-i7u5azcPFek/VjT1UpUTnUI/AAAAAAAAAZ4/3PQAS6ltMzY/s400/SniffingAndroid1.png&quot; width=&quot;232&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ah, ovviamente do per scontato che il tuo smartphone abbia i permessi di root e che sia connesso ad una rete WiFi. In pratica zAnti non ha fatto altro che una scansione della rete rilevando tutti i dispositivi connessi.&lt;br /&gt;
&lt;br /&gt;
Possiamo scegliere su quale dispositivo compiere lo sniffing oppure sceglierli tutti selezionando la prima opzione &lt;i&gt;Entire Network&lt;/i&gt;. Io scelgo l&#39;intero network. Dovrebbero apparirci diverse opzioni:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-MLNtylvaJKQ/VjT2jXJHTLI/AAAAAAAAAaE/8Y_CKamhFcI/s1600/SniffingAndroid2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/-MLNtylvaJKQ/VjT2jXJHTLI/AAAAAAAAAaE/8Y_CKamhFcI/s400/SniffingAndroid2.png&quot; width=&quot;233&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
La tecnica che vogliamo utilizzare è &lt;i&gt;Man In The Middle&lt;/i&gt; (che significa &quot;uomo nel mezzo&quot;) che consiste nel mettersi tra un dispositivo (nel nostro caso tutti i dispositivi perché abbiamo scelto &lt;i&gt;Entire Network&lt;/i&gt;) ed il router intercettando i pacchetti (quindi non è altro che la tecnica di sniffing). Premi su &lt;i&gt;Man In The Middle&lt;/i&gt; e poi fai partire lo sniffing premendo sul tasto in alto a destra dove c&#39;è &lt;i&gt;OFF&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-SSUyjbPXc4U/VjT3e2GXRMI/AAAAAAAAAaQ/G2vx0MY3cNI/s1600/SniffingAndroid3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/-SSUyjbPXc4U/VjT3e2GXRMI/AAAAAAAAAaQ/G2vx0MY3cNI/s400/SniffingAndroid3.png&quot; width=&quot;233&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Per vedere i pacchetti intercettati vedi le &lt;i&gt;Logged Requests&lt;/i&gt;. Tra tutti i pacchetti intercettati quelli scritti in giallo sono quelli che contengono delle password, più precisamente contengono delle form request (ad esempio quando un utente fa il login su un sito web).&lt;br /&gt;
&lt;br /&gt;
Ci sono tante altre opzioni che ti consiglio di studiare e sperimentare come &lt;i&gt;Redirect HTTP&lt;/i&gt; o &lt;i&gt;Replace Images&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Non solo sniffing...&lt;/h2&gt;
Con zAnti non si può solo sniffare ma compiere anche altre operazioni di pentesting. Puoi connetterti tramite SSH ad un altro smartphone e, quindi, prenderne &quot;il comando&quot;. È davvero un software ben fatto.&lt;br /&gt;
&lt;br /&gt;
Ecco una dimostrazione delle capacità di zAnti (i video non li ho fatti io):&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/xq6yM2Lk1rg/0.jpg&quot; src=&quot;https://www.youtube.com/embed/xq6yM2Lk1rg?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/7URCG6LTTqQ/0.jpg&quot; src=&quot;https://www.youtube.com/embed/7URCG6LTTqQ?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2015/11/scoprire-password-con-android-in-una.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-iJeHGGFGb-g/VjT_ga_1tbI/AAAAAAAAAag/0f_ErOtMdOc/s72-c/SniffingAndroid.png" height="72" width="72"/><thr:total>26</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-6584926452097909012</guid><pubDate>Mon, 19 Oct 2015 06:27:00 +0000</pubDate><atom:updated>2015-10-19T08:27:00.140+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">WarGames</category><title>Il Mio Viaggio Nel Mondo Dell&#39;Hacking - OverTheWire: Wargames (Bandit Level 3-5)</title><description>Nel precedente &lt;a href=&quot;http://www.diventarehacker.it/2015/10/il-mio-viaggio-nel-mondo-dellhacking.html&quot; target=&quot;_blank&quot;&gt;articolo&lt;/a&gt; ho introdotto i wargames (sfide hacking) del sito &lt;a href=&quot;http://overthewire.org/wargames/&quot; target=&quot;_blank&quot;&gt;OverTheWire&lt;/a&gt; di cui sono rimasto affascinato. Ho deciso quindi di intraprendere una serie di post in merito ed ho riscontrato entusiasmo nei lettori. Le wargames piacciono e c&#39;è poco da discutere. L&#39;importante è saperle usare per comprendere l&#39;hacking, non leggerle come se fosse un passatempo (puoi anche farlo ma non ne riceverai nulla in cambio). Bene. Ora superiamo i prossimi livelli.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s1600/wargames-bandit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s400/wargames-bandit.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;h2&gt;
Livello 3&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Il secondo livello è stato leggermente impegnativo, dico leggermente. Ci ha preparato per ciò che viene in seguito.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Il &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit3.html&quot; target=&quot;_blank&quot;&gt;livello 3&lt;/a&gt; si prospetta non molto complicato, forse più semplice del livello precedente. In pratica la password è dentro il file che si chiama &lt;b&gt;&lt;i&gt;spaces in this filename&lt;/i&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Connettiamoci.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh bandit2@bandit.labs.overthewire.org&lt;/blockquote&gt;
Inserisci la password che hai ottenuto nel livello precedente.&lt;br /&gt;
&lt;br /&gt;
Bene. Ora vediamo i file presenti sul server:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
L&#39;unico file presente è quello che cerchiamo. Apriamolo:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat spaces in this filename&lt;/blockquote&gt;
Errore. Questo accade perchè il comando cat è come se prendesse in input come file da leggere solo &quot;spaces&quot;, le altre parole le considera come comandi a parte (i comandi infatti sono distaccati dagli spazi). Il problema è risolto semplicemente inserendo le virgolette in modo da far considerare il nome del file come unico blocco e non come tanti parametri separati dagli spazi.&lt;br /&gt;
&lt;br /&gt;
Scrivi, quindi:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat &quot;spaces in this filename&quot;&lt;/blockquote&gt;
Password trovata! Avanti il prossimo livello.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Livello 4&lt;/h2&gt;
La pagina del &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit4.html&quot; target=&quot;_blank&quot;&gt;livello 4&lt;/a&gt; ci dice che la password è contenuta in un file nascosto che si trova nella cartella &lt;i&gt;inhere&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Connessione SSH:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh bandit3@bandit.labs.overthewire.org&lt;/blockquote&gt;
Usiamo il comando ls per vedere i vari file e cartelle.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
C&#39;è soltanto la cartella &lt;i&gt;inhere&lt;/i&gt;, che contiene il file che stiamo cercando. Spostiamoci nella cartella &lt;i&gt;inhere &lt;/i&gt;con il comando &lt;i&gt;cd&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cd inhere&lt;/blockquote&gt;
Ora vediamo cosa contiene tale cartella:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
Nulla. O meglio, nulla che possiamo vedere. Il file è nascosto, ricorda.&lt;br /&gt;
&lt;br /&gt;
Il comando &lt;i&gt;find&lt;/i&gt;&amp;nbsp;fa proprio al caso nostro. Esso cerca e ci mostra tutti i file che si trovano nella cartella e che rispettano dei requisiti.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
find&lt;/blockquote&gt;
Abbiamo utilizzato &lt;i&gt;find&lt;/i&gt; senza specificare parametri (senza specificare requisiti) quindi ci mostra tutti i file che la cartella contiene. Vi è un solo file ed è proprio quello che stavamo cercando. Vediamone il contenuto:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat .hidden&lt;/blockquote&gt;
Un&#39;altra password trovata. Facile come bere un bicchiere d&#39;acqua...&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Livello 5&lt;/h2&gt;
&lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit5.html&quot; target=&quot;_blank&quot;&gt;Livello 5&lt;/a&gt;: la password, come nel livello precedente, si trova in un file nella cartella &lt;i&gt;inhere&lt;/i&gt; ma stavolta non ci sarà un unico file. La password si troverà nell&#39;unico file con caratteri comprensibili, gli altri file avranno dei caratteri speciali non comprensibili.&lt;br /&gt;
&lt;br /&gt;
Diamo un&#39;occhiata alle cartelle.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
Bene. Ora spostiamoci nella cartella &lt;i&gt;inhere&lt;/i&gt;.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cd inhere&lt;/blockquote&gt;
Vediamo quanti e quali file contiene:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
Beh, ce ne sono 10. Proviamo ad aprire il primo file (ricorda di inserire &lt;b&gt;./&lt;/b&gt; perché il nome del file inizia con un trattino).&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat ./-file00&lt;/blockquote&gt;
Caratteri incomprensibili. Non è ciò che stiamo cercando. Proviamo col secondo file.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat ./-file01&lt;/blockquote&gt;
Neanche. Tenta fin quando non trovi la password (caratteri comprensibili). Il file che contiene la password dovrebbe essere &lt;i&gt;-file07&lt;/i&gt;.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat ./file07&lt;/blockquote&gt;
Password trovata e altro livello completato.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Ho deciso di proporre al massimo 3-4 livelli per articolo, anziché molti, per due ragioni: la prima è che impiego meno tempo nello scrivere l&#39;articolo, quindi i miei cari lettori aspetteranno meno tempo tra un articolo e l&#39;altro; la seconda è che in questo modo chi legge riesce a metabolizzare sia il funzionamento dei comandi che il processo di pensiero per risolvere questi wargames che, a mio avviso, sono abbastanza coinvolgenti.&lt;br /&gt;
&lt;br /&gt;
Ovviamente, se hai dei consigli, proposte, critiche, scrivi nei commenti.&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2015/10/il-mio-viaggio-nel-mondo-dellhacking_19.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZc/kHFpJx-0aoc/s72-c/wargames-bandit.png" height="72" width="72"/><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-8697204240186817001</guid><pubDate>Tue, 13 Oct 2015 19:57:00 +0000</pubDate><atom:updated>2015-10-13T22:06:35.113+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Linux</category><category domain="http://www.blogger.com/atom/ns#">WarGames</category><title>Il Mio Viaggio Nel Mondo Dell&#39;Hacking - OverTheWire: Wargames (Bandit Level 0-2)</title><description>Poco tempo fa mi sono imbattuto in questo sito: &lt;a href=&quot;http://overthewire.org/wargames/&quot; target=&quot;_blank&quot;&gt;OverTheWire: Wargames&lt;/a&gt;. Esso propone delle sfide &quot;hacking&quot; chiamate &lt;i&gt;wargames&lt;/i&gt;. Ho pensato tra me e me &quot;Why not?&quot; ed ho iniziato dal livello &lt;a href=&quot;http://overthewire.org/wargames/bandit/&quot; target=&quot;_blank&quot;&gt;Bandit&lt;/a&gt; (il sito stesso consiglia di iniziare da tale livello, il più facile). Ho completato le prime sfide. Mi si è aperto un mondo davanti. Ho deciso, quindi, di descrivere il mio viaggio nel mondo dell&#39;hacking attraverso queste sfide. Non sarà una serie di Gameplay. Sarà un&#39;opportunità per migliorare me stesso e chi legge, spiegherò il pensiero e il procedimento che c&#39;è dietro il completamento delle sfide.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZY/7BqqdU7onnI/s1600/wargames-bandit.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;186&quot; src=&quot;http://3.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZY/7BqqdU7onnI/s400/wargames-bandit.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Bandit&lt;/h2&gt;
Il livello Bandit consiste in alcune sfide dove occorre scoprire la password per passare al livello successivo. Le password si trovano sul server &lt;i&gt;bandit.labs.overthewire.org&lt;/i&gt; ed è possibile connettersi ad esso tramite SSH.&lt;br /&gt;
&lt;br /&gt;
SSH è un protocollo di connessione remota ad una macchina. In pratica mi connetto in remoto ad un PC ed eseguo dei comandi su esso. Ad esempio, posso visualizzare le cartelle, i file, creare cartelle (se il server me lo permette e non ci sono limitazioni), ecc...&lt;br /&gt;
&lt;br /&gt;
La sfide consistono, appunto, nel connettersi a questo server e cercare, tra i vari file e cartelle, la password per il livello successivo.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Requisiti&lt;/h2&gt;
Per giocare alle wargames, quindi, c&#39;è bisogno di un sistema operativo Linux (per utilizzare il protocollo SSH). Io ti consiglio &lt;a href=&quot;https://www.kali.org/&quot; target=&quot;_blank&quot;&gt;Kali Linux&lt;/a&gt;. Puoi tranquillamente installarlo su una penna USB e avviarlo. Ecco una &lt;a href=&quot;http://it.docs.kali.org/installing-kali-linux-it/installazione-live-usb-di-kali-linux&quot; target=&quot;_blank&quot;&gt;guida&lt;/a&gt; che ti spiega come fare. Oppure puoi scaricarlo e avviarlo su una macchina virtuale (ad esempio VirtualBox).&lt;br /&gt;
&lt;br /&gt;
Mano mano, scoprirai anche l&#39;importanza di un sistema operativo Linux per un hacker. &lt;br /&gt;
&lt;br /&gt;
Una volta che hai avviato il sistema operativo Linux apri il Terminale (il &lt;i&gt;Prompt dei Comandi&lt;/i&gt; per intenderci). Ora siamo pronti per operare.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Livello 0&lt;/h2&gt;
Bene. Il &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit0.html&quot; target=&quot;_blank&quot;&gt;livello 0 di Bandit&lt;/a&gt; si presenta così: dobbiamo connetterci al server &lt;i&gt;bandit.labs.overthewire.org &lt;/i&gt;con username &lt;i&gt;bandit0&lt;/i&gt; e password &lt;i&gt;bandit0&lt;/i&gt;. C&#39;è bisogno di conoscere l&#39;inglese (lingua importante per un hacker).&lt;br /&gt;
&lt;br /&gt;
Come facciamo a connetterci ad un server tramite protocollo SSH? Scopriamolo insieme. Digita da terminale &lt;i&gt;ssh&lt;/i&gt; e poi premi Invio. Ti apparirà:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-p-QSHevcX8I/Vhvv2pyic2I/AAAAAAAAAYQ/lTVlfDAnDN0/s1600/bandit0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;166&quot; src=&quot;http://1.bp.blogspot.com/-p-QSHevcX8I/Vhvv2pyic2I/AAAAAAAAAYQ/lTVlfDAnDN0/s640/bandit0.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In pratica, ti viene mostrato come si usa SSH. L&#39;ultima riga ti dice che devi digitare l&#39;hostname, che nel nostro caso è &lt;i&gt;bandit.labs.overthewire.org&lt;/i&gt;, eventualmente preceduto dall&#39;username, nel nostro caso &lt;i&gt;bandit0&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Per connetterci, dunque, dobbiamo scrivere da terminale (dopodiché premere Invio):&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh bandit0@bandit.labs.overthewire.org&lt;/blockquote&gt;
A volte, è probabile che ti chieda di continuare scrivendo &quot;yes&quot; oppure &quot;no&quot;. Digita &quot;yes&quot; e premi Invio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-lDJlbfzPi4E/VhvxF21Q6RI/AAAAAAAAAYc/Wc83Kw-3BT0/s1600/bandit1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;100&quot; src=&quot;http://1.bp.blogspot.com/-lDJlbfzPi4E/VhvxF21Q6RI/AAAAAAAAAYc/Wc83Kw-3BT0/s640/bandit1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ecco, ora ci chiede la password. La sappiamo: &lt;i&gt;bandit0&lt;/i&gt;. Scrivila e premi Invio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-4zPYieB9zNE/Vhvx99dhvWI/AAAAAAAAAYk/KO97VpPtTQc/s1600/bandit2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;184&quot; src=&quot;http://3.bp.blogspot.com/-4zPYieB9zNE/Vhvx99dhvWI/AAAAAAAAAYk/KO97VpPtTQc/s640/bandit2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ora ci siamo connessi. Il livello 0 ci ha chiesto solo di connetterci e l&#39;abbiamo fatto. Livello completato!&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Livello 1&lt;/h2&gt;
Come passare dal livello 0 al livello 1. OverTheWire ci offre delle indicazioni se vai alla pagina &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit1.html&quot; target=&quot;_blank&quot;&gt;Level 0 -&amp;gt; Level 1&lt;/a&gt; (che non è altro che la pagine del livello 1).&lt;br /&gt;
&lt;br /&gt;
Ci dice che sul server è presente il file &lt;i&gt;readme&lt;/i&gt; che contiene la password per completare il livello 1. La password che troveremo ci servirà per accedere tramite SSH allo stesso server ma con username &lt;i&gt;bandit1&lt;/i&gt;. Inoltre, ci vengono dati dei suggerimenti: i comandi di cui potremmo aver bisogno per superare il livello sono ls, cd, cat, file, du, find.&lt;br /&gt;
&lt;br /&gt;
Ragioniamo: siamo connessi al server ed esso contiene un file chiamato &lt;i&gt;readme&lt;/i&gt; che contiene ciò che cerchiamo. Ci viene in aiuto il comando &lt;i&gt;ls&lt;/i&gt;. Questo comando ci fa visualizzare tutti i file e cartelle situati nel percorso dove attualmente ci troviamo.&lt;br /&gt;
&lt;br /&gt;
Digita &lt;i&gt;ls&lt;/i&gt; e premi Invio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-exSOGcgs9T4/Vhvyc8mXAWI/AAAAAAAAAYs/EbuMNq6yx28/s1600/bandit3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-exSOGcgs9T4/Vhvyc8mXAWI/AAAAAAAAAYs/EbuMNq6yx28/s1600/bandit3.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Bingo! Abbiamo trovato il file &lt;i&gt;readme&lt;/i&gt;. Oltre ad esso non ci sono altri file nè cartelle.&lt;br /&gt;
&lt;br /&gt;
Ora dobbiamo trovare un modo per visualizzare cosa c&#39;è scritto nel file &lt;i&gt;readme&lt;/i&gt;. Il comando &lt;i&gt;cat&lt;/i&gt; ci scrive sul terminale tutto il contenuto di un file che gli diciamo. Digita, dunque:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat readme&lt;/blockquote&gt;
Ci viene stampata una scritta strana (sembra criptata). Bene, questa è la password per passare al livello 2. Copiala e segnatela sul blocco note.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-nYWGfbDPUUM/VhvyxgsY3VI/AAAAAAAAAY0/EOJ3nzI4fDk/s1600/bandit4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-nYWGfbDPUUM/VhvyxgsY3VI/AAAAAAAAAY0/EOJ3nzI4fDk/s1600/bandit4.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Boom! Livello 1 completato.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Livello 2&lt;/h2&gt;
Disconnettiti dal server scrivendo &lt;i&gt;exit&lt;/i&gt; da terminale.&lt;br /&gt;
&lt;br /&gt;
Riconnettiamoci, ma stavolta con username &lt;i&gt;bandit1&lt;/i&gt;.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ssh bandit1@bandit.labs.overthewire.org&lt;/blockquote&gt;
Come password inseriamo quella che abbiamo appena trovato.&lt;br /&gt;
&lt;br /&gt;
Connessi! Andiamo alla pagina del &lt;a href=&quot;http://overthewire.org/wargames/bandit/bandit2.html&quot; target=&quot;_blank&quot;&gt;livello 2&lt;/a&gt;. Ci dice che il file che contiene la password per il livello successivo si chiama &quot;-&quot; (un semplice trattino). Strano, molto strano.&lt;br /&gt;
&lt;br /&gt;
Innanzitutto cerchiamo il file digitando da terminale:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
ls&lt;/blockquote&gt;
Ok. Abbiamo trovato il file, è nella directory principale (in cui ci troviamo appena connessi). Con lo stesso procedimento del livello precedente proviamo a vedere il contenuto del file grazie al comando &lt;i&gt;cat&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat -&lt;/blockquote&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-fzbLKcExneE/Vh1d-hAIHAI/AAAAAAAAAZE/Jccn6ZXnPWE/s1600/bandit7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-fzbLKcExneE/Vh1d-hAIHAI/AAAAAAAAAZE/Jccn6ZXnPWE/s1600/bandit7.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Non ci viene mostrato nulla ed il cursore del terminale continua a lampeggiare. Il comando &lt;i&gt;cat &lt;/i&gt;sembra essersi bloccato. Premi Ctrl + C per terminarlo.&lt;br /&gt;
&lt;br /&gt;
Perché è successo questo? In pratica il trattino è un carattere speciale poiché con i trattini possono essere inseriti i parametri dei comandi. Dobbiamo fare in modo che il comando &lt;i&gt;cat &lt;/i&gt;riconosca il trattino come nome del file di cui vedere il contenuto e non come carattere speciale per inserire un parametro. Ci viene in aiuto &lt;b&gt;./&lt;/b&gt;&amp;nbsp;che significa &quot;cartella corrente&quot;, ovvero va a selezionare i file della cartella corrente. Scriveremo quindi:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
cat ./-&lt;/blockquote&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-aSjgiOIDv6k/Vh1e-j7otPI/AAAAAAAAAZM/leoRiseq49U/s1600/bandit8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-aSjgiOIDv6k/Vh1e-j7otPI/AAAAAAAAAZM/leoRiseq49U/s1600/bandit8.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In pratica nella cartella corrente (&lt;b&gt;./&lt;/b&gt;) va a selezionare il file che si chiama &quot;-&quot;.&lt;br /&gt;
&lt;br /&gt;
Easy game! Password trovata. Segnatela su un blocco note che ci servirà per il prossimo livello che sarà un po&#39; più arduo ma che comunque rientra nei limiti dell&#39;aspirante hacker.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Conclusione&lt;/h2&gt;
Spero che grazie a questi wargames tu stia imparando varie cose come l&#39;utilizzare il terminale Linux e i differenti comandi (fino ad ora solo &lt;i&gt;ls&lt;/i&gt; e &lt;i&gt;cat&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Se vuoi che prosegua questa serie di articoli sui wargames o che ne cambi il format (ad esempio facendo video, anche se non voglio che diventi un Gameplay anziché un&#39;opportunità di imparare) scrivi la tua opinione nei commenti.</description><link>http://www.diventarehacker.it/2015/10/il-mio-viaggio-nel-mondo-dellhacking.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-6kP4p_TJ40s/Vh1iCiW4RvI/AAAAAAAAAZY/7BqqdU7onnI/s72-c/wargames-bandit.png" height="72" width="72"/><thr:total>20</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-7279468991073186896</guid><pubDate>Sat, 10 Oct 2015 11:27:00 +0000</pubDate><atom:updated>2016-03-22T19:22:36.097+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">Web</category><title>DoS, Denial of Service: Come DoSsare Un Server</title><description>Mi sono ripromesso di scrivere una guida aggiornata riguardo alla tecnica DoS perché ormai questo &lt;a href=&quot;http://www.diventarehacker.it/2013/03/dos-attaccare-un-sito-dal-prompt-dei.html&quot; target=&quot;_blank&quot;&gt;articolo&lt;/a&gt; è obsoleto e troppo elementare. Ecco, dunque, che scrivo una guida più dettagliata e completa riguardo alla tecnica DoS, molto discussa ma poco compresa dalla maggior parte delle persone che approcciano il mondo dell&#39;hacking. Questo articolo ha il solo scopo di informarti e di fornirti informazioni valide dato che in giro per il web girano tante guide o tutorial che hanno l&#39;utilità di un piumone il 15 Agosto.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-2Pwlxz6qaIc/VeDiEU79N4I/AAAAAAAAAXQ/lhunHFhqZ5M/s1600/DoS.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;https://1.bp.blogspot.com/-2Pwlxz6qaIc/VeDiEU79N4I/AAAAAAAAAXQ/lhunHFhqZ5M/s320/DoS.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
La tecnica&lt;/h2&gt;
DoS (correttamente si scrive con la prima e la terza lettera maiuscole) sta per &lt;i&gt;Denial of Service&lt;/i&gt;, che letteralmente significa &quot;negazione del servizo&quot;, ed è una tecnica che consiste nell&#39;esaurire le risorse di un server (o sito web) attraverso un &lt;b&gt;bombardamento di richieste al server&lt;/b&gt; (ecco spiegato il motivo dell&#39;immagine dell&#39;articolo).&lt;br /&gt;
&lt;br /&gt;
Lascia che mi spieghi meglio. Ogni qualvolta che visitamo un sito web (ad esempio: google.com) inviamo una richiesta a quel sito (server) il quale riceverà la nostra richiesta, la analizzerà e ci risponderà inviandoci i dati della pagina visitata, il codice HTML della pagina per intenderci, che poi il browser ci farà visualizzare graficamente.&lt;br /&gt;
&lt;br /&gt;
La tecnica DoS consiste nell&#39;inviare tante richieste simultaneamente in modo che il server non abbia il tempo e le risorse di riceverle, analizzarle e risponderle tutte in maniera rapida. Consiste nel bombardare, appunto, un sito web in modo da sovraccaricarlo.&lt;br /&gt;
&lt;br /&gt;
Ovviamente, grandi siti come Google, Facebook e Yahoo hanno dei server talmente potenti che risulta molto difficile, quasi impossibile, DoSsarli in quanto riescono a gestire tantissime richieste e, quindi, a sopportare imponenti &quot;bombardamenti&quot; DoS. Ma anche siti minori sono solitamente hostati su server potenti, quindi a tecnica DoS non funziona. &lt;b&gt;Il DoS funziona solo su server poco potenti&lt;/b&gt; (tipo server locali o comunque server domestici).&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Come effettuare un attacco DoS&lt;/h2&gt;
Gli attacchi DoS sono utili sia per testare il proprio server quando è sotto sforzo sia per compiere attacchi veri e propri (come quello del Lizard Squad al PlayStation Network). Ovviamente, tutto il materiale e le informazioni che trovi su questo sito sono a solo scopo informativo e non incitano in alcun modo a compiere reati informatici come attacchi DoS.&lt;br /&gt;
&lt;br /&gt;
Ecco come compiere un attacco DoS:&lt;br /&gt;
1. Scegliere il server vittima che chiameremo target (ad esempio: 127.0.0.1).&lt;br /&gt;
2. Scaricare &lt;a href=&quot;http://sourceforge.net/projects/loic/&quot; target=&quot;_blank&quot;&gt;LOIC&lt;/a&gt;. L&#39;antivirus lo rileverà come file minaccioso ma è un falso positivo, o meglio è dannoso ma non per chi lo usa ma per il server vittima. Basterà disattivare temporaneamente l&#39;antivirus, scaricarlo ed avviarlo.&lt;br /&gt;
3. Inserire l&#39;indirizzo IP del server e cliccare su &lt;i&gt;Lock on&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-TCH3noXt9AY/VhjzqvomiYI/AAAAAAAAAX0/t9cYK2IMPzs/s1600/DoS%2B1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://3.bp.blogspot.com/-TCH3noXt9AY/VhjzqvomiYI/AAAAAAAAAX0/t9cYK2IMPzs/s640/DoS%2B1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Se, invece, non conosci l&#39;IP ma solo l&#39;URL del server, scrivi quest&#39;ultimo nella barra &lt;i&gt;URL&lt;/i&gt; e poi clicca su &lt;i&gt;Lock on&lt;/i&gt;.&lt;br /&gt;
4. Nel box &lt;i&gt;Attack options&lt;/i&gt; selezionare il &lt;i&gt;Method&lt;/i&gt;. Se il server da attaccare è un sito web seleziona &lt;i&gt;HTTP&lt;/i&gt; altrimenti seleziona &lt;i&gt;TCP&lt;/i&gt;.&lt;br /&gt;
5. Quando sei pronto clicca sul bottone &lt;i&gt;IMMA CHARGIN MAH LAZER&lt;/i&gt; ed il programma inizierà l&#39;attacco DoS.&lt;br /&gt;
6. Se dopo un po&#39; di tempo il server vittima non &quot;cade&quot; stoppa l&#39;attacco cliccando su Stop flooding. Dopodiché aumenta di poco il numero di &lt;i&gt;Threads &lt;/i&gt;e ricomincia l&#39;attacco.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-bRgsCU6opFw/Vhj1gHGr8QI/AAAAAAAAAYA/AWpODLtmCWk/s1600/DoS%2B2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;104&quot; src=&quot;https://1.bp.blogspot.com/-bRgsCU6opFw/Vhj1gHGr8QI/AAAAAAAAAYA/AWpODLtmCWk/s640/DoS%2B2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Mi è d&#39;obbligo dire che questa guida è a solo scopo informativo e non incita in alcun modo a compiere un attacco DoS.&lt;br /&gt;
&lt;br /&gt;
Inoltre, c&#39;è da precisare che la tecnica DoS non funziona con server potenti come Google, Facebook, Yahoo. Così come non funziona con siti minori che sono hostati, ad esempio, su server potenti di Aruba.&lt;br /&gt;
&lt;br /&gt;
Spero di essere stato di aiuto per molti che erano confusi su cosa fosse un attacco DoS e come fosse possibile compierlo.</description><link>http://www.diventarehacker.it/2015/10/dos-denial-of-service-come-dossare-un.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-2Pwlxz6qaIc/VeDiEU79N4I/AAAAAAAAAXQ/lhunHFhqZ5M/s72-c/DoS.png" height="72" width="72"/><thr:total>27</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-5348668328129279955</guid><pubDate>Thu, 08 Oct 2015 17:08:00 +0000</pubDate><atom:updated>2016-09-08T22:37:47.207+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">Javascript</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><category domain="http://www.blogger.com/atom/ns#">Web</category><category domain="http://www.blogger.com/atom/ns#">XSS</category><title>XSS: Cross-site scripting - Parte 2</title><description>Nella prima parte abbiamo visto cos&#39;è teoricamente la tecnica del Cross-site Scripting. In questa seconda parte, attraverso un video (ottimo strumento didattico), vediamo come sfruttare una vulnerabilità ad XSS e quali stringhe di codice è possibile iniettare per rubare i cookie.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-UF0Jc4J2res/Vhaibpyl47I/AAAAAAAAAXk/mUIlmi1Qjmc/s1600/XSS%2Bparte%2B2%2B%255Bthumbnail%255D.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;94&quot; src=&quot;https://2.bp.blogspot.com/-UF0Jc4J2res/Vhaibpyl47I/AAAAAAAAAXk/mUIlmi1Qjmc/s320/XSS%2Bparte%2B2%2B%255Bthumbnail%255D.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Video-Guida&lt;/h2&gt;
Ecco il video della seconda parte:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/sfge1hCEi58/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/sfge1hCEi58?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2015/08/xss-cross-site-scripting-parte-1.html&quot;&gt;&amp;lt; Parte 1&lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2015/10/xss-cross-site-scripting-parte-2.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-UF0Jc4J2res/Vhaibpyl47I/AAAAAAAAAXk/mUIlmi1Qjmc/s72-c/XSS%2Bparte%2B2%2B%255Bthumbnail%255D.png" height="72" width="72"/><thr:total>16</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-4188168434041207171</guid><pubDate>Sat, 29 Aug 2015 10:42:00 +0000</pubDate><atom:updated>2016-09-08T22:36:57.683+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Internet</category><category domain="http://www.blogger.com/atom/ns#">Javascript</category><category domain="http://www.blogger.com/atom/ns#">Script</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><category domain="http://www.blogger.com/atom/ns#">Web</category><category domain="http://www.blogger.com/atom/ns#">XSS</category><title>XSS: Cross-site scripting - Parte 1</title><description>La sicurezza online non esiste. Non c&#39;è neanche un sito web sicuro al 100%. Per questo motivo i grandi colossi come Google e Facebook pagano profumatamente hacker ed esperti in sicurezza per testare continuamente e trovare falle nella sicurezza delle loro pagine web ed applicazioni. Una tecnica che accompagna l&#39;&lt;a href=&quot;http://www.diventarehacker.it/2012/11/sql-injection-rubare-informazioni-da-un.html&quot; target=&quot;_blank&quot;&gt;SQL Injection&lt;/a&gt; è l&#39;XSS (che sta per cross-site scripting) e consiste nell&#39;iniettare stringhe di codice (spesso Javascript) nei form e farle eseguire per ottenere informazioni o rubare i cookie (e di conseguenza la sessione di un utente).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-G3cBZOPRRko/VeBBYg9HyRI/AAAAAAAAAW8/4fjnIU_duW8/h106/XSS%2Bparte%2B1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://4.bp.blogspot.com/-G3cBZOPRRko/VeBBYg9HyRI/AAAAAAAAAW8/4fjnIU_duW8/h106/XSS%2Bparte%2B1.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h2&gt;
Requisiti&lt;/h2&gt;
Requisiti per seguire al meglio questa guida:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Conoscenza base &lt;b&gt;HTML&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Conoscenza base &lt;b&gt;PHP&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Conoscenza base &lt;b&gt;Javascript&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
La Tecnica &lt;/h2&gt;
Ecco la prima parte del video sulla tecnica XSS:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/oKkpO6h0mt8/0.jpg&quot; src=&quot;https://www.youtube.com/embed/oKkpO6h0mt8?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
Conclusioni&lt;/h2&gt;
Abbiamo visto le basi dell&#39;XSS. Nella prossima parte ti spiegherò cos&#39;è e come funzione un &lt;i&gt;Cookie Stealer&lt;/i&gt; utilizando la tecnica Cross-site Scripting.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2015/10/xss-cross-site-scripting-parte-2.html&quot;&gt;Parte 2 &amp;gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2015/08/xss-cross-site-scripting-parte-1.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-G3cBZOPRRko/VeBBYg9HyRI/AAAAAAAAAW8/4fjnIU_duW8/s72-h106-c/XSS%2Bparte%2B1.png" height="72" width="72"/><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-2219972580212384040</guid><pubDate>Fri, 30 Jan 2015 10:04:00 +0000</pubDate><atom:updated>2015-01-30T19:03:04.074+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Come Nascondere Un File All&#39;Antivirus - Parte 1</title><description>Promisi tempo fa di scrivere un articolo su come è possibile nascondere un file all&#39;antivirus. Ecco che finalmente arriva uno degli articoli che, a mio avviso, ci fanno rendere l&#39;idea che la sicurezza sui computer è solo un&#39;illusione. Qualsiasi computer non è mai sicuro al 100%. Soprattutto se scarichi file di cui non ne sai la provenienza. Come fanno gli hacker (o meglio i cracker) a rendere un virus invisibile e non rilevabile, ovvero &lt;b&gt;come nascondere un file all&#39;antivirus&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/-V7YwcL_AzA0/VMvGWT7STgI/AAAAAAAAAVM/WO4nNFHFw8g/s1600/come%2Bnascondere%2Bun%2Bfile%2Ball%2Bantivirus.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Come Nascondere Un File All&#39;Antivirus&quot; border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/-V7YwcL_AzA0/VMvGWT7STgI/AAAAAAAAAVM/WO4nNFHFw8g/s1600/come%2Bnascondere%2Bun%2Bfile%2Ball%2Bantivirus.png&quot; title=&quot;Come Nascondere Un File All&#39;Antivirus&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Cos&#39;è un malware?&lt;/h3&gt;
Prima di tutto, ti spiego brevemente cos&#39;è un malware (deriva malicious software che tradotto vuol dire software maligno):&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Nella sicurezza informatica il termine malware indica un qualsiasi software creato allo scopo di causare danni ad un computer, ai dati degli utenti del computer, o a un sistema informatico su cui viene eseguito.&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
Fonte - &lt;a href=&quot;http://www.wikipedia.org/&quot;&gt;http://www.wikipedia.org&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;
Quindi i malware sono dei software che possono rubare delle informazioni o causare danni al sistema operativo o al computer. Dopo aver introdotto i malware, posso spiegarti cos&#39;è un virus.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Cos&#39;è un virus?&lt;/h3&gt;
Pensa ad un virus batteriologico, esso si diffonde da persona a persona quindi si moltiplica creando danni a un numero sempre più ampio di persone. In ambito informatico il concetto di virus è analogo:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
Nella sicurezza informatica un virus è un software, appartenente alla categoria dei malware, che è in grado, una volta eseguito, di infettare dei file in modo da riprodursi facendo copie di se stesso, generalmente senza farsi rilevare dall&#39;utente&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
Fonte -&amp;nbsp;&lt;a href=&quot;http://www.wikipedia.org/&quot;&gt;http://www.wikipedia.org&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;
Un virus, quindi, è un malware (software maligno) che è addirittura in grado di infettare altri file rendendoli maligni o creare nuovi file maligni. Ora conosci la pericolosità dei virus.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Gli antivirus: i nostri eroi&lt;/h3&gt;
A combattere il male ci sono loro: gli antivirus. Essi sono dei software in grado di bloccare l&#39;installazione di un malware o virus sul proprio computer sventando parecchie minacce che si incontrano quotidianamente anche solo navigando sul web. Ecco un articolo che elenca i migliori antivirus gratuiti in circolazione: &lt;a href=&quot;http://www.diventarehacker.it/2013/03/combatti-i-file-infetti-i-migliori.html&quot; target=&quot;_blank&quot;&gt;Combatti I File Infetti: I Migliori Antivirus&lt;/a&gt;. Se non hai installato ancora un antivirus è di vitale importanza farlo.&lt;br /&gt;
&lt;br /&gt;
Un hacker esperto, però, conosce anche gli argomenti più avanzati in ambito di sicurezza informatica e sa come è possibile rendere non rilevabile un file maligno all&#39;antivirus in modo che esso possa installarsi sul computer della vittima senza sforzi.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-DvpovqfTqWw/VMvHPcAfw_I/AAAAAAAAAVU/ctWbfcNuRtg/s1600/come%2Bnascondere%2Bun%2Bfile%2Ball%2Bantivirus%2B2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Come Nascondere Un File All&#39;Antivirus&quot; border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-DvpovqfTqWw/VMvHPcAfw_I/AAAAAAAAAVU/ctWbfcNuRtg/s1600/come%2Bnascondere%2Bun%2Bfile%2Ball%2Bantivirus%2B2.png&quot; height=&quot;224&quot; title=&quot;Come Nascondere Un File All&#39;Antivirus&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Nascondere un virus (o malware) all&#39;antivirus&lt;/h3&gt;
&lt;u&gt;Prima di proseguire, però, c&#39;è da dire che tutti gli articoli, le guide e il materiale contenuti in questo articolo e sul blog sono a solo scopo informativo e didattico. Il mio obiettivo è quello di far conoscere argomenti riguardo alla sicurezza informatica. Non usare ciò che impari per scopi illegali.&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;
I due metodi più usati sono:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Encryption&amp;nbsp;&lt;/b&gt;o di crittografia.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Binding &lt;/b&gt;o di legatura.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Vediamo in cosa consistono queste due tecniche&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Encryption&lt;/h3&gt;
La tecnica dell&#39;encryption (o di crittografia) consiste in una particolare procedura, abbastanza complessa, che cripta il codice binario del file in modo da creare un nuovo file con le stesse funzioni ma con, appunto, un codice nuovo diverso che l&#39;antivirus non rileverà come malware.&lt;br /&gt;
&lt;br /&gt;
Ci sono dei programmi in grado di criptare dei file in modo da renderli invisibile. Tali software si chiamano crypter.&lt;br /&gt;
&lt;br /&gt;
Per ora tralasciamo la tecnica dell&#39;encryption perché è un po&#39; più complicata rispetto alla tecnica della legatura e per questo la descriveremo nel dettaglio e la applicheremo praticamente nella prossima parte dell&#39;articolo.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Binding&lt;/h3&gt;
La tecnica di binding consiste nell&#39;unire il malware (o virus) con un altro file o immagine in modo da ingannare l&#39;antivirus.&lt;br /&gt;
&lt;br /&gt;
I programmi che permettono di fare ciò si chiamano binder. Ecco un video che spiega praticamente come &quot;bindare&quot; (legare, unire) due file in uno.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://ytimg.googleusercontent.com/vi/0q8gsWbkSY4/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;http://www.youtube.com/embed/0q8gsWbkSY4?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusioni&lt;/h3&gt;
Spero che l&#39;articolo sia stato abbastanza chiaro e semplice. Nella prossima parte di articolo analizzeremo nel dettaglio e metteremo in pratica la tecnica di encryption ed, inoltre, ci saranno anche altre interessanti &quot;pillole&quot; hacking.</description><link>http://www.diventarehacker.it/2015/01/come-nascondere-un-file-allantivirus.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-V7YwcL_AzA0/VMvGWT7STgI/AAAAAAAAAVM/WO4nNFHFw8g/s72-c/come%2Bnascondere%2Bun%2Bfile%2Ball%2Bantivirus.png" height="72" width="72"/><thr:total>22</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-3879108558521464843</guid><pubDate>Sat, 03 Jan 2015 07:12:00 +0000</pubDate><atom:updated>2015-01-03T08:12:00.178+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Mini-Corso Hacking - Parte 3</title><description>Ecco la terza parte del mini-corso hacking. La scorsa volta abbiamo trattato le reti, in questo articolo continueremo trattando l&#39;anonimità in rete e come hackerare un sito web. Tieniti pronto.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s1600/mini%2Bcorso%2Bhacking.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s1600/mini%2Bcorso%2Bhacking.png&quot; height=&quot;63&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h3&gt;
Anonimità in rete&lt;/h3&gt;
Quando sei connesso ad Internet (come già detto nella Parte 2 di questo mini-corso) il tuo computer è identificato in rete da un indirizzo IP. Questo indirizzo IP può definire una località di provenienza e addirittura tramite l&#39;indirizzo IP si può sapere il provider (chi ti fornisce la linea Internet, ad esempio Alice, Infostrada ecc...).&lt;br /&gt;
&lt;br /&gt;
Non ci credi? Vai su &lt;a href=&quot;http://mio-ip.it/&quot;&gt;http://mio-ip.it&lt;/a&gt;. Oltre a dirti il tuo IP, vengono fornite informazioni a riguardo come il provider e se vai su &quot;Geolocalizzazione IP&quot; ti dice dove ti trovi. Affascinante ma allo stesso tempo terribilmente spaventoso perchè una qualsiasi persona, con buoni o cattivi scopi che sia, può sapere in quale parte precisa del mondo ti trovo solo conoscendo il tuo indirizzo IP.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Proxy Server&lt;/h3&gt;
Prima di continuare, ti consiglio di leggere l&#39;articolo &lt;a href=&quot;http://www.diventarehacker.it/2013/03/diventare-anonimi-in-rete.html&quot; target=&quot;_blank&quot;&gt;Diventare Anonimi In Rete&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Cos&#39;è un proxy server? Non è altro che un server (che, quindi, fornisce un servizio) che ci permette di navigare in maniera più sicura. In che modo? Detto in parole povere, quando vuoi visitare un sito (ad esempio Facebook) il tuo computer dirà al proxy &quot;Ehy senti voglio visitare il sito di Facebook mantenendo però la mia anonimità, non voglio che Facebook conosca il mio IP&quot;. Il proxy si connetterà a Facebook, o a qualsiasi altro sito, al posto tuo in modo che i vari server dei siti che visitiamo conosceranno l&#39;indirizzo IP del proxy (che può essere in qualsiasi parte del mondo) e non il tuo. È come se camuffassi il tuo indirizzo IP con quello del proxy, on è altro che una maschera dietro cui puoi nasconderti.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-uFv5w_V-gG4/VKakxPiLdNI/AAAAAAAAAU8/WvIh54TPel4/s1600/anonymous.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-uFv5w_V-gG4/VKakxPiLdNI/AAAAAAAAAU8/WvIh54TPel4/s1600/anonymous.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Se, infatti, usi un proxy e vai su &lt;a href=&quot;http://www.mio-ip.it/&quot;&gt;http://www.mio-ip.it&lt;/a&gt;, risulterai proveniente dalla nazione del proxy che usi.&lt;br /&gt;
&lt;br /&gt;
C&#39;è da dire, però che non si è mai anonimi del tutto in quanto ogni server, e quindi anche i proxy, devono obbligatoriamente tenere traccia degli utenti che ne fanno utilizzo memorizzando gli indirizzi IP in file o in database che vengono chiamati &lt;i&gt;log&lt;/i&gt;. Nel log del proxy che usi, quindi, è memorizzato il tuo indirizzo IP con altre informazioni (ad esempio a che ora hai iniziato ad usare il proxy ecc...). Va detto, quindi, che non si è mai anonimi e irraggiungibili in rete al 100%, a meno che non hackeri il proxy cancellando il log ed anche in quel caso è possibile recuperare il file log cancellato. La sicurezza informatica è solo una mera illusione.&lt;br /&gt;
&lt;br /&gt;
Ecco una video-guida che spiega come diventare anonimi in rete:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/vd-Svf0YyO4?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Hackerare un sito web&lt;/h3&gt;
Una volta che sei diventato anonimo in rete puoi iniziare ad hackerare un server, più precisamente un sito web. Ovviamente tutto il contenuto di questo articolo è a solo scopo informativo e didattico e vuole mostrarti che la sicurezza (soprattutto quella dei siti web) non esiste e quali sono le tecniche più utilizzate per hackerare un qualsiasi sito. Vediamo queste tecniche nel dettaglio.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Denial of Service (DoS)&lt;/h3&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
La locuzione denial of service ( in italiano letteralmente negazione del servizio abbreviato in DoS) nel campo della sicurezza informatica indica malfunzionamento dovuto ad un attacco informatico in cui si esauriscono deliberatamente le risorse di un sistema informatico che fornisce un servizio, ad esempio un sito web, fino a renderlo non più in grado di erogare il servizio.&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
Fonte - &lt;a href=&quot;http://www.wikipedia.org/&quot;&gt;http://www.wikipedia.org&lt;/a&gt;&lt;/div&gt;
&lt;/blockquote&gt;
In pratica la tecnica DoS consiste nell&#39;inviare tante richieste (o connessioni) ad un server (nel nostro caso un sito web) in modo da sovraccaricarlo, in pratica il server non ce la fa più a stare dietro alle tante richieste. Da ciò si può dedurre che tale tecnica non è molto efficace per i &quot;grandi&quot; siti web come Google o Facebook che sono dotati di server in grado di sopportare tantissime richieste ed anche in tempi abbastanza veloci.&lt;br /&gt;
&lt;br /&gt;
Ecco un mio articolo che spiega &lt;a href=&quot;http://diventarehacker.it/2013/03/dos-attaccare-un-sito-dal-prompt-dei.html&quot; target=&quot;_blank&quot;&gt;come dossare un sito dal prompt dei comandi&lt;/a&gt;. Ovviamente ci sono programmi appositi che sono in grado di dossare in maniera più efficiente ed efficace ma per ora ci serve sapere che si può anche attaccare un sito attraverso la tecnica del DoS dal prompt dei comandi, tale tecnica funziona anche per le reti locali (l&#39;ho testata su alcune LAN ed ha funzionato).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
SQL Injection&lt;/h3&gt;
Questa tecnica consiste nell&#39;iniettare delle stringhe in linguaggio SQL (linguaggio per database) in modo da &quot;rubare&quot; delle informazioni dal database come email, nomi utenti, password ecc..&lt;br /&gt;
&lt;br /&gt;
L&#39;SQL Injection è letale e sono rimasto davvero sorpreso dal fatto che tanti siti ne sono vulnerabili, più siti di quanti pensiamo. Ecco una serie di articoli che spiegano nel dettaglio tale tecnica:&amp;nbsp;&lt;a href=&quot;http://diventarehacker.it/2012/11/sql-injection-rubare-informazioni-da-un.html&quot;&gt;SQL Injection: Rubare Informazioni Da Un Database&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Imparerai come una semplice pagina php, se mal programmata in termini di sicurezza, può essere la rovina di un qualsiasi sito web in quanto potrai &quot;rubare&quot; informazioni delicate e credenziali di utenti registrati a quel sito.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Bruteforce&lt;/h3&gt;
Questo metodo è il cosiddetto metodo di &quot;forza bruta&quot; e consiste nel rubare una password semplicemente trovandola. In che modo? Provando tutte le possibili combinazioni di caratteri che possono comporre una password (lettere, numeri e caratteri speciali). In questo articolo spiego in maniera più approfondita cos&#39;è e come funziona un bruteforce: &lt;a href=&quot;http://www.diventarehacker.it/2013/06/bruteforce-il-metodo-piu-efficace-per.html&quot; target=&quot;_blank&quot;&gt;Bruteforce, Il Metodo Più Efficace Per Rubare Una Password&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Oltre a sapere le sue funzionalità devi sapere anche com&#39;è progettato e programmato un bruteforce per comprenderne appieno la potenza, quindi leggi le mie guide: &lt;a href=&quot;http://www.diventarehacker.it/2013/07/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;Come Creare Un Bruteforce In Python&lt;/a&gt;. Eh sì! Dovrai conoscere un po&#39; di linguaggio Python (a proposito, probabilmente a breve arriveranno delle guide riguardo a questo semplice e potente linguaggio di programmazione).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Altre tecniche&lt;/h3&gt;
Ovviamente ci sono tantissime altre tecniche per hackerare un server o un sito web come il cross-site scripting (XSS), lo shell injection, ecc...&lt;br /&gt;
&lt;br /&gt;
Queste appena citate sono tecniche più avanzate e, a mio avviso, bisogna iniziare ad imparare prima quelle che ho spiegato in questo articolo per poi passare a metodi un po&#39; più complicati ed eleganti.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusioni&lt;/h3&gt;
Ora non ti resta che approfondire gli argomenti che ti ho accennato in questo articolo. E ricorda che il leggere queste parti di mini-corso hacking non fa di te un hacker. Un hacker ha, innanzitutto, la costante sete di sapere, non smette mai di apprendere e di mettere in pratica ciò che impara.&lt;br /&gt;
&lt;br /&gt;
Questa parte è stata abbastanza piena e corposa e, come ho programmato, il mini-corso hacking finisce qui, a meno che... tu utente non fai valere la tua voce scrivendo nei commenti che vuoi il continuo di questo mini-corso ed allora ci addentreremo insieme nello scoprire tecniche di hacking più avanzate ed efficaci e nell&#39;approfondire i vari argomenti già trattati.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-2.html&quot; target=&quot;_blank&quot;&gt;&amp;lt; Parte 2 &lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2015/01/mini-corso-hacking-parte-3.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s72-c/mini%2Bcorso%2Bhacking.png" height="72" width="72"/><thr:total>50</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-4892698566313897446</guid><pubDate>Tue, 30 Dec 2014 16:12:00 +0000</pubDate><atom:updated>2016-03-02T16:26:37.846+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><category domain="http://www.blogger.com/atom/ns#">Script</category><title>Come Creare Un Bruteforce in Python - Parte 4</title><description>Ecco la quarta parte della serie: &quot;Come Creare Un Bruteforce In Python&quot;. In questo articolo vedremo come creare un bruteforce per siti web (via HTTP). Nella scorsa parte abbiamo memorizzato il messaggio di avvenuto login che nel nostro esempio era: &quot;Login effettuato!&quot;, in questa parte vedremo come modificare la funzione testaPassword() in modo da testare la password via http.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s1600/bruteforce.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Come Creare Un Bruteforce in Python&quot; border=&quot;0&quot; src=&quot;https://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s1600/bruteforce.png&quot; title=&quot;Come Creare Un Bruteforce in Python&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Innanzitutto bisogna importare il modulo (o libreria) &lt;i&gt;urllib&lt;/i&gt;:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
import urllib&lt;/blockquote&gt;
Poi settiamo la variabile username che è l&#39;username di cui si vuole scovare la password (ad esempio &lt;i&gt;admin&lt;/i&gt;). Oltre all&#39;username settiamo anche la variabile paginaLogin che è l&#39;url della pagina di action (nel caso nostro è &lt;i&gt;http://www.miosito.it/login.php&lt;/i&gt;, leggi la &lt;a href=&quot;http://www.diventarehacker.it/2014/10/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;parte 3&lt;/a&gt; di questa serie di articoli se ancora non l&#39;hai letta).&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
username = &quot;admin&quot;&lt;br /&gt;
paginaLogin = &quot;http://www.miosito.it/login.php&quot;&lt;/blockquote&gt;
Creiamo anche un&#39;altra variabile (messaggioDiAvvenutoLogin) che conterrà il messaggio di avvenuto login che nel nostro caso è &quot;&lt;i&gt;Login effettuato!&lt;/i&gt;&quot;.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
messaggioDiAvvenutoLogin = &quot;Login effettuato!&quot;&lt;/blockquote&gt;
Il codice che testa la password è essenzialmente il seguente:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
parametriDaTestare = { &quot;username&quot; : username, &quot;password&quot; : password, &quot;submit&quot; : &quot;1&quot; }&lt;br /&gt;
p= urllib.urlencode(parametriDaTestare)&lt;br /&gt;
paginaDiAction = urllib.urlopen(paginaLogin, p)&lt;br /&gt;
risultato = paginaDiAction.read()&lt;br /&gt;
if messaggioDiAvvenutoLogin in risultato:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; print &quot;Password trovata: &quot;, password&lt;br /&gt;
&amp;nbsp; &amp;nbsp; exit()&lt;br /&gt;
else:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; return&lt;/blockquote&gt;
Nei parametri da testare l&#39;username è fisso e l&#39;abbiamo settato all&#39;inizio, è uguale a &quot;admin&quot; nel nostro caso. La password da testare cambia ogni volta, ovvero viene testata ogni combinazione di caratteri. Il parametro submit sarà sempre uguale a &quot;1&quot;. Con la seconda istruzione vengono codificati i parametri (non ci soffermeremo su questa istruzione). La terza istruzione invia il form alla pagina di login (http://www.miosito.it/login.php) con i parametri da testare. Con la quarta riga viene memorizzato il risultato in una variabile apposita, ovvero viene memorizzato ciò che la pagina ha restituito. Con il blocco if si controlla se il messaggio di avvenuto login è contenuto nel risultato, ovvero se i parametri sono corretti e di conseguenza il risultato contiene il messaggio di avvenuto login. Se esso lo contiene allora significa che la password è corretta (e che quindi è stata trovata) e il programma si chiude altrimenti continuerebbe a testare password inutilmente. Se esso non lo contiene allora si prosegue con l&#39;esecuzione del bruteforce testando la prossima combinazione di caratteri.&lt;br /&gt;
&lt;br /&gt;
Il codice finale che ne risulterà sarà: &lt;a href=&quot;http://pastebin.com/GxzRdV2n&quot; target=&quot;_blank&quot;&gt;BruteForce.py - HTTP&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusioni&lt;/h3&gt;
Spero di essere stato abbastanza chiaro. C&#39;è da dire, inoltre, che questo bruteforce via HTTP non funziona con tutti i siti web, soprattutto con siti importanti come Google o Hotmail ma per utilizzare bruteforce per tali siti occorre creare un bruteforce per email che magari vedremo come crearlo nella prossima parte. Se riscontri problemi con il codice o ti è piaciuta questa guida e vuoi che continui a scrivere articoli su come creare un bruteforce in Python non esitare a commentare.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2014/10/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;&amp;lt; Parte 3&lt;/a&gt;&amp;nbsp; | &amp;nbsp;&lt;a href=&quot;http://www.diventarehacker.it/2016/02/creare-un-bruteforce-in-python-20.html&quot;&gt;[VIDEO] Creare Un Bruteforce In Python &amp;gt;&lt;/a&gt;&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2014/12/come-creare-un-bruteforce-in-python.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s72-c/bruteforce.png" height="72" width="72"/><thr:total>45</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-1391840997305419830</guid><pubDate>Sat, 27 Dec 2014 12:45:00 +0000</pubDate><atom:updated>2015-01-02T23:06:28.358+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Mini-Corso Hacking - Parte 2</title><description>Ecco la seconda parte del mini-corso hacking che ho deciso di tenere su questo blog. Nello scorso articolo abbiamo spiegato il concetto di hacking, cos&#39;è e com&#39;è fatto un computer, il linguaggio macchina e di programmazione. Anche in questo articolo, ahimè, dovrai affrontare un bel po&#39; di teoria (c&#39;è solo un minimo di pratica). Ricorda: non puoi passare alla pratica se prima non sai la teoria, non puoi fare una cosa se non sai come si fa.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s1600/mini%2Bcorso%2Bhacking.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s1600/mini%2Bcorso%2Bhacking.png&quot; height=&quot;63&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h3&gt;
Le reti&lt;/h3&gt;
Cos&#39;è una rete? Una rete è un&lt;b&gt; insieme di computer&lt;/b&gt; che comunicano (o almeno possono comunicare) tra loro, ovvero un sistema di computer o, per meglio dire, macchine in grado di scambiarsi dati tra di loro. La comunicazione può avvenire mediante cavi (rete con i fili) o senza (wireless). La rete più grande che esiste è Internet. Essa è globale e comprende macchine (computer o altri dispositivi) provenienti da tutto il mondo. Ecco uno schema per capirci meglio.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-GwPioURseMI/VJs0VyRvN5I/AAAAAAAAATY/Nn--fFtmSZw/s1600/Mini-Corso%2BHacking%2BLe%2BReti.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Mini-Corso Hacking&quot; border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-GwPioURseMI/VJs0VyRvN5I/AAAAAAAAATY/Nn--fFtmSZw/s1600/Mini-Corso%2BHacking%2BLe%2BReti.png&quot; height=&quot;311&quot; title=&quot;Mini-Corso Hacking&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In base all&#39;estensione geografica le reti possono essere classificate in:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;LAN &lt;/b&gt;(Local Area Network) o &lt;b&gt;rete locale&lt;/b&gt; che copre un&#39;area limitata che può essere un&#39;abitazione o una scuola.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CAN &lt;/b&gt;(Campus Area Network) o &lt;b&gt;rete universitaria&lt;/b&gt; che copre un&#39;area un po&#39; più estesa che può comprendere un campus, un&#39;università o un college.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MAN &lt;/b&gt;(Metropolitan Area Network) o&lt;b&gt; rete metropolitana&lt;/b&gt; che si può estendere ad un&#39;intera città.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WAN&lt;/b&gt; (Wide Area Network) che ricopre un&#39;estensione che può essere una regione o addirittura una nazione.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GAN &lt;/b&gt;(Global Area Network) o&lt;b&gt; rete globale&lt;/b&gt; che può ricoprire tutto il mondo (un esempio è Internet).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Indirizzo IP (Internet Protocol)&lt;/h3&gt;
Come viene identificato un computer in rete (Internet Protocol)? Ad ogni macchina che si connette ad una rete (nel nostro caso Internet ma può essere anche una rete locale, ne parleremo in seguito) viene assegnato un &lt;b&gt;indirizzo&lt;/b&gt;&amp;nbsp;per contraddistinguerla dalle altre (ovvero non ci possono essere due o più macchina con lo stesso indirizzo). Questo indirizzo è chiamato indirizzo IP (Internet Protocol) ed è un insieme di quattro numeri che vanno da 0 a 255 separati da un punto (un esempio di indirizzo IP è: 127.0.0.1).&lt;br /&gt;
&lt;h3&gt;
Il sistema server/client&lt;/h3&gt;
Il sistema server/client è un&#39;architettura di rete in cui una macchina detta client (che tradotto significa &lt;i&gt;cliente&lt;/i&gt;) si connette ad un&#39;altra macchina detta server (che vuol dire &lt;i&gt;servitore&lt;/i&gt;) per usufruire di un servizio. Il server, dunque, offre un servizio e il client ne usufruisce.&lt;br /&gt;
&lt;br /&gt;
La rete Internet utilizza questo tipo di architettura. I siti web, infatti, sono dei server in quanto come servizio mettono a disposizione le proprie pagine web. I computer che navigano in rete, invece, sono client in quanto visitano le pagine web utilizzando i servizi offerti.&lt;br /&gt;
&lt;h3&gt;
Come conoscere gli indirizzi IP&lt;/h3&gt;
Sia server che client hanno degli indirizzi IP che li contraddistinguono come abbiamo detto parlando dell&#39;Internet Protocol. Ora voglio mostrarti come &quot;scoprire&quot; l&#39;indirizzo IP di qualsiasi sito web e quello del tuo PC.&lt;br /&gt;
&lt;br /&gt;
Per scoprire l&#39;indirizzo IP di un sito web:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Apri il terminale del tuo sistema operativo. In Windows basta cliccare su &lt;i&gt;Start &lt;/i&gt;&amp;gt;&lt;i&gt; Tutti i programmi&lt;/i&gt; &amp;gt; &lt;i&gt;Accessori &lt;/i&gt;&amp;gt; &lt;i&gt;Prompt dei comandi&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Scrivi &lt;i&gt;ping google.it&lt;/i&gt; (qui come esempio, vogliamo scoprire l&#39;IP di Google) e premi &lt;i&gt;Invio&lt;/i&gt;. Ping è un comando che serve per verificare se un server è connesso alla rete o meno.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-mmZhHp9Afv4/VJs8yJaRNvI/AAAAAAAAATo/b-Nxk4LbGfs/s1600/Mini-Corso%2BHacking%2BLe%2BReti%2B2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Mini-Corso Hacking&quot; border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-mmZhHp9Afv4/VJs8yJaRNvI/AAAAAAAAATo/b-Nxk4LbGfs/s1600/Mini-Corso%2BHacking%2BLe%2BReti%2B2.png&quot; height=&quot;199&quot; title=&quot;Mini-Corso Hacking&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Per scoprire l&#39;indirizzo IP del tuo PC:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Vai su &lt;a href=&quot;http://www.mio-ip.it/&quot;&gt;http://www.mio-ip.it&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;h3&gt;
Domain Name System (DNS)&lt;/h3&gt;
&lt;/div&gt;
Provate ora ad aprire il vostro browser e, invece di scrivere il nome del sito web di cui avete scoperto l&#39;IP (nel nostro caso google.it), scrivete l&#39;indirizzo IP stesso e premete Invio (nel nostro caso l&#39;indirizzo è 173.194.113.239). Cosa accade? Non fate altro che visitare il sito di cui avete inserito l&#39;IP. Perché accade questo? Perché ad ogni dominio (ovvero indirizzo di sito web, ad esempio google.it) corrisponde un indirizzo IP; quando inserite nel browser l&#39;indirizzo web di un sito un sistema chiamato DNS trova quale indirizzo IP corrisponde a quel determinato dominio. Una volta trovato lo comunica al browser. Quest&#39;ultima, quindi, invia una richiesta al server con quel determinato IP e quest&#39;ultimo gli invia in risposta la pagina web da visitare e il browser te la mostra.&lt;br /&gt;
&lt;br /&gt;
Ecco uno schema per capire meglio:&lt;br /&gt;
1. L&#39;utente apre il browser (ad esempio Google Chrome) va su&amp;nbsp;&lt;i&gt;www.google.it&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://3.bp.blogspot.com/--qxzjhEKN6M/VJtBivdA2LI/AAAAAAAAAT0/-_okP4rScc8/s1600/Mini-Corso%2BHacking%2BLe%2BReti%2B3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Mini-Corso Hacking&quot; border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/--qxzjhEKN6M/VJtBivdA2LI/AAAAAAAAAT0/-_okP4rScc8/s1600/Mini-Corso%2BHacking%2BLe%2BReti%2B3.png&quot; height=&quot;34&quot; style=&quot;border: 1px solid black;&quot; title=&quot;Mini-Corso Hacking&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
2. Il DNS trova l&#39;indirizzo IP che corrisponde al dominio &lt;i&gt;google.it&lt;/i&gt; (o &lt;i&gt;www.google.it&lt;/i&gt;), ovvero 173.194.113.239, e lo comunica la browser.&lt;br /&gt;
&lt;br /&gt;
3. Il tuo browser invia una richiesta al server 173.194.113.239, è come se dicesse &quot;Ciao io sono il computer [indirizzo IP], voglio visitare la tua pagina web&quot;.&lt;br /&gt;
&lt;br /&gt;
4. Il server risponde al browser inviando la sua pagina web.&lt;br /&gt;
&lt;br /&gt;
5. Il browser mostra all&#39;utente la pagina web. Risultato:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://1.bp.blogspot.com/-ySWE4dz_H6Y/VJtC9TfksMI/AAAAAAAAAUA/wnwdqgPGqUk/s1600/Google_web_search.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;Mini-Corso Hacking&quot; border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-ySWE4dz_H6Y/VJtC9TfksMI/AAAAAAAAAUA/wnwdqgPGqUk/s1600/Google_web_search.png&quot; height=&quot;190&quot; style=&quot;border: 1px solid blue;&quot; title=&quot;Mini-Corso Hacking&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
Tipi di DNS&lt;/h3&gt;
Ci sono 2 tipi di DNS:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;DNS online&lt;/b&gt; che non è altro che un server che offre come servizio il DNS, ovvero trovare quale indirizzo IP corrisponde a quel dominio.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DNS locale&lt;/b&gt;&amp;nbsp;non è un vero e proprio DNS ma un file che contiene i domini con i corrispondenti indirizzi IP a cui il tuo browser si rivolge prima di rivolgersi al DNS online (quello vero e proprio). Sui sistemi operativi Windows, questo file si chiama &lt;i&gt;hosts &lt;/i&gt;e si trova nella directory &lt;i&gt;C:\Windows\System32\drivers\etc&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Hackerare il DNS locale&lt;/h3&gt;
&lt;div&gt;
Ecco una mia video-guida che spiega come hackerare il DNS locale:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.youtube.com/embed/qFfIGC-sI2w?feature=player_embedded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
Conclusioni&lt;/h3&gt;
&lt;div&gt;
Questa lezione è abbastanza corposa perciò non voglio aggiungere altro. La prossima lezione, probabilmente, sarà ancora sulle reti perché questo argomento è abbastanza ampio e vale la pena trattarlo. Arriveranno anche dei nuovi video.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-1.html&quot; target=&quot;_blank&quot;&gt;&amp;lt; Parte 1&lt;/a&gt; | &lt;a href=&quot;http://www.diventarehacker.it/2015/01/mini-corso-hacking-parte-3.html&quot; target=&quot;_blank&quot;&gt;Parte 3 &amp;gt; &lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-2.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATM/9K_K3GJd33s/s72-c/mini%2Bcorso%2Bhacking.png" height="72" width="72"/><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-579955528063211685</guid><pubDate>Fri, 26 Dec 2014 07:00:00 +0000</pubDate><atom:updated>2018-05-11T03:46:11.554+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Sicurezza</category><title>Mini-Corso Hacking - Parte 1</title><description>Ecco finalmente il &lt;b&gt;mini-corso hacking&lt;/b&gt; che ti spiegherà &lt;b&gt;come diventare hacker&lt;/b&gt; e ti farà addentrare nell&#39;affascinante mondo dell&#39;hacking. Inizierai da zero (cos&#39;è 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&#39;è fatto un computer.&lt;br&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATI/6LXriAvbbDU/s1600/mini%2Bcorso%2Bhacking.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATI/6LXriAvbbDU/s1600/mini%2Bcorso%2Bhacking.png&quot; height=&quot;78&quot; width=&quot;400&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a name=&quot;more&quot;&gt;&lt;/a&gt;&lt;div&gt;
&lt;h3&gt;
Introduzione&lt;/h3&gt;
&lt;/div&gt;
Questo corso non può ovviamente essere svolto in un solo post e per questo sarà diviso in più parti. Ma cos&#39;è esattamente questo corso? È frutto di conoscenza e anni di esperienza nel mondo informatico e dell&#39;hacking, apprenderai in maniera semplice i concetti base dell&#39;hacking. A chi è rivolto? È rivolto a chiunque vuole addentrarsi nel mondo dell&#39;hacking, principiante o utente esperto che sia, gli unici requisiti sono quelli elencati nel paragrafo che seguirà.
&lt;br&gt;
&lt;div&gt;
Partirai da zero, capendo il concetto di hacking e cos&#39;è 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.&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;
Requisiti&lt;/h3&gt;
&lt;/div&gt;
Per poter seguire al meglio questo corso occorrono i seguenti requisiti:&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;Passione per l&#39;informatica e l&#39;hacking. Ovviamente, occorre che tu sia appassionato di tecnologia e informatica altrimenti potresti abbandonare la lettura del corso.&lt;/li&gt;
&lt;li&gt;Costanza. Questo è il secondo elemento fondamentale, non stancarti mai di apprendere nuove cose, abbi sete di conoscenza.&lt;/li&gt;
&lt;li&gt;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&amp;nbsp;&lt;a href=&quot;http://diventarehacker.blogspot.com/p/come-diventare-hacker.html&quot; target=&quot;_blank&quot;&gt;Come Diventare Hacker: La Guida Base&lt;/a&gt;&amp;nbsp;che ti guiderà passo passo sul sentiero dell&#39;hacking.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;h3&gt;
Il concetto di hacking&lt;/h3&gt;
&lt;/div&gt;
&lt;div&gt;
Iniziamo col trattare l&#39;argomento fondamentale del corso: l&#39;hacking. Questo termine è abusato e spesso non si conosce il vero significato di esso. Ma cos&#39;è realmente l&#39;hacking? È la ricerca della conoscenza e di soluzioni a problemi che avviene in maniera creativa. In ambito informatico, quindi, è l&#39;insieme dei metodi, delle tecniche e delle operazioni volte a &lt;b&gt;conoscere&lt;/b&gt;, &lt;b&gt;accedere &lt;/b&gt;e &lt;b&gt;modificare &lt;/b&gt;un sistema hardware o software.&lt;br&gt;
&lt;br&gt;
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:&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Analisi &lt;/b&gt;(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.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sfruttare le falle del sistema&lt;/b&gt; (accedere). Questa fase consiste nell&#39;usufruire dei &quot;buchi&quot; di sicurezza del sistema trovati durante la prima fase. In pratica ci si prepara per risolvere praticamente il problema.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Risoluzione&lt;/b&gt;. 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.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
Cos&#39;è e com&#39;è fatto un computer&lt;/h3&gt;
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:&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;La &lt;b&gt;CPU&lt;/b&gt; (Central Processing Unit) o &lt;b&gt;microprocessore&lt;/b&gt; è fondamentale in quanto permette di compiere operazioni aritmetiche (calcoli) e logiche.&lt;/li&gt;
&lt;li&gt;La &lt;b&gt;RAM&lt;/b&gt; (Random Access Memory) o &lt;b&gt;memoria centrale&lt;/b&gt; è 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.&lt;/li&gt;
&lt;li&gt;L&#39; &lt;b&gt;Hard Disk&lt;/b&gt; o &lt;b&gt;disco rigido&lt;/b&gt; è 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.&lt;/li&gt;
&lt;li&gt;Il &lt;b&gt;BUS&lt;/b&gt; o &lt;b&gt;canale di trasmissione dei dati&lt;/b&gt; è 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.&lt;/li&gt;
&lt;li&gt;I &lt;b&gt;dispositivi di input&lt;/b&gt; sono tutti quei componenti che permettono al computer di ottenere informazioni date dall&#39;utente. La tastiera è un dispositivo di input in quanto l&#39;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.&lt;/li&gt;
&lt;li&gt;I &lt;b&gt;dispositivi di output&lt;/b&gt;, invece, sono quelli attraverso i quali il computer comunica all&#39;utente dei dati o informazioni. Il monitor, ad esempio, è un dispositivo di output in quanto da un output all&#39;utente quello che esso sta compiendo (ad esempio sta spostando un file, aprendo un programma).&lt;/li&gt;
&lt;/ul&gt;
Questi sono i componenti principali ma il computer può anche possederne altri come ad esempio la scheda grafica ecc...&lt;br&gt;
&lt;br&gt;
Il principale software è il &lt;b&gt;sistema operativo&lt;/b&gt; (SO) che è una sorta di interfaccia tra il computer e l&#39;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.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
Il linguaggio macchina&lt;/h3&gt;
Questo argomento è un po&#39; 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 &lt;b&gt;segnali elettrici&lt;/b&gt;&amp;nbsp;che viaggiano attraverso il BUS (canale di trasmissione dei dati). Una sequenza di segnali è una istruzione (o dato) in linguaggio macchina. Quest&#39;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.&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
Linguaggi di programmazione&lt;/h3&gt;
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&#39;uomo; le istruzioni, infatti, sono in lingua inglese (che, si sa, è la lingua dell&#39;informatica) e viene fatto uso anche dei vari operatori matematici. I codici scritti nei linguaggi di programmazione vengono &quot;tradotti&quot; in istruzioni binarie da appositi software che sono i compilatori e gli interpreti. L&#39;operazione di &quot;traduzione&quot; è ovviamente complicatissima.&lt;br&gt;
&lt;br&gt;
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.&lt;br&gt;
&lt;br&gt;
Per l&#39;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&#39;interprete e non dal compilatore). Una volta aver preso dimestichezza con questo linguaggio passa ad uno un po&#39; più complicato ma più potente come il C++ (questo, invece, è compilato non interpretato).&lt;br&gt;
&lt;br&gt;
&lt;h3&gt;
Conclusioni&lt;/h3&gt;
Purtroppo, all&#39;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.&lt;br&gt;
&lt;br&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-2.html&quot; target=&quot;_blank&quot;&gt;Parte 2 &amp;gt;&lt;/a&gt; &lt;/div&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2014/12/mini-corso-hacking-parte-1.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-F0OE1I3SvEE/VJiBibLzxiI/AAAAAAAAATI/6LXriAvbbDU/s72-c/mini%2Bcorso%2Bhacking.png" height="72" width="72"/><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-638875891875607163.post-4548733956474893838</guid><pubDate>Sun, 12 Oct 2014 08:45:00 +0000</pubDate><atom:updated>2014-12-30T17:13:27.626+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Guide</category><category domain="http://www.blogger.com/atom/ns#">Hacking</category><category domain="http://www.blogger.com/atom/ns#">Programmazione</category><category domain="http://www.blogger.com/atom/ns#">Script</category><title>Come Creare Un Bruteforce In Python - Parte 3</title><description>Come richiesto da un utente, in questa guida spiego come creare un bruteforce per un qualsiasi sito web. Negli scorsi articoli abbiamo preso in esame la tecnica bruteforce per quanto riguarda il login FTP. Ora, invece, vedremo come usare questa tecnica per un login di un sito web (quindi non più FTP bensì HTTP). Ricordo e sottolineo che i contenuti di questa guida sono a solo scopo informativo e non sono di incoraggiamento a compiere reati informatici quali il bruteforcing.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s1600/bruteforce.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s1600/bruteforce.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Premetto, che il metodo utilizzato in questo articolo potrebbe non funzionare su siti di massima protezione.&lt;br /&gt;
&lt;br /&gt;
Occorre, innanzitutto, precisare che verrà utilizzata la libreria python urllib che serve per leggere il codice di una pagina web.&lt;br /&gt;
&lt;br /&gt;
Descriviamo le operazioni che andranno compiute per creare un bruteforce utilizzando la urllib:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Aprire la pagina di action del form&lt;/b&gt; (con la funzione urlopen) che è settata dall&#39;attributo action del form, la chiameremo quindi pagina di action. Per comprendere meglio consiglio di studiare un po&#39; di HTML. Se già lo masticate, meglio ancora. La pagina di action, dunque, verrà aperta ma con i campi già compilati, il campo username (o email, dipende dal form), ad esempio, già sappiamo che sarà compilato con l&#39;username (o email) della vittima, ovvero l&#39;username di cui vogliamo scoprire la password. Il campo password sarà compilato dalla password da testare. Ad ogni combinazione di password, dunque, viene tentato il login fin quando non sarà effettuato l&#39;accesso e quindi la password sarà trovata.&lt;br /&gt;
&lt;br /&gt;
Ecco un esempio di form:&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;lt;form method=&quot;post&quot; action=&quot;login.php&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Username:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;input type=&quot;text&quot; name=&quot;username&quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Password:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;input type=&quot;password&quot; name=&quot;password&quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;lt;input type=&quot;submit&quot; name=&quot;submit&quot; value=&quot;Accedi&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/blockquote&gt;
&lt;br /&gt;
Analizziamo il form. La pagina di action è &lt;i&gt;login.php&lt;/i&gt;. Per ottenere l&#39;url completo della pagina di action la dobbiamo far precedere dall&#39;indirizzo su cui ci troviamo, se ci trovassimo, ad esempio, su &lt;i&gt;http://www.miosito.it&lt;/i&gt; l&#39;url completo della pagina di action sarà &lt;i&gt;http://www.miosito.it/login.php&lt;/i&gt;. Il primo input è il campo username, il secondo è il campo password e l&#39;ultimo input è il pulsante di accesso. A volte, possono esistere più input, ma dobbiamo considerare solo questi 3 input fondamentali. Segniamoci i parametri name degli input, ovvero, username, password e submit. Possiamo ora passare al secondo passaggio.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Memorizzare il messaggio di avvenuto login inserendo username e password corretti&lt;/b&gt;. Consiglio di farlo con la funzione urlopen da linea di comando Python (dalla Shell Python) per velocizzare il tutto. Scriveremo dunque:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import urllib&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; parametriCorretti = { &quot;username&quot; : &quot;mioUsername&quot;, &quot;password&quot; : &quot;mia Password&quot;, &quot;submit&quot; : &quot;1&quot; }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; p = urllib.urlencode(parametriCorretti)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; paginaDiAction = urllib.urlopen(&quot;http://www.miosito.it/login.php&quot;, p)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; paginaDiAction.read()&lt;br /&gt;
&lt;br /&gt;
Ovviamente, invece di mioUsername e miaPassword inseriremo username e password corretti. Submit lo rimarremo impostato a 1. Con la riga paginaDiAction.read() apparirà il codice HTML restituito dalla pagina da cui prenderemo e ci segneremo il messaggio di avvenuto login (ad esempio &quot;Login effettuato!&quot;).&lt;br /&gt;
&lt;br /&gt;
Nella prossima parte vedremo come eseguire l&#39;attacco bruteforce vero e proprio utilizzando parte del codice degli articoli precedenti e scrivendo una nuova parte di codice che sarà il controllo HTTP della pagina di avvenuto login nel caso il programma abbia trovato la password corretta.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;http://diventarehacker.blogspot.it/2013/11/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;&amp;lt; Parte 2&lt;/a&gt; | &lt;a href=&quot;http://www.diventarehacker.it/2014/12/come-creare-un-bruteforce-in-python.html&quot; target=&quot;_blank&quot;&gt;Parte 4 &amp;gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><link>http://www.diventarehacker.it/2014/10/come-creare-un-bruteforce-in-python.html</link><author>noreply@blogger.com (DiventareHacker.it)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-gf3xnqujlxM/VKLHHAaCnNI/AAAAAAAAAUs/S5YnDx-2BTQ/s72-c/bruteforce.png" height="72" width="72"/><thr:total>29</thr:total></item></channel></rss>