SHARE
TWEET

index.php

a guest Sep 2nd, 2011 823 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. $max_req = 4;
  3.  
  4. // ограничить кол-во запросов для сессии: 1 запрос на 4 секунд
  5. session_start();
  6. if ( isset($_SESSION['last_request_time']) )
  7. {
  8.     if ($_SESSION['request_count'] > $max_req)
  9.     {
  10.         #var_dump($_SESSION['last_request_time'], mktime()) ;
  11.        if ( ($_SESSION['last_request_time'] + 3) > mktime() )
  12.         {
  13.             $data['error'] = "You can do 1 search query in 3 seconds. Want more? Send your suggestion to harpywar@gmail.com.";
  14.             die ( json_encode($data) );
  15.         }
  16.         else{
  17.              $_SESSION['last_request_time'] = mktime();
  18.              $_SESSION['request_count'] = 0;
  19.         }
  20.     }
  21.     else
  22.     {
  23.         $_SESSION['request_count']++;
  24.     }
  25.  
  26.  
  27. }
  28. else
  29. {
  30.     $_SESSION['last_request_time'] = mktime();
  31.     $_SESSION['request_count'] = 0;
  32. }
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39. $hash =  ( isset($_REQUEST["hash"]) ) ? $_REQUEST["hash"] : false;
  40. $search_in = ( isset($_REQUEST["search_in"]) ) ? $_REQUEST["search_in"] : false;
  41.  
  42. if ( $hash )
  43. {
  44.         require_once("inc/HashCrack.class.php");
  45.  
  46.         $db_steps = 0; // кол-во шагов для поиска
  47.         $db_size = 0; // размер бд в байтах
  48.         $db_rows = 0; // кол-во записей
  49.         $db_elapsed = 0; // поисковое время
  50.         $db_bytes_read = 0; // считано байтов
  51.  
  52.         // TODO: cache? для последних 100 запросов
  53.         //       если запрос есть в файле кеша, то отправить пароли оттуда
  54.  
  55.         // поиск в одном файле за один запрос
  56.         switch ($search_in)
  57.         {
  58.                 // dictionary
  59.                 case '1':
  60.                         $passList = SearchDictionary($hash);
  61.                         break;
  62.                 // 1-6 symbols
  63.                 case '2':
  64.                         $passList = SearchAlpha6($hash);
  65.                         break;
  66.                 // 7-9 symbols
  67.                 case '3':
  68.                         $passList = SearchDigits9($hash);
  69.                         break;
  70.                 // 10 symbols
  71.                 case '4':
  72.                         $passList = SearchDigits10($hash);
  73.                         break;
  74.                 default:
  75.                         $passList = false;
  76.         }
  77.  
  78.         //$passList2 = SearchNum9($hash);
  79.         //$passList = array_merge($passList1, $passList2);
  80.  
  81.         //var_dump($db_elapsed);
  82.         //var_dump($passList);
  83.         //foreach ($passList as $p)
  84.         //      echo $p . '<br>';
  85.  
  86.         #if (!$passList)
  87.         #       $passList = SearchNum($hash);
  88.  
  89.         $data = array
  90.         (
  91.                 'error' => ($passList === false) ? 'Not found' : '',
  92.                 'passwords' => $passList,
  93.  
  94.                 'database' => array (
  95.                         'size' => $db_size, //$db_size,
  96.                         'rows' => $db_rows,
  97.                         'steps' => $db_steps,
  98.                         'passwords_found' => count($passList),
  99.                         'bytes_read' => $db_bytes_read,
  100.                         'elapsed' => $db_elapsed
  101.                 ),
  102.                 'server' => array (
  103.                         'processor' => 'P4 3.06GHz',
  104.                         'memory' => '256Mb',
  105.                         'disk' => '250Gb',
  106.                         'os' => 'Debian 6',
  107.                         'hosted' => 'Naki-BoT'
  108.                 )
  109.  
  110.         );
  111.  
  112.  
  113.  
  114.         #var_dump($data);
  115.  
  116.         //$s = serialize($data);
  117.     //echo $s;
  118.     echo json_encode($data);
  119. }
  120.  
  121.  
  122.  
  123. // искать хеш в паролях из букх и цифр 0-9a-z, 1-6 символов
  124. function SearchAlpha6($hash)
  125. {
  126.         $filename = "../250g/hash_data/1-6alpha";
  127.     $pass_length = 6;
  128.     $pass_compressed = false;
  129.         $hash_length = 3;
  130.         $hash_compressed = true;
  131.     $meta1_length = 2;
  132.     $meta2_length = 6;
  133.  
  134.         $pass = CrackIt($hash, $filename, $pass_length, $pass_compressed, $hash_length, $hash_compressed, $meta1_length, $meta2_length);
  135.         return $pass;
  136. }
  137. // искать хеш в паролях из цифр 0-9, 7-9 символов
  138. function SearchDigits9($hash)
  139. {
  140.         $filename = "../250g/hash_data/7-9digits";
  141.     $pass_length = 5;
  142.     $pass_compressed = true;
  143.         $hash_length = 3;
  144.         $hash_compressed = true;
  145.     $meta1_length = 2;
  146.     $meta2_length = 6;
  147.  
  148.         $pass = CrackIt($hash, $filename, $pass_length, $pass_compressed, $hash_length, $hash_compressed, $meta1_length, $meta2_length);
  149.         return $pass;
  150. }
  151. // искать хеш в паролях из цифр 0-9, 10 символов
  152. function SearchDigits10($hash)
  153. {
  154.         $filename = "../250g/hash_data/10digits";
  155.     $pass_length = 5;
  156.     $pass_compressed = true;
  157.         $hash_length = 3;
  158.         $hash_compressed = true;
  159.     $meta1_length = 2;
  160.     $meta2_length = 6;
  161.  
  162.         $pass = CrackIt($hash, $filename, $pass_length, $pass_compressed, $hash_length, $hash_compressed, $meta1_length, $meta2_length);
  163.         return $pass;
  164. }
  165. // искать хеш в паролях из словаря (32 символа)
  166. function SearchDictionary($hash)
  167. {
  168.         $filename = "../250g/hash_data/dictionary";
  169.     $pass_length = 32;
  170.     $pass_compressed = false;
  171.         $hash_length = 3;
  172.         $hash_compressed = true;
  173.     $meta1_length = 1;
  174.     $meta2_length = 5;
  175.                        
  176.         $pass = CrackIt($hash, $filename, $pass_length, $pass_compressed, $hash_length, $hash_compressed, $meta1_length, $meta2_length);
  177.         return $pass;
  178. }
  179.  
  180. function CrackIt($hash, $filename, $pass_length = 5, $pass_compressed = false, $hash_length = 3, $hash_compressed = true, $meta1_length = 2, $meta2_length = 6)
  181. {
  182.         global $db_steps, $db_size, $db_rows, $db_elapsed, $db_bytes_read;
  183.         $h = new HashCrack($filename, $hash_length, $hash_compressed, $pass_length, $pass_compressed, $meta1_length, $meta2_length);
  184.         $pass = $h->Search($hash);
  185.  
  186.  
  187.         $db_size += $h->GetDbSize();
  188.         $db_rows += $h->GetDbRows();
  189.         $db_steps += $h->GetDbSteps();
  190.         $db_bytes_read += $h->GetDbBytesRead();
  191.         $db_elapsed += $h->GetDbElapsed();
  192.  
  193.         if ( $pass !== false  )
  194.                 return $pass;
  195.         else
  196.                 return false;
  197. }
RAW Paste Data
Top