Wie ich den ersten Platz ergattert habe! |
|
Die dargestellten Weisen zum Manipulieren von Spielständen ist nicht gern gesehen - aber nicht verboten! Dieses ist keine Anleitung zum Hacken von Servern oder zur großen Manipulation von Online-Games, sondern nur ein kleiner Spaß!. Ich distanziere mich von der Anwendung jenes Berichts, um Schaden zuzufügen. Dieser Artikel darf keinesfalls genutzt werden, um Missbrauch zu tätigen. |
||||||||||||||||||||||
|
Einfache Methode um zu gewinnen, ohne sich anstrengen zu müssen! (Na ja, etwas schon!) |
||||||||||||||||||||||
|
Es ist selten, dass ich mir Internetpräsenzen von aktuellen Kinofilmen angucke, aber da in dem Fall die Hauptfigur der Handlung von "Paulas Geheimnis" von der Patenschülerin meiner Schwester (Thelma) gespielt wird, war ich doch etwas neugierig. Und da auch noch Langeweile dazukam, beim Durchstöbern der Seite, habe ich das integrierte Spiel gestartet, wo es darum ging, die Reihenfolge von verschiedene Filmzitaten auswendig zu lernen. Hört sich leicht an, aber bei meinem Alter undenkbar möglich ... also versucht man es auf anderen Wegen, Platz 1 zu erreichen.
Und wie habe ich das gemacht?
Zuerst geht man auf die Homepage von dem Film "Paulas Geheimnis" http://paulas-geheimnis.de. Da die ganze Seite mit flash programmiert wurde, lädt man einfach die paula_main.swf Datei herunter und analysiert diese. Dann versucht man auf einfachster Weise die Datei im Hex-Editor zu öffnen und zu dekompilieren, sodass dessen Quellcode sichtbar wird! Dort findet man im Action-Pfad folgenden Quelltext:
(Auszüge)
Aha! Das Spiel befindet sich in dem Fall in einer Extra-Datei, die da heißt: spiel.swf, und im Ordner "spiel" liegt! Schauen wir uns das mal im Browser an: http://paulas-geheimnis.de/spiel
Mensch, die machen mir das aber ganz schön leicht! Wenn man auf die einzelnen Dateien klickt, sieht man, dass in "user.dat" alle bisherigen Spieler gespeichert wurden. In "highscore.dat" befinden sich die Namen mit der erreichten Punktzahl, doch leider kann man die nicht ohne weiteres bearbeiten, da dafür die Befugnisse nicht reichen werden. Aber man kann sehen, wann der letzte gespielt hat -- hier: am 17. September um 17:20 Uhr Aber es gibt eine PHP-Datei, die wohl die Aufgabe übernehmen wird, die Daten zu laden und zu speichern - jedenfalls hätte ich das so gemacht! Nun lade ich mir noch die Datei mit dem Spielgerüst herunter (spiel.swf) und analysiere sie wie bereits oben mit der ersten SWF-Datei:
Und was erkennt ein erfahrener Internetuser?
Hier werden alle Variablen, die wahrscheinlich nachher abgeschickt werden, gesetzt bzw. wieder auf den Null-Stand geführt! Nick, Mail, VName, NName, Strasse usw. werden leergelassen, da die Macher des Spiels sich auf ein Grundgerüst gestützt haben, dass vielfältig einsetzbar ist. Nur braucht man bei einem Online-Game wohl kaum die Anschrift mitsenden, also werden die Variablen geleert. Aber halt, es wird ein Hash (Sicherheits-Checksummen-Code) erstellt von der Punktzahl des Spielers. Logisch, sonst könnte jeder nachher einfach das Script "/spiel/highscore.php?punkte=999&nick=MeinName" starten, und man hat 999 Punkte erreicht! Aber wenn man die Funktion durchschaut, merkt man, dass nach folgendem System gearbeitet wird: >> Man nehme die Punktzahl und Multipliziere sie mit 16457! Von dem Ergebnis nimmt man jede Ziffer und rechnet sie wie folgt um:
Hätte man eine Punktzahl von 1, wäre das Ergebnis in Zahlen "16457" und nach der Tabelle der Hash "2t3op"! Nun haben wir schon den Hash von der erreichten Punktzahl. Super ....
Weiter unten im SWF-Quelltext findet man folgendes:
// Action script...
Als erfahrender Flash-User weiß man, dass loadVariables(), Variablen aus einer Datei lädt und zwar hier im POST-Modus. Die Datei highscore.php haben wir in dem Ordner spiele bereits entdeckt und vermutete, dass sie die Daten ein- und ausliest. Das stimmt auch, wenn man sieht, dass hier mit action=set wahrscheinlich übertragen wird, dass die angehängten Daten in die Datei "highscore.dat" gesichert werden sollen. Nun füllen wir die Daten einfach mit unseren auf oder übernehmen den vordefinierten Wert (s.o. newsletter=ja). Das erzeugte Script heißt nun: "http://paulas-geheimnis.de/spiel/highscore.php?action=set&username=NAME&mail=&score=PUNKTZAHL &hash=HASH&vname=&nname&strasse=&ort=&alter=&news=ja&newsletter=ja&zufall=ZUFALLSZAHL"
Die Zufallszahl dient nur dazu, dass der Browser den Vorgang nicht cached, und damit eine falsche Antwort vom Server kommt, oder womöglich falsche Daten gesendet werden. Da aber das Script mit POST-Methode gesendet werden soll, schlage ich vor, eine neue HTML-Datei zu kreieren, die Formulardaten an den Server sendet, mit der richtigen Methode.
Die HTML könnte so aussehen: <body> <form id="formular" method="POST" action="ERZEUGTES_SCRIPT [http://paulas-geheimnis.de/spiel/highscore.php?ac ...]"> <input type="submit" value="Mogeln" /> </form> </body>
Öffnet man die erstellte HTML-Datei und klickt auf den Button "Mogeln", werden die Daten an den Server übermittelt, der dann die falschen Daten in der Datei "highscore.dat" schreibt! Danach öffnet man einfach die highscore.dat und schaut nach, ob's geklappt hat! Bei mir ging alles gut, somit bin ich bisher auf Platz 1 mit immerhin 300 Punkten ....
Wehe jemand wendet den Artikel an, und überbietet mich! - Das gibt Ärger ....
Bjørn |