MD5 Cracker einbinden

hoi,

ich möchte gerne einen MD5-Cracker auf meiner Webseite einbinden. Siehe Code unten. Allerdings frag ich mich noch warum der String "Der Hash ist sicher" immer angezeigt wird, obwohl der Funktion noch kein Wert übergeben wurde. Ich hoffe jemand weiß Rat. Danke.


PHP:
{php}function hashkiller_check_md5($md5)
{
	// Config:
	$timeout = 5; // Seconds
	
	//-----------------------------
	//   Do not edit below here!
	//-----------------------------
	
	
	// Reject if its no correct md5 hash
	if(!preg_match('/[A-Fa-f0-9]{32}$/',$md5)) return false;
	
	
	// Try to set timeout
	// May not work everywhere but lets try
	@ini_set('default_socket_timeout', $timeout);
	
	
	// Get result from hashkiller.com API
	$result = @file('http://hashkiller.com/api/api.php?md5='.$md5);
	
	
	// Handle timeouts and errors
	if (!$result) return false;
        
	$result = implode('', $result);
	
	
	// Found in database??
	if (strpos($result, '<found>false</found>')) return false;
	
	// Extract plain for the Hash
	$preg = preg_match('@<plain>(.+)</plain>@', $result, $match);
	if ($preg == 1)
	{
		// Plain correct?
		if (md5($match['1']) == $md5)
		{
			return $match['1'];
		}
		else
		{
			return false;
		}
		
	}
	else
	{
		return false;
	}
		
}{/php}

<table width="90%">
 <tr>
  <td>
    <p>Bitte geben sie ihren MD5-Hash hier ein.</p>
   <form action='http://kip.x8.to/joomla/index.php?option=com_content&view=category&layout=blog&id=36&Itemid=31' method='post' enctype='multipart/form-data'>
    <table cellpadding="5">
     <tr>
      <td><input name='md5' type='text' size='30' /></td>
      <td><input class="button" type='submit' value='Súchen' /></td>
     </tr>
    </table>         
   </form>
  </td>
 </tr>
</table>

{php}
$md5 = $_POST['md5'];
  if(hashkiller_check_md5($md5) == true)
    {
    $fuck = implode ('', file ('http://hashkiller.com/api/api.php?md5='.$md5));
    $shit = explode(' ', $fuck);
    echo '<br />';
    echo 'Der Hash ( '.$shit[5].') ist nicht sicher!<br />';
    echo 'Entschlüsselter Hash: '.$shit[4];
    }
 elseif(hashkiller_check_md5($md5) == false)
    {
    echo 'Der Hash ist sicher!';
    }
 else { echo '<br />';}

{/php}
<br />
<br />
<p><i>sponsered by http://hashkiller.com</i></p>)
 
Nach kurzem drüberschauen würde ich sagen, es liegt daran, dass du nicht überprüfst, ob die POST-Variable überhaupt gesetzt ist. Du fragst also auch mit einem undefinierten Wert hashkiller ab.
 
PHP:
if(isset($_POST['md5'])) {
    if(hashkiller_check_md5($_POST['md5']) == true) {
        $fuck = implode('', file('http://hashkiller.com/api/api.php?md5='.$_POST['md5']));
        $shit = explode(' ', $fuck);
        echo '<br />Der Hash ('.$shit[5].') ist nicht sicher!<br />Entschlüsselter Hash: '.$shit[4];
    } else {
        echo 'Der Hash ist sicher!';
    }
}

Du rufst die Funktion zweimal auf, vielleicht liegt es daran. Wenn es immernoch nicht funktioniert, ueberpruef mal den Rueckgabewert der Funktion.
 
Danke, hat bestens geklappt, die funktion isset macht das ganze Rund, thx.

Hab implode und explode auch rausgenommen:

PHP:
if(isset($_POST['md5'])) {
    if(hashkiller_check_md5($_POST['md5']) == true) {
        $fuck = file('http://hashkiller.com/api/api.php?md5='.$_POST['md5']);
        echo '<br />Der Hash ('.$fuck[5].') ist nicht sicher!<br />Entschlüsselter Hash: '.$fuck[4];
    } else {
        echo 'Der Hash ist sicher!';
    }
}
 
Hallo,
muss sagen, dass die Funk. (hashkiller_check_md5()) unschön implementiert ist, diese sollte schon zurückgeben, was für ein Klartext dazugehört.
Ansonsten muss man pro Hash 2 mal die Seite konsultieren, was absolut überflüssig ist.
 
Original von Elderan
muss sagen, dass die Funk. (hashkiller_check_md5()) unschön implementiert ist, diese sollte schon zurückgeben, was für ein Klartext dazugehört.
Ansonsten muss man pro Hash 2 mal die Seite konsultieren, was absolut überflüssig ist.

Die Funktion gibt den Plain zum Hash zurück und testet diesen sogar noch:

// Plain correct?
if (md5($match['1']) == $md5)
{
return $match['1'];
}

Hab mir in der Funktion Mühe gegeben alles sauber, ordentlich und verständlich zu schreiben. Einen Einbau des performanteren Curl habe ich lieber unterlassen.
 
Zurück
Oben