Код взят из phpRemoteView шелла и выведен в отдельный скрипт. В отдельном скрипте работает быстрее чем в шелле
<?php
set_time_limit(0);
ini_set('max_execution_time',0);
ini_set('output_buffering',0);
$from=$_REQUEST['from'];
$text=$_REQUEST['text'];
$php=$_REQUEST['php'];
$go=$_REQUEST['go'];
$fulltime=$_REQUEST['fulltime'];
$fullqty=$_REQUEST['fullqty'];
$self=basename($_SERVER['PHP_SELF']);
echo "<html>\n";
echo "<head>\n";
echo "<title>MD5 crack</title>\n";
echo "</head>\n";
echo "<body bgcolor='#181818' text='#FFFFFF'>\n";
echo "<form action=$self name=main>\n";
echo "<center><h1>MD5 crack</h1></center>";
if (empty($go)) {
echo "<b>MD5</b>: <input type=text name=text value='$text' size=40> (только 32 знака: 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)<br>";
echo "<b>Диапазон</b>: <input type=text name=php value=\"".htmlspecialchars($php)."\" size=90><br>";
$chars=array(
'a-z'=>"abcdefghijklmnopqrstuvwxyz",
'a-z,A-Z'=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
'a-z,0-9'=>"abcdefghijklmnopqrstuvwxyz0123456789",
'a-z,A-Z,0-9'=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
'a-z,A-Z,0-9,other'=>"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~`
!@#\$%^&*()_+-=[]{};:,<.>/\"'\\");
$i=0;
foreach ($chars as $k=>$v) {
echo "<script>str$i=\"".str_replace("\"","\\\"",str_replace("\\","\\\\",$v))."\"</script>
<a href='' onclick=\"document.main.php.value=str$i;return false\">$k</a> ";
$i++;
}
echo "
<br><b>Начальная позиция</b>: <input type=text size=70 name=from value='$from'><br>
<input type=hidden name=go value=1>
<input type=hidden name=fullqty value=$fullqty>
<input type=hidden name=fulltime value=$fulltime>
<input type=submit value=\"СТАРТ\"></form>";
}
else {
function mdgetword() {
global $php,$from,$word;
$word="";
for ($i=0; $i<count($from); $i++) $word.=$php[$from[$i]];
}
$fulltime=intval($fulltime);
$fullqty=intval($fullqty);
$text=strtolower($text);
if (!preg_match("!^[0-9a-f]{32}$!",$text)) exit("Неправильный формат MD5! Должен быть: Только 32 знака - 0-9,a,b,c,d,e,f");
if (empty($php) || strlen($php)==0) $php="qwertyuiopasdfghjklzxcvbnm";
if (empty($from) || !preg_match("!^([0-9]+):(([0-9]+,)*[0-9]+)$!",$from,$ok)) {
$pos=0;
$from=0;
}
else {
$pos=$ok[1];
$from=$ok[2];
}
$from=explode(",",$from);
if (!is_array($from) || !count($from) || count($from)==1 && $from[0]==0) {
$from=array(0);
if (md5("")===$text) exit("** DONE **<br><br>md5('')=$text<br><br>(Пустая строка!)");
}
$phplen=strlen($php);
mdgetword();
$poslen=strlen($word);
if ($pos<0 || $pos>=$poslen) $pos=0;
for ($i=0; $i<10; $i++) { echo "<!-- -->\r\n"; flush(); }
echo "<h3><a href='$self".
"?from=".urlencode("$pos:".implode(",",$from)).
"&text=".urlencode($text).
"&php=".urlencode($php).
"&fulltime=$fulltime&fullqty=$fullqty".
"'>Сохранить позицию и выйти</a></h3>";
flush();
echo "
MD5 HASH=$text<br>
CURRENT WORD=$word<br>
CURRENT DIGIT=$pos:".implode(",",$from)."<br>
RANGE=".htmlspecialchars($php)."<br>
Process Time=$fulltime sec (".(floor($fulltime/60/60))."h)<br>
Calculation (qty)={$fullqty}0000<br><br>";
flush();
$fullsum=pow($phplen,$poslen);
$time1=time();
$i=0;
while (1) {
$i++;
if ($i>50000) {
$time=time()-$time1;
if ($time>20) break;
$i=0;
$sum=0;
for ($j=1; $j<count($from); $j++) $sum+=$from[$j]*pow($phplen,$j);
printf("<nobr><b>%02.2f%%</b> ($word) %02dsec |</nobr> \r\n",
$sum*100/$fullsum,$time);
flush();
$fullqty+=5;
}
if (md5($word)===$text)
exit("<br><font color=red size=+1><b>** DONE **<br><br><tt>$word = $text</tt></b></font>
<script> window.focus(); window.focus(); setTimeout(\"alert('Done!')\",100);</script></body></html>");
$from[$pos]++;
if ($from[$pos]==$phplen) {
$flag=1;
$from[$pos]=0;
$word[$pos]=$php[0];
for ($pos=$pos+1; $pos<$poslen; $pos++) {
if ($from[$pos]+1<$phplen) {
$from[$pos]++;
$word[$pos]=$php[$from[$pos]];
$flag=0;
$pos=0;
break;
}
else {
$from[$pos]=0;
$word[$pos]=$php[0];
}
}
if ($flag) {
$from[]=0;
$poslen=count($from);
$word.=$php[0];
$pos=0;
$fullsum=pow($phplen,$poslen);
}
}
$word[$pos]=$php[$from[$pos]];
}
$fulltime+=time()-$time1;
if ($i>5000) $fullqty++;
$url="$self".
"?from=".urlencode("$pos:".implode(",",$from)).
"&text=".urlencode($text).
"&php=".urlencode($php).
"&fulltime=$fulltime&fullqty=$fullqty&go=1";
echo "<script>location.href=\"$url\"</script><a href='$url'>click here</a></body></html>";
}
?>