Aufgabe 3


PHP: Entschlüsselung

Code
Screenshot

Inhalt der Datei "upload.php" <?php // Simulierter "Input" $input_daten = 's3T8xm+iylKbXiuRtbwU4lsFiQj+Uk5Wshre/EQEDq6L0P3LZIcGPsntzZo83j/oDvJYI2t0OFG9IMkavPZLDQ=='; $input_iv = 'U4jNYy9YEi6uQ4x32llacA=='; // URL-Fehler korrigieren (Hierzu später mehr...) $input_daten = str_replace(' ', '+', $input_daten); $input_iv = str_replace(' ', '+', $input_iv); // Base64 umwandeln $daten = base64_decode($input_daten); $iv = base64_decode($input_iv); // Hierzu später mehr... if( strlen( $iv ) != 16 ) die("ERROR"); // Salt + PW $salt = "%!webtech."; // Salt Wert (Identisch zu JS) $pw = md5("123456789"); // PW (Identisch zu JS - Würde in einem Realsystem auf andere Weise bekannt sein, z.B. DB.) // Schlüssel $key = hex2bin( hash_pbkdf2("sha1", $pw, $salt, 500, 32) ); // Passwort-Wert erstellen // Zeilenende bereinigen + Hex-Steuerzeichen entfernen $sliced_text = trim ( rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $daten, MCRYPT_MODE_CBC, $iv ), "\t\0 " ) ); $sliced_text = rtrim( $sliced_text, "\x00..\x1F" ); // HEX-Werte in UTF8-Text umwandeln $sliced_text = hex_to_utf8_string( $sliced_text ); // Base64 Dekodierung $sliced_text = base64_decode( $sliced_text ); // Datei schreiben file_put_contents( './mein_uploadverzeichnis/output.txt', $sliced_text ); /** * Funktionen */ // Array sauber darstellen function print_arr( $arr ){ echo '<pre>'; print_r( $arr ); echo '</pre>'; } /* Hex Zeichenkette in einen String umwandeln */ function hex_to_utf8_string( $value ) { $value = urldecode($value); // Hexzeichen ersetzen (außer %25) $value = preg_replace("/%u([0-9a-f]{3,4})/i",chr(hexdec(1)), $value ); // Das Hex-Code %-Zeichen als "%" schreiben $value = str_replace('%25', '%', $value); // UTF-8 wiederherstellen $value = utf8_decode( $value ); // Rückgabe return $value; } ?>