2012-12-14 2 views
6

Ich brauche einen String/Text in PHP XOR die base64 es kodieren, aber etwas schief geht:XOR-String in PHP mit Schlüssel

<?php 

$mustget = 'Kw4SCQ=='; 
$string = 'Josh'; 

echo("Must get: " . $mustget . "\n"); 
echo("We got: " . base64_encode(xor_this($string)) . "\n"); 

function xor_this($text) { 
    $key = 'frtkj'; 
    $i = 0; 
    $encrypted = ''; 
    foreach (str_split($text) as $char) { 
     $encrypted .= chr(ord($char)^ord($key{$i++ % strlen($key)})); 
    } 
    return $encrypted; 
} 

?> 

ich folgendes Ergebnis, aber ich brauche die „$ zu bekommen mustget "eins:

Must get: Kw4SCQ== 
We got: LB0HAw== 

Was mache ich falsch?

+1

Who "must" definiert? – zerkms

+0

Ich arbeite daran, eine Malware in der Wildnis zu entschlüsseln, die diese "Verschlüsselung" verwendet, um mit ihrem PHP-Admin-Panel zu kommunizieren: http://blog.spiderlabs.com/2012/12/the-dexter-malware-getting-your- hands-dirty.html – bsteo

+0

Frage ist, wie hast du das Ergebnis '$ mustget = 'Kw4SCQ ==''? – Touki

Antwort

10
$mustget = 'Kw4SCQ=='; 

$key = 'frtkj'; 
$key_length = strlen($key); 

$encoded_data = base64_decode($mustget); 

$result = ''; 

$length = strlen($encoded_data); 
for ($i = 0; $i < $length; $i++) { 
    $tmp = $encoded_data[$i]; 

    for ($j = 0; $j < $key_length; $j++) { 
     $tmp = chr(ord($tmp)^ord($key[$j])); 
    } 

    $result .= $tmp; 
} 

echo $result; // Josh 

http://ideone.com/NSIe7K

Ich bin sicher, dass Sie es rückgängig machen kann und eine Funktion erstellen, dass "Krypten", um die Daten ;-)

+0

Splendide Antwort, danke! Natürlich kann ich. – bsteo

+0

Modulo ist dein Freund! – Drasill