Matthias Reitinger
ɐɯıǝɹ
Quiz #11
Codeknacker
Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.
Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist voraussichtlich Samstag, der 24. Oktober 2009 um ca. 23 Uhr.
Das Problem
Dagobert Duck hat in seinem Geldspeicher ein neues Sicherheitssystem installieren lassen. Der Tresorraum kann jetzt nur noch betreten werden, wenn man am Eingang die richtige Passphrase aufsagt. Da Dagobert nicht mehr der jüngste ist und befürchtet, er könnte die Passphrase vergessen, hat er sie sich auf einem Zettel notiert. Diese Schwachstelle hat die berüchtigte Panzerknacker-Bande erkannt und der reichsten Ente der Welt auch prompt den Zettel abgeluchst. Sie staunten allerdings nicht schlecht, als sie das Stück Papier in ihren Händen hielten:
![passphrase.png passphrase.png](https://www.tutorials.de/data/attachments/38/38478-c42f69182a31cb6eec2dd714dfe7991a.jpg)
Das ist doch nur irgendwelcher Kauderwelsch, aber bestimmt keine Passphrase! Hatte der alte Duck sie wieder mal auf den Leim gehen lassen?
Aber wer ein echer Panzerknacker ist, gibt so schnell nicht auf.
Stufe 1
Als Polizeibeamter verkleidet befragt einer der Panzerknacker Daniel Düsentrieb nach der Bedeutung des Buchstabensalats. Der gutgläubige Erfinder äußert die Vermutung, dass die Passphrase mit der Verschiebechiffre kodiert wurde.
Deine Aufgabe ist es nun, den verwendeten Schlüsselbuchstaben bzw. die unverschlüsselte Passphrase zu ermitteln. Zu diesem Zweck soll natürlich ein Programm geschrieben werden. Es erhält als Eingabe einen mit der Verschiebechiffre verschlüsselten Text, von dem bekannt ist, dass der zugehörige Klartext in deutscher Sprache verfasst ist. Das Programm soll daraus den (vermuteten) Klartext ermitteln und diesen ausgeben.
Beispiel
Eingabe:
Ausgabe: ist streng geheim! ![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Stufe 2
Als die Panzerknacker den Code endlich geknackt und die Passphrase vor sich haben, hat Dagobert den Diebstahl seines Zettels längst bemerkt. Er hat die Passphrase sofort ändern lassen und die Anstrengungen der Panzerknacker somit wertlos gemacht. Trotzdem schreibt sich Dagobert einen Zettel mit der neuen Passphrase. Diesmal fotografiert er ihn allerdings mit seiner Digitalkamera, verbrennt das Papier anschließend und legt die Bilddatei verschlüsselt auf seinem Rechner ab.
Aber auch die Panzerknacker sind mit ihren Methoden mit der Zeit gegangen. Über einen Phishing-Angriff besorgen sie sich die verschlüsselte Datei. Zunächst können sie mit ihr allerdings nichts anfangen, da sie keine Ahnung haben, mit welchem Verfahren die Datei verschlüsselt wurde. Sie ziehen daher Gundel Gaukeley zu Rate, der sie den Glückszehner versprechen, wenn sie ihnen helfen kann. Ein Blick in ihre Kristallkugel verrät, dass die Datei mit einer affinen Chiffre verschlüsselt wurde. Die Datei wurde dazu als lückenlose Folge von 32-Bit vorzeichenlosen Ganzzahlen interpretiert. Diese Ganzzahlen wurden der Reihe nach abgearbeitet. Dabei wurde jede gemäß der Vorschrift der affinen Chiffre mit einem geheimen Schlüssel (a, b) und dem Modul m = 2^32 kodiert und das Ergebnis in die verschlüsselte Datei geschrieben. (Dies entspricht dem ECB-Modus.) Den Schlüssel konnte Gundel allerdings in ihrer Kristallkugel nicht erkennen, da grade in dem Moment der Akku leer wurde und sie ihr Ladekabel am Vesuv vergessen hatte.
Die Aufgabe sollte jetzt klar sein: schreibe ein Programm, das den geheimen Schlüssel ermittelt und die Datei (im Anhang) dekodiert. Dazu ist etwas lineare Algebra (modulare Arithmetik) und Kombinationsgabe erforderlich. Ich versichere aber, dass die Aufgabe tatsächlich lösbar ist. Wenn wirklich keiner eine Idee für die Lösung hat, kann ich auch noch ein paar Tipps geben.
Und jetzt ran an die Tasten und viel Spaß beim Programmieren!
P.S.: Die beiden Stufen können natürlich unabhängig voneinander gelöst werden.
Codeknacker
Regeln
Die Regeln und der Ablauf der Quizrunde können in der entsprechenden Ankündigung eingesehen werden. Bitte lest sie euch aufmerksam durch, da sie alle wichtigen Informationen enthält. Lösungsansätze können und dürfen auch schon vorab untereinander ausgetauscht und diskutiert werden, allerdings nicht öffentlich im Forum. Verwendet stattdessen bitte private Nachrichten oder schaut im Chat vorbei.
Abgabe
Die Abgabe erfolgt wie immer im Abgabeforum. Abgabefrist ist voraussichtlich Samstag, der 24. Oktober 2009 um ca. 23 Uhr.
Das Problem
Dagobert Duck hat in seinem Geldspeicher ein neues Sicherheitssystem installieren lassen. Der Tresorraum kann jetzt nur noch betreten werden, wenn man am Eingang die richtige Passphrase aufsagt. Da Dagobert nicht mehr der jüngste ist und befürchtet, er könnte die Passphrase vergessen, hat er sie sich auf einem Zettel notiert. Diese Schwachstelle hat die berüchtigte Panzerknacker-Bande erkannt und der reichsten Ente der Welt auch prompt den Zettel abgeluchst. Sie staunten allerdings nicht schlecht, als sie das Stück Papier in ihren Händen hielten:
![passphrase.png passphrase.png](https://www.tutorials.de/data/attachments/38/38478-c42f69182a31cb6eec2dd714dfe7991a.jpg)
Das ist doch nur irgendwelcher Kauderwelsch, aber bestimmt keine Passphrase! Hatte der alte Duck sie wieder mal auf den Leim gehen lassen?
Aber wer ein echer Panzerknacker ist, gibt so schnell nicht auf.
Stufe 1
Als Polizeibeamter verkleidet befragt einer der Panzerknacker Daniel Düsentrieb nach der Bedeutung des Buchstabensalats. Der gutgläubige Erfinder äußert die Vermutung, dass die Passphrase mit der Verschiebechiffre kodiert wurde.
Deine Aufgabe ist es nun, den verwendeten Schlüsselbuchstaben bzw. die unverschlüsselte Passphrase zu ermitteln. Zu diesem Zweck soll natürlich ein Programm geschrieben werden. Es erhält als Eingabe einen mit der Verschiebechiffre verschlüsselten Text, von dem bekannt ist, dass der zugehörige Klartext in deutscher Sprache verfasst ist. Das Programm soll daraus den (vermuteten) Klartext ermitteln und diesen ausgeben.
Beispiel
Eingabe:
Code:
xfcu leu jzcsvi czvs zty jvyi,
bree'j rlty nfyc xvsirltyve,
yrvkk zty ufty vze xreqvj dvvi,
dzty urivze ql krltyve.
Stufe 2
Als die Panzerknacker den Code endlich geknackt und die Passphrase vor sich haben, hat Dagobert den Diebstahl seines Zettels längst bemerkt. Er hat die Passphrase sofort ändern lassen und die Anstrengungen der Panzerknacker somit wertlos gemacht. Trotzdem schreibt sich Dagobert einen Zettel mit der neuen Passphrase. Diesmal fotografiert er ihn allerdings mit seiner Digitalkamera, verbrennt das Papier anschließend und legt die Bilddatei verschlüsselt auf seinem Rechner ab.
Aber auch die Panzerknacker sind mit ihren Methoden mit der Zeit gegangen. Über einen Phishing-Angriff besorgen sie sich die verschlüsselte Datei. Zunächst können sie mit ihr allerdings nichts anfangen, da sie keine Ahnung haben, mit welchem Verfahren die Datei verschlüsselt wurde. Sie ziehen daher Gundel Gaukeley zu Rate, der sie den Glückszehner versprechen, wenn sie ihnen helfen kann. Ein Blick in ihre Kristallkugel verrät, dass die Datei mit einer affinen Chiffre verschlüsselt wurde. Die Datei wurde dazu als lückenlose Folge von 32-Bit vorzeichenlosen Ganzzahlen interpretiert. Diese Ganzzahlen wurden der Reihe nach abgearbeitet. Dabei wurde jede gemäß der Vorschrift der affinen Chiffre mit einem geheimen Schlüssel (a, b) und dem Modul m = 2^32 kodiert und das Ergebnis in die verschlüsselte Datei geschrieben. (Dies entspricht dem ECB-Modus.) Den Schlüssel konnte Gundel allerdings in ihrer Kristallkugel nicht erkennen, da grade in dem Moment der Akku leer wurde und sie ihr Ladekabel am Vesuv vergessen hatte.
Die Aufgabe sollte jetzt klar sein: schreibe ein Programm, das den geheimen Schlüssel ermittelt und die Datei (im Anhang) dekodiert. Dazu ist etwas lineare Algebra (modulare Arithmetik) und Kombinationsgabe erforderlich. Ich versichere aber, dass die Aufgabe tatsächlich lösbar ist. Wenn wirklich keiner eine Idee für die Lösung hat, kann ich auch noch ein paar Tipps geben.
Und jetzt ran an die Tasten und viel Spaß beim Programmieren!
P.S.: Die beiden Stufen können natürlich unabhängig voneinander gelöst werden.
Anhänge
Zuletzt bearbeitet: