comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

HASHorator [MD5 cracker]

  • 2 Respuestas
  • 2652 Vistas

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« en: Abril 16, 2012, 03:58:23 am »
HASHorator es una aplicación que programé ya hace un tiempo en PHP la cual tiene como fin tratar de decifrar por manera inversa a base de otras páginas con base de datos de hash anteriormente creados para tratar de encontrar un match.

Por el momento cuenta con 13 páginas sin dejar a un lado la opción de meter un diccionario, a continuación explico un poco más las características de este pequeño pero útil script:


Select cipher type/Seleccionar tipo de cifrado:
  • MD5 ($pass)
  • SHA1 ($pass)
  • SMF ($salt.$pass)

Put HASH/Ingresar HASH:
  • Mediante expresiones regulares se puede tratar de comprobar que el hash ingresado sea el correcto ([a-f0-9]{long}).

Put SALT/Ingresar SALT:
  • Opción solo disponible para SMF

Dictionary/Diccionario:
Opción disponible para los 3 tipos de cifrados, en la variable $max se especifica el máximo de palabras por diccionario.
  • Stop processing if there’s a positive match/Parar el procesamiento al primer resultado positivo:

Opción para detener el script al primer resultado positivo; esto puede acelerar el tiempo de ejecución del script (recomendable).

Tengo una página que rompe MD5 pero no se como agregarla al script:
El script tiene como motor el array multidimensional $data el cual contiene 4 arrays importantes:

    pages: Contiene la página a donde se enviará la petición POST o GET por cURL.
    parameters: Los parámetros del formulario o de la URL.
    sustitution: Las expresiones regulares para sacar exclusivamente el resultado (en caso de ser positivo).
    security: Para eliminar etiquetas repetidas.

Tomaremos de ejemplo la página http://md5decryption.com/, al nosotros ingresar un hash para desencriptar nos regresará:
Citar
<b>Md5 Hash:</b> dc02aab0ea69aab5be23c7d966bd04a1<br/><br/><img src="line.gif"/><br/><br/><b><font size="2">Decrypted Text: </font></b><font size="2">xt3mp@null.net</font>

Por lo tanto, nuestro array multidimensional debe constar de:
  • pages: La página a donde hace referencia; si es por GET en vez por URL se pone la url url.com/get o url.com/hash=hash según sea el caso y los parámetros se ponen como null.
  • parameters: Parámetros del formulario; si es por GET la petición se pone null.
  • sustitution: La expresión regular
  • security: Generalmente null si no se repiten tags
Código con ejemplo POST y GET:
Código: PHP
  1. <?php
  2. $data = array(
  3.     'pages' => array(
  4.         0 => 'http://md5decryption.com/'
  5.         1 => 'http://md5.rednoize.com/?q='.$hash
  6.     ),
  7.     'parameters' => array(
  8.         0 => 'hash='.$hash.'&submit=Decrypt It!'
  9.         1 => null
  10.     ),
  11.     'sustitution' => array(
  12.         0 => "/Decrypted Text: <\/b>(.*)<\/font>/"
  13.         1 => "/<div id=\"result\" >(.*)<\/div>/"
  14.     ),
  15.     'security' => array(
  16.         0 => null
  17.         1 => null
  18.     )
  19. );
  20. ?>
Recordemos que el 0 y 1 debe ser el número siguiente, en este caso, si tratamos de añadir una página más sería el 2 =>.
Código: PHP
  1. <?php
  2. /*
  3.  * Name: Hashorator
  4.  * Author: Xt3mP
  5.  * Contact: xt3mp[at]null[dot]net
  6.  * Bugs: xt3mp[at]null[dot]net
  7.  * Personal website: http://xt3mp.mx
  8.  * Website: http://backroot.org
  9.  * Version: 1.0 BETA
  10.  */
  11. set_time_limit(0); //30 seconds default
  12. $max = 100000; //Max words per dictionary
  13. ?>
  14. <title>Hashorator v1.0 [Xt3mP]</title>
  15. <style type="text/css">body{font-family:Courier;background-color:#000;color:#FFF;font-size:13px}div#container{width:690px;height:auto;border:1px dashed #FFF;margin:0 auto}div#container a{text-decoration:none;color:#FF5B5B}div#container a:hover{color:#FFF}div#menu{width:100%;height:auto;border-top:1px dashed #FFF;border-bottom:1px dashed #FFF;text-align:center}div.border{border-top:1px dashed #FFF;text-align:center;color:red}div#container input{background-color:#FFF;color:#000;border:1px solid #FFF;font-family:Courier;cursor:pointer;text-align:center;padding:5px}pre.none{width:auto;margin:0;padding:0}div#result{width:100%;height:auto;font-size:12px}div#container textarea{border:1px solid #FFF}</style>
  16. <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
  17. <script>$(function(){$("#salt").css("background-color","#999").attr("disabled",true);$("#dic").css("background-color","#999").attr("disabled",true);$("#usedic").click(function(){if($("#dic").attr("disabled")==true){$("#dic").attr("disabled",false).css("background-color","#FFF").css("color","#000");$("#dictionary").val("yes")}else{$("#dic").attr("disabled",true).val("").css("background-color","#999");$("#dictionary").val("no")}});$("#type").change(function(){var a=$("select#type option:selected").val();if(a=="mysql"){$("#salt").css("background-color","#999").val("").attr("disabled",true);$("#dic").css("background-color","#999").val("").attr("disabled",true);$("#usedic").attr("disabled",true).attr("checked",false);$("#dictionary").val("no")}else if(a=="smf"){$("#salt").css("background-color","#FFF").css("color","#000").attr("disabled",false);$("#dic").css("background-color","#FFF").val("").attr("disabled",false);$("#usedic").attr("disabled",true).attr("checked",true);$("#dictionary").val("yes")}else{$("#salt").css("background-color","#999").val("").attr("disabled",true);$("#dic").css("background-color","#999").attr("disabled",true);$("#usedic").attr("disabled",false).attr("checked",false);$("#dictionary").val("no")}})})</script>
  18. <div id="container">
  19. <pre>
  20.          ___ ___                __                         __ Hashorator v1.0
  21.         |   Y   |.---.-..-----.|  |--..-----..----..---.-.|  |_ .-----..----.
  22.         |.  1   ||  _  ||__ --||     ||  _  ||   _||  _  ||   _||  _  ||   _|
  23.         |.  _   ||___._||_____||__|__||_____||__|  |___._||____||_____||__|
  24.         |:  |   |
  25.         |::.|:. |                                         Powered By Xt3mP
  26.         `--- ---'                                       xt3mp[at]null[dot]net
  27. </pre>
  28. <div id="menu">
  29.         <form action="" method="POST">
  30.         Select cipher type:
  31.         <select name="type" id="type">
  32.                 <option value="md5">MD5</option>
  33.                 <option value="sha1">SHA1</option>
  34.                 <!-- <option value="mysql">MySQL</option> -->
  35.         <option value="smf">SMF</option>
  36.         </select><br />
  37.         Put HASH: <br />
  38.         <input type="text" name="hash" value="" maxlength="40" size="41"/><br />
  39.         Put SALT <a href="#">(?)</a>: <br />
  40.         <input type="text" name="salt" id="salt" value="" maxlength="40" size="41"/><br />
  41.         Dictionary: <input type="checkbox" id="usedic" name="usedic" value="yes"><br />
  42.         <input type="hidden" value="no" id="dictionary" name="dictionary" />
  43.         <textarea name="dic" id="dic" rows="5" cols="50"></textarea><br />
  44.         Stop processing if there's a positive match: <input type="checkbox" name="stop" value="yes"><br />
  45.         <input type="submit" name="submit" value="Decipher"/>
  46.         </form>
  47. </div>
  48. <div id="result">
  49. <?php
  50. $start = microtime(true);
  51. function checkHash($hash, $long)
  52. {
  53.    return preg_match('/^[a-f0-9]{'.$long.'}$/', $hash);
  54. }
  55. if(isset($_POST['submit'])):
  56.         $hash = htmlentities($_POST['hash']);
  57.         $salt = htmlentities($_POST['salt']);
  58.         $type = $_POST['type'];
  59.         $usedic = $_POST['dictionary'];
  60.         $dic = $_POST['dic'];
  61.         $stop = $_POST['stop'];
  62.         $counter = 0;
  63.         if($type == 'md5'):
  64.                 if(!checkHash($hash, 32)):
  65.                         echo '<div class="border">The entered hash doesn\'t look like MD5</div>';
  66.                         exit();
  67.                 else:
  68.                         $data = array(
  69.                                         'pages' => array(
  70.                                                                 0  => 'http://md5decryption.com/',
  71.                                                                 1  => 'http://md5-decrypter.com/',
  72.                                                                 2  => 'http://md5.rednoize.com/?q='.$hash,
  73.                                                                 3  => 'http://md5.hashcracking.com/search.php?md5='.$hash,
  74.                                                                 4  => 'http://www.md5rainbow.com/'.$hash,
  75.                                                                 5  => 'http://md5crack.com/crackmd5.php',
  76.                                                                 6  => 'http://md5pass.info/',
  77.                                                                 7  => 'http://md5.unidadlocal.com/'.$hash,
  78.                                                                 8  => 'http://www.hashhack.com/index.php',
  79.                                                                 9  => 'http://www.md5this.com/crackit.php',
  80.                                                                 10 => 'http://md5hack.com/md5_cracker.php',
  81.                                                                 11 => 'http://www.md5.net/cracker.php',
  82.                                                                 12 => 'http://crackstation.net/index.php'
  83.                                         ),
  84.                                         'parameters' => array(
  85.                                                                 0  => 'hash='.$hash.'&submit=Decrypt It!',
  86.                                                                 1  => 'data[Row][cripted]='.$hash,
  87.                                                                 2  => null,
  88.                                                                 3  => null,
  89.                                                                 4  => null,
  90.                                                                 5  => 'term='.$hash.'&submit=Crack that hash baby!',
  91.                                                                 6  => 'hash='.$hash.'&get_pass=Get Pass',
  92.                                                                 7  => null,
  93.                                                                 8  => 'hash='.$hash.'&antispam=7',
  94.                                                                 9  => 'h='.$hash.'&s=Crack it!',
  95.                                                                 10 => 'dico=dicos/1.txt&hash='.$hash.'&ok= Crack ',
  96.                                                                 11 => 'hash='.$hash,
  97.                                                                 12 => 'hashes='.$hash.'&crack=Crack Hashes'
  98.                                         ),
  99.                                         'sustitution' => array(
  100.                                                                 0  => "/Decrypted Text: <\/b>(.*)<\/font>/",
  101.                                                                 1  => "/<b class=\"res\">(.*)<\/b>/",
  102.                                                                 2  => "/<div id=\"result\" >(.*)<\/div>/",
  103.                                                                 3  => "/Cleartext of ".$hash." is (.*)/",
  104.                                                                 4  => "/(.*)<br\/><p style=\"font-size: 9pt; line-height: 48px;\">/",
  105.                                                                 5  => "/Found: md5\(\"(.*)\"\) = ".$hash."/",
  106.                                                                 6  => "/Password - <b>(.*)<\/b>/",
  107.                                                                 7  => "/Se encontro <strong>\"(.*)\"<\/strong>  MD5:/",
  108.                                                                 8  => "/<center>".$hash." : : <b><font color=green>(.*)<\/font><\/b>/",
  109.                                                                 9  => "/The value of <b>".$hash."<\/b> resolves to -> <b>(.*)<\/b>/",
  110.                                                                 10 => "/<h3>".$hash." <\/br><font color=white>Cracking Successful Password =<\/font><font color=red size=20> (.*)/",
  111.                                                                 11 => "/<input type=\"text\" id=\"hash\" size=\"32\" value=\"(.*)\"\/> /",
  112.                                                                 12 => "/<td>".$hash."<br \/><\/td><td>md5<\/td><td>(.*)<\/td>/"
  113.                                         ),
  114.                                         'security' => array(
  115.                                                                 0  => null,
  116.                                                                 1  => "<b class=\"res\">".$hash."</b>",
  117.                                                                 2  => null,
  118.                                                                 3  => null,
  119.                                                                 4  => null,
  120.                                                                 5  => null,
  121.                                                                 6  => null,
  122.                                                                 7  => null,
  123.                                                                 8  => null,
  124.                                                                 9  => null,
  125.                                                                 10 => null,
  126.                                                                 11 => null,
  127.                                                                 12 => null
  128.                                         )
  129.                         );
  130.                 endif;
  131.         elseif($type == 'sha1'):
  132.                 if(!checkHash($hash, 40)):
  133.                         echo '<div class="border">The entered hash doesn\'t look like SHA1</div>';
  134.                         exit(1);
  135.                 else:
  136.                         $data = array(
  137.                                         'pages' => array(
  138.                                                                 0  => 'http://sha1.unidadlocal.com/'.$hash
  139.                                         ),
  140.                                         'parameters' => array(
  141.                                                                 0  => null,
  142.                                                                 1  => 'datafromuser='.$hash
  143.                                         ),
  144.                                         'sustitution' => array(
  145.                                                                 0  => "/Se encontro <strong>\"(.*)\"<\/strong>  SHA1:/"
  146.                                         ),
  147.                                         'security' => array(
  148.                                                                 0  => null
  149.                                         )
  150.                         );
  151.                 endif;
  152.         /*
  153.         passcracking.com isn't works anymore, so... is deprecated.
  154.         elseif($type == 'mysql'):
  155.                 if(!checkHash($hash, 16)):
  156.                         echo '<div class="border">The entered hash doesn\'t look like MySQL</div>';
  157.                         exit(1);
  158.                 else:
  159.                         $data = array(
  160.                                                 'pages' => array(
  161.                                                                         0  => 'http://passcracking.com/'
  162.                                                 ),
  163.                                                 'parameters' => array(
  164.                                                                         0  => 'datafromuser='.$hash
  165.                                                 ),
  166.                                                 'sustitution' => array(
  167.                                                                         0  => "/<td bgcolor=#FF0000>(.*)<\/td><td>/",
  168.                                                 ),
  169.                                                 'security' => array(
  170.                                                                         0  => null
  171.                                                 )
  172.                                 );
  173.                 endif;*/
  174.         elseif($type == 'smf'):
  175.                 if(!checkHash($hash, 40)):
  176.                         echo '<div class="border">The entered hash doesn\'t look like SMF</div>';
  177.                         exit(1);
  178.                 endif;
  179.         endif;
  180.         $title = 'Cipher type: <font color="#00FF00">'.strtoupper($type).'</font><br />- - - - - - - - - - -<br />';
  181.         if($usedic != 'yes'):
  182.                 echo $title;
  183.                 for($i = 0; $i<count($data['pages']); $i++):
  184.                         $ch = curl_init();
  185.                         curl_setopt($ch, CURLOPT_URL, $data['pages'][$i]);
  186.                         if(!empty($data['parameters'][$i]))
  187.                         {
  188.                                 curl_setopt($ch, CURLOPT_POST, 1);
  189.                                 curl_setopt($ch, CURLOPT_POSTFIELDS, $data['parameters'][$i]);
  190.                         }
  191.                         curl_setopt($ch, CURLOPT_AUTOREFERER, false);
  192.                         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  193.                         curl_setopt($ch, CURLOPT_REFERER, $data['pages'][$i]);
  194.                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  195.                         $return = curl_exec ($ch);
  196.                         curl_close ($ch);
  197.                         if(!empty($data['sustitution'][$i]))
  198.                         {
  199.                                 $test = preg_match($data['sustitution'][$i], str_replace($data['security'][$i], "", $return), $result);
  200.                                 $result = $result[1];
  201.                         }
  202.                         $result = ($result == 'Entry not found.' or empty($result)) ? '' : $result;
  203.                         if(!empty($result)):
  204.                                 $counter++;
  205.                                 $hash_dec = $result;
  206.                                 echo 'Hash::['.$hash.']<br />
  207.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Page::<font color="#00FF00">'.$data['pages'][$i].'</font><br />
  208.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Status::<font color="#00FF00">Found</font><br />
  209.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Result::<font color="#00FF00">'.$hash_dec.'</font><br />';
  210.                                 if($stop == 'yes'):
  211.                                         break;
  212.                                 endif;
  213.                         elseif($stop != 'yes'):
  214.                                 echo 'Hash::['.$hash.']<br />
  215.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Page::<font color="red">'.$data['pages'][$i].'</font><br />
  216.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Status::<font color="red">Not Found</font><br />
  217.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Result::<font color="red">none</font><br />';
  218.                         endif;
  219.                 endfor;
  220.                 $min = ($stop == 'yes') ? '[Min] '.$counter.' of '.count($data['pages']): $counter.'/'.count($data['pages']);
  221.                 if($counter >= 1):
  222.                         echo '- - - - - - - - - - -<br />Positive matches: <font color="#00FF00">'.$min.'</font>';
  223.                         echo '<br />Deciphered hash: <font color="#00FF00">'.$hash_dec.'</font>';
  224.                 else:
  225.                         echo '- - - - - - - - - - -<br />Positive matches: <font color="red">[None] '.$counter.'/'.count($data['pages']).'</font>';
  226.                         echo '<br />Deciphered hash: <font color="red">Not Found</font>';
  227.                 endif;
  228.         else:
  229.                 $palabra = explode("\r\n", $dic);
  230.                 if((count($palabra) > $max) or (count($palabra) == 1)):
  231.                         echo '<div class="border">Only allows <font color="red">1-'.$max.'</font> word per dictionary.</div>';
  232.                         exit(1);
  233.                 else:
  234.                         echo $title;
  235.                         for($i = 0; $i<count($palabra); $i++):
  236.                                 if($type == 'md5' or $type == 'sha1'):
  237.                                         $new_hash = ($type == 'md5') ? md5($palabra[$i]) : sha1($palabra[$i]);
  238.                                 elseif($type == 'smf'):
  239.                                         $new_hash = sha1($salt.$palabra[$i]);
  240.                                         $add = $salt;
  241.                                 endif;
  242.                                 if(!empty($palabra[$i])):
  243.                                         if($new_hash == $hash):
  244.                                                 $counter++;
  245.                                                 $hash_dec = htmlspecialchars($palabra[$i], ENT_QUOTES);
  246.                                                 echo 'Hash::['.$hash.']<br />';
  247.                                                 echo (!empty($salt)) ? '&nbsp;&nbsp;&nbsp;&nbsp;[+]Salt::<font color="#00FF00">'.$salt.'</font><br />' : '';
  248.                                                 echo '&nbsp;&nbsp;&nbsp;&nbsp;[+]Word::<font color="#00FF00">'.$hash_dec.'</font><br />
  249.                                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Status::<font color="#00FF00">Found</font><br />
  250.                                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Result::<font color="#00FF00">'.$add.$hash_dec.'</font><br />';
  251.                                                 if($stop == 'yes'):
  252.                                                         break;
  253.                                                 endif;
  254.                                         elseif($stop != 'yes'):
  255.                                                 echo 'Hash::['.$hash.']<br />';
  256.                                                 echo (!empty($salt)) ? '&nbsp;&nbsp;&nbsp;&nbsp;[+]Salt::<font color="red">'.$salt.'</font><br />' : '';
  257.                                                 echo '&nbsp;&nbsp;&nbsp;&nbsp;[+]Word::<font color="red">'.$palabra[$i].'</font><br />
  258.                                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Status::<font color="red">Not Found</font><br />
  259.                                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Result::<font color="red">none</font><br />';
  260.                                         endif;
  261.                                         $total++;
  262.                                 endif;
  263.                         endfor;
  264.                         if($counter == 0):
  265.                                 echo 'Hash::['.$hash.']<br />';
  266.                                 echo (!empty($salt)) ? '&nbsp;&nbsp;&nbsp;&nbsp;[+]Salt::<font color="red">'.$salt.'</font><br />' : '';
  267.                                 echo '&nbsp;&nbsp;&nbsp;&nbsp;[+]Word::<font color="red">'.$palabra[$i].'</font><br />
  268.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Status::<font color="red">Not Found</font><br />
  269.                                        &nbsp;&nbsp;&nbsp;&nbsp;[+]Result::<font color="red">none</font><br />';
  270.                         endif;
  271.                         $min = ($stop == 'yes') ? '[Mínimo] '.$counter.' de '.count($palabra): $counter.'/'.count($palabra);
  272.                         if($counter >= 1):
  273.                                 echo '- - - - - - - - - - -<br />Positive matches: <font color="#00FF00">'.$min.'</font>';
  274.                                 echo '<br />Deciphered hash: <font color="#00FF00">'.$add.$hash_dec.'</font>';
  275.                         else:
  276.                                 echo '- - - - - - - - - - -<br />Positive matches: <font color="red">'.$counter.'/'.count($palabra).'</font>';
  277.                                 echo '<br />Deciphered hash: <font color="red">Not Found</font>';
  278.                         endif;
  279.                 endif;
  280.         endif;
  281.         $end = microtime(true); //Obtenemos tiempo final
  282.         echo '<br />Execution time: <font color="#00FF00">'.str_replace('-', '', round($start - $end, 2)).' sec</font>';
  283. endif;
  284. ?>
  285. </div>
  286. </div>

Nota: Es probable que tenga fallos o que alguno de los sitios no funcionen, por lo que no me hago responsable de los fallos en cuestión. Además, el script lo que hace es mandar petición a una lista de páginas que hacen todo el trabajo; éste script, sólo sirve de intermediario.
Nota: El script es viejo por lo que se puede optimizar bastante.

Saludos.
Cada vez que me das Karma me motivas

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 552
  • Actividad:
    3.33%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« Respuesta #1 en: Mayo 31, 2013, 05:08:02 am »
perdon por revivir el post, pero esto todavia funciona?
Pentest - Hacking & Security Services

Contact me: arthusu@gmail.com

Desconectado Xt3mP

  • *
  • Underc0der
  • Mensajes: 432
  • Actividad:
    0%
  • Reputación 0
  • Ellos me están buscando, pero yo los encontraré.
    • MSN Messenger - Xt3mP@h4x0rz.us
    • AOL Instant Messenger - Xt3mP@h4x0rz.us
    • Yahoo Instant Messenger - Xt3mP@h4x0rz.us
    • Ver Perfil
    • Xt3mP
« Respuesta #2 en: Mayo 31, 2013, 05:09:27 am »
Sí, aunque creo que algunos sitios están caídos o tienen captcha; el día de mañana postearé un tuto respecto a ésto para que lo tomes de referencia, igual lo actualizaré bajo otro nombre.

Saludos,
Xt3mP.
Cada vez que me das Karma me motivas

 

¿Te gustó el post? COMPARTILO!



Pack Tools Defacing (Symlink-Cpanel Cracker-Shells-Bypass Cloudflare)

Iniciado por Bin3ximal

Respuestas: 0
Vistas: 2640
Último mensaje Mayo 04, 2013, 08:30:44 pm
por Bin3ximal
Cpanel + FTP Cracker | Code Security

Iniciado por ANTRAX

Respuestas: 5
Vistas: 5693
Último mensaje Octubre 17, 2012, 11:43:48 am
por t0st4d0r