Zweck
Krypt wird aus verschiedenen Gründen programmiert. um möglichst allgemein zu bleiben, wird es unter die GPL gestellt, im Sourcecode verteilt, und nur auf Kommandozeilenebene betrieben. Durch die Benutzung von plattformunabhängigen Headern dürfte es auf allen anderen System auch laufen. Wer unbedingt eine Oberfläche will, dem empfehle ich es in Java oder Qt herzunehmen, da zweites auch grade auf die Windows Plattform portiert wurde. krypt soll dazu dienen dass Wissen der praktischen Kryptanalyse zu vertiefen, bzw. Kryptanalytikern ein Tool an die Hand geben, mit dem sie Chiffretexte bestimmter Verschlüsselungsarten leichter analysieren und gegebener Weise knacken zu können. Zu oft muss man für irgendeine Verschlüsselung ein Tool machen, obwohl es ganz leicht zu analysieren ist.
Funktionalität
Grösstmögliche Freiheit in der Benutzung
Einerseits soll krypt gut automatisierbar sein, andererseits, soll es auch Berichte und Ergebnisse für den Endandwender gut präsentieren. Daraus resultieren viele EingabeVorgaben und Ausgabeformate. Da die Zahl der Funktionen sehr stark ansteigen wird ( Meiner Schätzung nach könnten es sogar bis zu 40 einzelne Funktionen werden), würde ich vorschlagen jeder Funktion eine Nummer zuzuordnen ( Beispiel: "krypt Nummer param1 param2 param3 ... "). Eine Funktion kann dabei, nur die Anzahl der Bytes in einer Datei auf dem Bildschirm ausgeben, oder automatisch einen Chiffretext analysieren. Ich will also auch kleine Funktionen dem Anwender zur Verfügung stellen, damit er freie Wahl bei der Analyse von Chiffretexten hat. Nun will ich etwas zu den Formatierungsparametern erwähnen. Erstens soll man immer die Wahl haben ob ein Ergebnis auf dem Bildschirm ausgegeben wird oder als Datei. Für nähere Angaben ein Beispiel. Angenommen ich habe aus einer ChiffreDatei jedes 3. byte extrahiert. Wenn nun die Chiffredatei ein AscciText war, werden die Bytes meistens einen char-Wert repräsentieren. Nun will ich dem Anwender die Wahl lassen ob er die buchstaben in der Datei hat oder deren Ascci Werte. Zudem bei besserer Lesbarkeit sollte diese Ausgabe mit setwidth oder ähnlichem formatiert werden. Fuer eine bessere Automatisation ist ein fester Abstand von Byte zu byte in der neuen Datei besser. Aus diesem Grund soll auch das frei wählbar sein.
Nun eine kleine Auflistung für welche Verschlüsselungsarten ich
die automatisiertesten Knacksysteme implementieren will, deren einzelne Funktionen
aber auch wiederrum dem Anwender zur Verfügung stehen sollen.Die Verschlüsselungen selbst werden auch mit implementiert, versteht sich ;-), jedenfalls, soweit vorhanden und lizenzrechtlich erlaubt
Sonstige Funktionen sollen/sind auch enthalten sein:
-"Zufalls"generator der in Dateien bestimmbarer Grösse Zeichen schreibt, wobei man den Ascci-Range selbst bestimmen kann.
- Den Dump einer Datei auszugeben mit der Option ob binär, dezimal, oder sedezimal(hexa..) wird.
Eine Funktion, die für den Anwender einen kompletten Bericht über den Chiffretext schreibt gründlicher Analyse.
- Funktion, die einem eine Ascci-Tabelle ausgibt
- Funktion die alle Grossbuchstaben einer Datei in KleinBuchstaben umwandelt
- Häufigkeitsverteilung für Dateien
Allgemeine informationen über Dateien, und bestimmte Bytes in jeder Datei.
- SonderzeichenErsetzung: Alle ß und ü werden in Zeichen wie ss oder ue umgewandelt (Text aus der alten Datei -> korrigiert in neue Datei
- Funktion die die Anzahl der Bytes/Zeichen/Zahlen eventuell sogar bit ;) einer Datei zählt
- Der Berkely-Massey-Algorithmus.
- Funktion die ein bestimmtes Byte in einer Datei sucht und gibt seine Positionen in einer neuen Datei ausgibt
-Funktion die mir den Abstandstring aus einer Datei von jedem gefundenem char und seinem Determinierungschar ausgibt und alle Abstandsstrings in eine neue Datei schreibt
- Funktion die ein bestimmtes Byte in einer datei total löscht(alle vorkommende male) der Übergabe parameter muss ein String sein weil auch "Enter" gelöscht werden kann.
(alte Datei -> bearbeitete Version in neue Datei)
- Funktion die mir den IntegerAbstand zwischen zwei bestimmten Bytes liefert und alle in eine neue datei schreibt.
- Funktion die mir von einer bestimmten Position bis zu einer Bestimmten Position jedes n-te Byte oder jeden n+(1,2,3,..n) Bytestring aus einer Datei liesst und in eine neue schreibt.
- Suchfunktion die eine bestimmte Bytefolge in einer Datei sucht und deren Anfangspositionen falls vorhanden, in einer neuen Datei ausgibt
Was besonders wichtig ist, bei den Ver/Entschlüsselungen und das Brechen derselben, diese sollen auf allen möglichen Alphabeten basieren (ganzer Asciisatz, nur kleine Buchstaben, Buchstaben und Sonderzeichen, etc )
Generell gilt, wird eine Datei bearbeitet, kommt das Ergebnis in eine neue Datei, obwohl man soetwas auch als Option implementieren kann
Man sieht es sind zum Teil recht primitive Funktionen dabei, aber sie erleichtern einem unter Umständen die Arbeit und helfen Neueinsteigern bei der Analyse. Bei manchen Funktionen mag so mancher den praktischen Zweck bezweifeln, aber bei der Analyse von Chiffraten, ist mir solches schon untergekommen.
Was vielleicht auch hilfreich beziehungsweise nötig ist, sind mittels distr.c(von wobst) oder das im Programm enthaltene Äquivalent oder anderes StandardVerteilungen und Häufigkeitstabellen für Dateien
(siehe wpcrack) und Sprachen ( zb.Deutsch, Englisch, Buchstabenhäufigkeit und Bigramm auftreten)
zu verteilen /erstellen /suchen. Der User sollte in der Lage sein vorgegebene und andere (im richtigen
format vorhandene ) Muster/Tabellen -Dateien zu benutzen. Dies ist bei verschiedenen Automatismen zur
Brechung notwendig