Kleiner PHP-Quiz
Stefan G.
- php
Hi,
Ich habe zuletzt mal für "PHP-Anfänger" ein kleines Quiz gemacht, bei dem ein Lösungswort zu ermitteln war.
Leider ist es recht schnell ermittelt worden, weil ich es nur über base64 encodiert und gezippt hatte.
Ich würde sowas gerne nochmal machen, aber diesmal richtig schwer. Wenn also als Lösungswort z.B. "Prima" herauskommen sollte, welche PHP-Umwege fallen Euch dorthin ein?
Achja, das ganze soll in eine Variable $loesung geschrieben werden, das Script muß dem Schüler natürlich vorliegen, insofern wird er also früher oder später darauf kommen. Aber es soll halt schon knackig schwer werden.
Grüße
Sefan G.
echo $begrüßung;
Leider ist es recht schnell ermittelt worden, weil ich es nur über base64 encodiert und gezippt hatte.
Lege das Lösungswort md5()-kodiert ab. Vergleiche dann den md5()-Wert der Lösung mit dem des Lösungswortes.
MD5 berechnet einen Hash-Wert des gegebenen Strings. Das Verfahren ist nicht umkehrbar. Es kann aber vorkommen, dass zwei unterschiedliche Strings den gleichen Wert ergeben. Das zu berechnen ist aber praktisch z.Zt. noch so gut wie ausgeschlossen.
echo "$verabschiedung $name";
Und dann sollen die Schüler per BruteForce das Passwort knacken?
Und dann sollen die Schüler per BruteForce das Passwort knacken?
Haha :-)
Ja, genau sowas dachte ich auch.
Nein, Spaß beiseite, die Aufgabe soll vergleichbar mit einer Textaufgabe in Mathe sein. Also die Lösung wird quasi im Quelltext mitgeliefert werden müssen, nur halt eben in möglichst schwer zu "entknackendem" Code.
Grüße, Stefan
Hi,
Nein, Spaß beiseite, die Aufgabe soll vergleichbar mit einer Textaufgabe in Mathe sein. Also die Lösung wird quasi im Quelltext mitgeliefert werden müssen, nur halt eben in möglichst schwer zu "entknackendem" Code.
Einfach verschiedens kombinieren? str_rot13(), urlencode(), strtr(), etc. Vielleicht noch selbstmodifizierender Code mittels eval()! >:->
Gruß, Cybaer
echo $begrüßung;
Einfach verschiedens kombinieren? str_rot13(), urlencode(), strtr(), etc. Vielleicht noch selbstmodifizierender Code mittels eval()! >:->
So wie ich das verstanden habe soll das Script die Antwort mit der Lösung vergleichen.
Dazu müssen entweder
a) sowohl Lösung als auch Antwort mit dem selben Mechanismus bearbeitet werden, um dann die beiden Ergebnisse zu vergleichen, oder
b) es muss ein Dechiffierverfahren für die chiffrierte Lösung enthalten sein.
Im Falle b) ist es ein leichtes, den Mechanismus einfach separat auszuführen.
Im Falle a) hilft nur ein Brute-Force und das sollte möglichst lange dauern. Wenn also die Lösung aus einem in einem Wörterverzeichnis enthaltenen Wort besteht ist eine Wörterbuch-Attacke möglicherweise recht schnell erfolgreich. Also sollte die Lösung schon ein paar mehr Sonderzeichen oder aus mehrere Wörtern bestehen.
echo "$verabschiedung $name";
Hi,
So wie ich das verstanden habe soll das Script die Antwort mit der Lösung vergleichen.
So wie ich es verstanden habe, steht irgendwo im Script ein Wort z.B. $loesung="[rot13]geheim[/rot13]"; und die Aufgabe ist, dieses in Klartext zu entziffern. Wie entziffert man? Indem man das Script, das das Wort irgendwo im Klartext verwendet, analysiert. Also herausfindet, wie der Code in Klartext umwandelt, dies manuell nachvollzieht und somit etwas über PHP lernt.
Gruß, Cybaer
Hallo,
man könnte beispielsweise einen längeren Text nehmen und diesen durch komplexe RegularExpressions auf das Lösungswort "reduzieren". Das kann reichlich schwer werden...
Gruß,
Stefan
Das ganze noch durch verschiedene Funktionen und Klassen gejagt, könnte noch ein wenig mehr zum Denken anregen.
Das ganze noch durch verschiedene Funktionen und Klassen gejagt, könnte noch ein wenig mehr zum Denken anregen.
Klasse Anregung. Allerdings bin ich da wohl selber nicht fit genug für... :-(
Hat einer von Euch mal ein Beispiel dafür?
Wenn nicht, auch nicht so wild, aber für mich wird das eindeutig selber zu schwer in der Erstellung...
Ne Textaufgabe in Mathe zu erstellen ist irgendwie einfacher ;-)
Grüße,
Stefan
Hallo,
man könnte beispielsweise einen längeren Text nehmen und diesen durch komplexe RegularExpressions auf das Lösungswort "reduzieren". Das kann reichlich schwer werden...
Na könnten die Schüler dann nicht hingehen und sich einfach über echo "regulärer Ausdruck"; das Lösungswort ansehen? ;-)
Grüße, Stefan
Gruß,
Stefan
Hallo,
man könnte beispielsweise einen längeren Text nehmen und diesen durch komplexe RegularExpressions auf das Lösungswort "reduzieren". Das kann reichlich schwer werden...
Na könnten die Schüler dann nicht hingehen und sich einfach über echo "regulärer Ausdruck"; das Lösungswort ansehen? ;-)
...blöde Frage...das können sie ansich ja ohnehin... ;-)
Grüße, Stefan
Gruß,
Stefan