Rätsel für Hacker [gelöst]

Neue Frage »

matcrack Auf diesen Beitrag antworten »
Rätsel für Hacker [gelöst]
Hier mal ein kleines Rätsel für Hacker, Cracker, Cheater und sonstige dunklen Gestalten der Computerwelt. Keine Sorge, es ist legal. Augenzwinkern

Das folgende Rätsel stammt von mir selbst und es ist lösbar:

Ein Programm mit Konsoleneingabe soll geknackt werden, wo man ein geheimes Unterprogramm starten kann, wenn man in der Konsole folgenden Befehl eintippt und ENTER drückt:

geheimtor

Ein Gamer startet das Programm. Die Konsole öffnet sich, der Kursor blinkt und erwartet einen Befehl:

>_

Der Gamer gibt also den Befehl ein und folgende Meldung erscheint unten:

>geheimtor
FEHLER! Sperre aktiv für Geheimtor. ZUGANG VERWEIGERT!

Der Fall ist klar. Irgendeine Sperre verhindert, dass der Befehl "Geheimtor" das gesicherte Unterprogramm nicht starten will. Der Gamer versucht sich also zu helfen und das Ding zu knacken. Er geht nochmal in Gedanken die Liste aller Befehle durch, die die Konsole versteht. Diese sind:

start
Dieser Befehl startet das Hauptprogramm, ein Rollenspiel. Während des Spiels kann man die Konsole öffnen und wieder schliessen mit der Tastenkombi "Alt-K".

exit
Dieser Befehl schliesst die Konsole und verlässt das Hauptprogramm, geht komplett aus dem ganzen Programm raus.

geheimtor
Dieser Befehl startet das geheime Unterprogramm, ist aber gesichert!

get variable
Der "get" Befehl liefert den Wert x von 'Variable' und gibt ihn auf dem Bildschirm aus als "variable = x".

set variable x
Der "set" Befehl belegt die 'Variable' mit dem Wert x.

"Hmm", denkt sich der User und da kommt ihm DIE Idee!

So, wie knackt er das Geheimtor ?

Ich gebe zu, etwas knifflig für Leute, die sich mit sowas nicht auskennen. Aber es ist ganz leicht. Versucht es mal...

smile
Thomas Auf diesen Beitrag antworten »

Klingt interessant Augenzwinkern

Aber wo kann man das ausprobieren? Oder kann man alles nur vermuten.

Dann mach ich set variable ich = root und fertig Big Laugh

Gruß,
Thomas
matcrack Auf diesen Beitrag antworten »

Schreib einfach nur hin, was du in die Konsole eingeben würdest, um das Ding zu knacken, in gelisteter Form.

Also zum Beispiel:

>Befehl
>Befehl
>...

usw.

Mit dem "set" Befehl bist du schon auf dem richtigen Wege, aber beachte, dass der Befehl anders geht!

Wenn du "set" oder "get" benutzt, dann würde das so aussehen, wenn wir mal dein Beispiel nehmen:

set ich root

Das würde deine Variable mit dem Namen "ich" auf "root" setzen.

get ich

Das würde folgende Meldung ausgeben:

ich = root

(falls du vorher "ich" auf "root" gesetzt hast)

Nach diesem Prinzip funzen die "set" und "get" commands.
matcrack Auf diesen Beitrag antworten »

Noch ein Tipp:

x kann eine Zahl sein (integer oder real), ein String (z.B. Wort) oder auch ein booleanischer Wert (0 oder 1).
matcrack Auf diesen Beitrag antworten »

Und nochmal ein paar Sachen, um Verwirrung zu vermeiden:

Das Programm zu diesem Rätsel gibt es so nicht. Ihr könnt das also nicht irgendwo ausprobieren. Aber ich könnte vielleicht später mal ein kleines Konsolenprogramm schreiben, wo man solche Befehle eingeben und versuchen kann, den Befehl "geheimtor" dazu zu bringen, dass Unterprogramm zu starten.

Was ihr hier in diesem Beitrag erstmal tun könnt, um das Rätsel so in Gedanken zu knacken, ist mal zu überlegen, wie man mit Hilfe der gegebenen Befehle herausfinden könnte, wie das Geheimtor gesichert ist.

Schaut Euch dazu nochmal die Fehlermeldung oben an und mit ein wenig Phantasie kommt ihr drauf. Postet dann hier Eure Lösung und ich sag euch jeweils ob ihr das Geheimtor geknackt habt oder nicht.

Übrigens: Leute, die die "set" und "get" Befehle schon irgendwo mal gehört haben, werden sich sofort denken was zu tun ist.

Ein allerletzter Tipp:

Bei den "set" und "get" Befehlen sind die Werte der Variablen meistens Zahlen, entweder ganze (integer) oder reelle (real), oder booleanische, also 0 (steht für "falsch" oder "nein") oder 1 (steht für "wahr" oder "ja"). Strings, also sowas wie Wörter, Buchstaben oder Sätze, werden in diesem Rätsel nicht benutzt. Somit ist der Wert x einer Variable (z.B. a) immer eine Zahl hier, z.B. a = 5, den man mit "set a 5" setzen kann, wenn man meint, dass das einen weiterbringt. Ich hoffe, ihr habt soweit alles verstanden.

Happy Hacking.

P.S. Ich werde die Lösung irgendwann mal hier posten. Aber bis dahin seid ihr auf Euch allein gestellt. Ihr erfahrt so, wie es ist unter realistischen Bedingungen als Hacker etwas zu knacken, von dem man erstmal nichts Näheres weiß und erstmal rumprobieren muß mit Phantasie und Improvisation.
Thomas Auf diesen Beitrag antworten »

Ah, danke für die Erläuterungen Augenzwinkern

Wie wäre es mit set sperre 0 ?
Und dann einfach starten.

Oder man macht so:

get *
der * wird als Wildcard interpretiert, also werden alle aktiven Variablen zurückgegeben, ich such mir die sperre raus, setz sie false und starte dann smile

Gruß,
Thomas
 
 
Steve_FL Auf diesen Beitrag antworten »

so würd ich es auch machen...einfach die Sperre auf false setzen.

mfg
matcrack Auf diesen Beitrag antworten »

Zitat:
Ah, danke für die Erläuterungen Augenzwinkern


Keine Ursache. Man weiß ja nie mit wem man es zu tun hat. Aber du scheinst dich ja gut genug mit dem Thema auszukennen, dass ich sowas Einfaches nicht mehr erläutern brauch. Augenzwinkern

Zitat:
Wie wäre es mit set sperre 0 ?
Und dann einfach starten.


Zitat:
so würd ich es auch machen...einfach die Sperre auf false setzen.


Heh, ich lass' das mal so gelten. Richtige Antwort.

Aber ihr müßt beachten, dass 0 nicht immer auch "false" und 1 nicht immer "true" bedeuten muß. Es gibt Programmierer, die es auch umgekehrt machen.

Und es auch immer besser vorher mit "get sperre" zu überprüfen, auf welchem Wert Sperre am Anfang gesetzt ist. Denn es gibt auch solche gemeinen Programmierer wie mich, die hier zur Vewirrung nicht mit bool, sondern mit integer arbeiten würden. Dann müßtet ihr Sperre erstmal durch Herumprobieren auf irgendeinen bestimmten Wert zwischen z.B. 0 und 255 setzen, quasi als Passwort, um die Sperre zu deaktivieren. Und wenn ich noch fieser wäre, würde ich mit float, also Kommazahlen arbeiten. Nur ein Cracker wüßte, wie er das Herumprobieren dann umgehen könnte.

Aber hier in diesem Fall hab ich natürlich den einfachsten Fall genommen, weil ohne Programm, an dem ihr das ausprobieren hättet können, könnt ihr schlecht irgendwelche Zahlen hier raten. Ich könnt ja immer sagen, sie wären falsch.

Ok, also Glückwunsch. Ihr habt dieses Rätsel gelöst. War doch ein Kinderspiel, oder? Augenzwinkern
matcrack Auf diesen Beitrag antworten »

Und hier nochmal die komplette Lösung:

>get sperre
Sperre = 1
>set sperre 0
>geheimtor
Geheimtor offen. ZUGANG GESTATTET.

:]
matcrack Auf diesen Beitrag antworten »

Jetzt müßt ihr mir nur noch sagen, woher ich die Idee für die "set" und "get" Befehle her hab und ihr seid TOP!
Ben Sisko Auf diesen Beitrag antworten »

Woher weiss ich denn dass die Sperre "sperre" heisst?

Gruß vom Ben
matcrack Auf diesen Beitrag antworten »

Zitat:
Woher weiss ich denn dass die Sperre "sperre" heisst?


Weil a) Groß- und Kleinschreibung hier egal ist und b) weil Thomas und Steve sich die Fehlermeldung angeschaut haben, wie ich vorher als Tipp vorgeschlagen habe, und somit 1 und 1 kombiniert haben und vermuteten (oder sich gar sicher waren) daß die Sperre eine Variable ist und "sperre" heissen muß, weil ja in der Fehlermeldung von einer "aktiven Sperre" die Rede ist.

Denn die Zustände 0 und 1 kann man durch verschiedene Wörter interpretieren:

0 = nein, 1 = ja
0 = false (unwahr), 1 = true (wahr)
0 = inaktiv, 1 = aktiv
... usw.

Oder auch natürlich, wie ich schon sagte, umgekehrt. Darauf muß man achten.
Steve_FL Auf diesen Beitrag antworten »

und falls Speere ein boolscher Wert ist, gehts noch einfacher (kommt aber wahrscheinlich auf die Programmiersprache drauf an...)

set sperre = Not(Sperre)

mfg
matcrack Auf diesen Beitrag antworten »

Ben, du hast aber schon recht.

Wenn ich wirklich den Zugang ernsthaft sichern wollte, dann würde die Sperre auch nicht "sperre" heissen und in der Fehlermeldung würde nur "Zugang verweigert" stehen und die unbekannte Variable würde ein Passwort mit minimal 8 Zeichen Länge sein. Das Passwort selber wäre noch verschlüsselt mit unbekanntem Algorithmus, um dem Cracker das Spiel so richtig zu verderben und noch ein paar andere Gemeinheiten, die ich hier nicht verraten möchte.

Aber das sollte hier nur den einfachsten Fall demonstrieren.
Ben Sisko Auf diesen Beitrag antworten »

Hm, ich finde aus der inhaltlichen Aussage "Sperre aktiv" (die ja ein beliebiger string ist, oder?) kann man nicht schließen, dass die dafür zuständige "Sperr"variable auch sperre heisst.

Aber gut, wenn´s hier halt so ist... Augenzwinkern

Gruß vom Ben
matcrack Auf diesen Beitrag antworten »

Ben, das ist nur so wegen meinen Tipps hier. Hätt' ich nichts weiter dazu gesagt dann hätte wahrscheinlich so gut wie keiner das Ding geknackt.

Ich hätte einfach das Konsolenprogramm als Download angeboten und nur gesagt: "So, knackt mal.".

Aber ich bin ja lieb. Augenzwinkern

btw. da fällt mir ein, ich sollte dieses kleines konsolenprog wirklich mal schreiben, als download veröffentichen und irgendwo im internet einen wettbewerb starten. Wer es schafft das Geheimtor zu knacken, bekommt einen Preis. Natürlich würd ich dann auch das Ganze, wie oben beschrieben, extrem erschweren.
Thomas Auf diesen Beitrag antworten »

Ich würde dieses Konsolenprogramm mit freuden testhacken Augenzwinkern

Gruß,
Thomas
DeGT Auf diesen Beitrag antworten »

Wenn jemand mal sowas machen will:
http://www.crackmes.de

Das ganze ist dann auch ein _bisschen_ realistischer... :P
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »