# Copyright (c) 2025 Martin Kayser (tebarius) # Licensed under the MIT License. See LICENSE file in the project root. cesar_all = ("### Cesar-Verschiebe-Chiffre\n" "Von der eingegebenen Zeichenkette werden, alle möglichen Verschiebungen gemäß der Cesarchiffre generiert " "und ausgegeben. Sonderzeichen und Zahlen werden unverändert wiedergegeben.") buchstabenwortwert = ("### Buchstabenwortwerte ermitteln\n" "Diese Funktion berechnet den Buchstabenwert der eingegeben Zeichenkette. (A=1 B=2 .... Ä=27 " "Ö=28 Ü=29 ß=30) Bei mehreren durch Leerzeichen getrennten Wörtern wird auch für jedes einzelne " "Wort der Wortwert errechnet. \n" "Desweiteren wird die Quersumme und die iterierte Quersumme des Gesamtbuchstabenwertes als auch " "für jedes Wort das Buchstabenwertprodukt und das Gesamtbuchstabenwertprodukt ermittelt.") buchstabenwert_zu_text = ("### Buchstabenwerte zu Text\n" " Die eingegebenen Buchstabenwerte werden in die entsprechenden Buchstaben umgewandelt." " (A=1 B=2 .... Ä=27 Ö=28 Ü=29 ß=30) Als Trennungszeichen zwischen den Zahlen sind folgende" " Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten" " möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen" " werden sonst als nicht erkannte Zeichen behandelt).") zeichenkette_reverse = ("### Zeichenkette rückwärts\n" "Diese Funktion gibt die eingegebene Zeichenkette von hinten nach vorn gelesen aus.") zeichenanzahl = ("### Zeichenzählen\n" "Es wird das Vorkommen jedes einzelnen Zeichens gezählt und ausgegeben. Achtung! Leerzeichen," " Tabulatorzeichen und Zeilenumbrüche werden nur vor dem letzten sichtbaren Zeichen gezählt!!!") quersummen = ("### Quersumme(n)\n" "Von den eingegebenen Zahlen werden die Quersummen und iterierten Quersummen errechnet und ausgegeben. " "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und " "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen " "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") einschluss_count = ("### Einschlüsse zählen\n" "Es werden die Einschlüsse in Buchstaben und Ziffern gezählt. Neben der Anzahl der Einschlüsse für " "jeden einzelnen Buchstaben, für jedes Wort und die gesammte Eingabe ermittelt. Da es sich bei der " "Zahl 4 je nach Schreibweise um eine Zahl mit oder ohne Einschluß handeln kann, werden beide " "Varianten berücksichtigt. \n" "!!! Hier ist Klein- und Großschreibung wichtig, denn z.B. b=1 aber B=2 !!!") morse_to_abc = ("### Morsecode zu Text\n" "Die Eingabe des Morsecodes hat wie folgt zu erfolgen: - für lang und . für kurz, zwischen den " "Buchstaben ein Leerzeichen und als Worttrennung ein / wobei davor und danach ein Leerzeichen steht. " "Für unbekannte Morsecodes erscheint in der Ausgabe ein #.") abc_to_morse = ("### Text zu Morsecode\n" "Eingabetext wird als Morsecode ausgegeben. Nicht kodierbare Zeichen erscheinen unverändert " "in der Ausgabe.") rot5 = ("### ROT 5\n" "ROT 5 bezeichnet eine Verschiebechiffrierung, bei welcher die Ziffern 0-9 um je 5 Stellen " "verschoben werden. Aus 0 wird 5, aus 1 wird 6, aus 7 wird 2,usw. Kodieren und Dekodieren " "geschieht hier mit ein und derselben Funktion, alle Zeichen die keine Ziffern sind werden " "unverändert wiedergegeben.") rot13 = ("### ROT 13\n" "ROT 13 bezeichnet eine Verschiebechiffrierung, bei welcher die 26 Buchstaben (A-Z) um genau " "13 Stellen verschoben werden. Da dies genau die Hälfte des Alphabets ist, wird z.B. aus einem " "A ein N und aus einem N ein A und somit wird über die selbe Funktion sowohl kodiert als auch " "dekodiert. Die Klein- und Großschreibung bleibt erhalten und alle Zeichen die keine Buchstaben " "sind werden unverändert wiedergegeben.") rot18 = ("### ROT 18\n" "ROT 18 ist eigentlich nix anderes als, daß hier ROT 5 mit ROT 13 kombiniert wird. Die Buchstaben " "A-Z werden um 13 Stellen verschoben und die Ziffern 0-9 um 5 Stellen. Alle sonstigen Zeichen " "bleiben unverändert und die Klein- oder Großschreibung bleibt auch erhalten, und auch hier " "kodiert/dekodiert ein und dieselbe Funktion.") rot47 = ("### ROT 47\n" "Bei ROT47 geschieht eigentlich nix anderes als bei ROT5 oder ROT13 nur das hier die druckbaren " "ASCII-Zeichen mit den Werten 33-126(dezimal) zur Auswahl stehen, also nahezu alle Zeichen die auf " "eine Standardtastatur aufgedruckt sind. Das Ergebnis ist aber deutlich unlesbarer als z.B. bei " "ROT13. Alle weiteren Zeichen (z.B. ÄÖÜß) werden unverändert wiedergegeben und auch hier " "kodiert/dekodiert ein und dieselbe Funktion.") ascii_to_dez = ("### Text zu Dezimalzahlen\n" "Der eingegebene Text wird in Dezimalzahlen umgewandelt.") dez_to_ascii = ("### Dezimalzahlen zu Text\n" "Die eingegebenen Dezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. " "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet " "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") ascii_to_hex = ("### Text zu Hexadezimalzahlen\n" "Der eingegebene Text wird in Hexadezimalzahlen umgewandelt.") hex_to_ascii = ("### Hexadezimalzahlen zu Text\n" "Die eingegebenen Hexadezimalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. " "Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und " "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den " "Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") octal_to_ascii = ("### Octalzahlen zu Text\n" "Die eingegebenen Octalzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. " "Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet " "werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") ascii_to_octal = ("### Text zu Octalzahlen\n" "Der eingegebene Text wird in Octalzahlen umgewandelt.") ascii_to_bin16 = ("### Text zu Binärzahlen (16 bit)\n" "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 16bit (16 Zeichen) " "umgewandelt.") ascii_to_bin8 = ("### Text zu Binärzahlen (8 bit)\n" "Der eingegebene Text wird in Binärzahlen mit einer festgelegten Breite von 8bit (8 Zeichen) " "umgewandelt.") bin_to_ascii = ("### Binärzahlen zu Text\n" "Die eingegebenen Binärzahlen werden in die entsprechenden UNICODE-Zeichen umgewandelt. Als " "Trennungszeichen zwischen den Zahlen sind folgende Zeichen erlaubt: | , _ . - / ; , und " "Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen zwischen den Zahlen " "verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte Zeichen behandelt).") zahlwortsuche_de = ("### Zahlwortsuche DE 0-12\n" "Diese Funktion versucht deutsche Zahlworte zwischen 0 und 12 in einem Text aufzuspüren. Da alle " "Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden welche sich " "z.B. über zwei Worte verteilen.") zahlwortsuche_en = ("### Zahlwortsuche EN 0-15\n" "Diese Funktion versucht englische Zahlworte zwischen 0 und 15 in einem Text aufzuspüren. " "Da alle Zeichen ignoriert werden, welche keine Buchstaben sind, werden auch Zahlwörter gefunden " "welche sich z.B. über zwei Worte verteilen.") kenny_kodieren = ("### Kennyspeak kodieren\n" "Hilfe sie haben Kenny getötet.. ach nee er kann ja noch seine unverständlichen m p f -Laute von " "sich geben und hier geht es darum normalen Text in genau diese Laute umzusetzen, wo jedem " "Buchstaben A-Z eine 3 Zeichen-Kombination zugeordnet ist die sich aus m,p,f zusammensetzt." "(a=mmm h=mfp x=fpf)") kenny_dekodieren = ("### Kennyspeak dekodieren\n" "Wie? Du verstehst Kenny's mpf-Gebrabbel nicht? Na gut da kann ich helfen!! Nicht kennifiziertes " "wird unverändert ausgegeben.") kenny_raten = ("### KENNYspeak raten\n" "Diese Funktion dient zum dekodieren von kennyfizierten Texten, bei denen die 3 Buchstaben mpf " "vertauscht oder durch andere Zeichen ersetzt wurden. Hierzu werden vor der Dekodierung die 3 " "häufigsten Zeichen im Text ermittelt und alle anderen Zeichen entfernt bevor die 6 möglichen " "Lösungen ausgegeben werden. (Falls zum kodieren die Zahlen 0,1 oder 2 verwendet wurden, werden " "sie durch Buchstaben a,b,c.. ersetzt)") primzahlalphabet_dekodieren = ("### Primzahlalphabet dekodieren\n" "Hier können Primzahlen kleiner als 1 Million in Buchstaben umgewandelt werden. Es " "wird dabei davon ausgegangen, daß den Primzahlen wiederholend die Buchstaben A-Z " "zugeordnet werden,2=A 3=B 5=C 7=D 11=E ... 97=Y 101=Z 103=A 107=B ... usw.") primzahlpruefen = ("### Primzahl prüfen\n" "Für eine eingegebene Zahl wird überprüft, ob es sich um eine Primzahl handelt. Ist die eingegebene " "Zahl eine Primzahl wird auch informiert, die wievielte Primzahl es ist. Zahlen über 1,299,709 (der " "100,000. Primzahl) werden abgelehnt.") nte_primzahl = ("### n.te Primzahl\n" "Du willst wissen wie z.B. die 1,000. Primzahl lautet, dann bist du hier genau richtig. Die Funktion " "liefert maximal die 100,000. Primzahl.") primfaktoren = ("### Primfaktorenzerlegung\n" "Für die eingegebene Zahl werden die Primfaktoren ermittelt und ausgegeben. Sollte die Zahl einen " "Primfaktoren haben, welcher größer als 100 Millionen ist, wird die Suche abgebrochen, da die Suche " "sonst zu lange dauert. Die Funktion lässt sich damit also auch, bei Zahlen kleiner als 200 Millionen, " "dazu benutzen um festzustellen, ob die eingegebene Zahl eine Primzahl ist.") dez_to_hex_oct_bin = ("### Dezimal zu HEX, Octal, Binär\n" "Die eingegebenen dezimalen Ganzzahlen werden in die entsprechenden hexadezimalen, octalen und " "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen " "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 " "Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als " "nicht erkannte Zeichen behandelt).") hex_to_dez_oct_bin = ("### Hexadezimal zu Dezimal, Octal, Binär\n" "Die eingegebenen hexadezimalen Zahlen werden in die entsprechenden dezimalen, octalen und " "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen " "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur " "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als " "nicht erkannte Zeichen behandelt).") oct_to_hex_dez_bin = ("### Octal zu HEX, Dezimal, Binär\n" "Die eingegebenen octalen Zahlen werden in die entsprechenden hexadezimalen, dezimalen und " "binären Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen " "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur " "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als " "nicht erkannte Zeichen behandelt).") bin_to_hex_dez_oct = ("### Binär zu HEX, Dezimal, Octal\n" "Die eingegebenen binären Zahlen werden in die entsprechenden hexadezimalen, dezimalen und " "octalen Zahlen umgerechnet. Als Trennungszeichen zwischen den Zahlen sind folgende Zeichen " "erlaubt: | , _ / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur " "1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als " "nicht erkannte Zeichen behandelt).") abc_to_tomtom = ("### Text zu Tomtom\n" "Beim Tomtom Code werden die einzelnen Buchstaben durch Kombinationen von / und \\ dargestellt. " "Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. Kodiert " "werden, können nur die Buchstaben A-Z.") tomtom_to_abc = ("### Tomtom zu Text\n" "Beim Tomtom Code werden die einzelnen Buchstaben durch Kombinationen von / und \\ dargestellt. " "Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. Kodiert " "werden, können nur die Buchstaben A-Z.") text_to_slashpipe = ("### Text zu Slash and Pipe\n" "Vergleichbar mit dem Tomtom-Code nur das hier für die Buchstabenkodierung auch | eingesetzt " "wird. Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei Leerzeichen. " "Kodiert werden, können nur die Buchstaben A-Z.") slashpipe_to_text = ("### Slash and Pipe zu Text\n" "Vergleichbar mit dem Tomtom-Code nur das hier für die Buchstabenkodierung auch der | mit " "eingesetzt wird. Zwischen den einzelnen Buchstaben steht ein Leerzeichen zwischen Worten zwei " "Leerzeichen. Dekodiert werden, können nur die Buchstaben A-Z.") periodensystem = ("### Periodensystem: Ordnungszahl<->Symbol\n" "Eingegebenen Ordnungszahlen 1-118 aus dem Periodensystem der Elemente werden in die ihnen " "zugehörigen Elementsymbole umgewandelt und anschließend als Text ausgegeben, außerdem erscheint " "noch eine Ausgabe bei welcher nur die Anfangsbuchstaben der Symbole ausgegeben werden. Werden in " "der Eingabe Symbole (z.B. N, He) erkannt werde diese zusammen mit ihren Ordnungszahlen ausgegeben. " "Als Trennungszeichen zwischen den Zahlen und/oder Symbolen sind folgende Zeichen erlaubt: " "| , _ . - / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten möglichst nur 1 Leerzeichen " "zwischen den Zahlen verwendet werden (überzählige Leerzeichen werden sonst als nicht erkannte " "Zeichen behandelt).") naknak_to_text = ("### NakNak to Text\n" "Nak-Nak / Entensprache / Duck Speak ist eine Spaßsprache, welche vom Owner der Website " "[https://schnatterente.net]" "(https://web.archive.org/web/20230807065421/https://www.schnatterente.net/) entwickelt wurde. " "Diese Funktion übersetzt das Geschnatter in verständliche Buchstaben/Zeichen. !!Bitte unbedingt " "die Groß- und Kleinschreibung beibehalten!! Wer diesen Quatsch unbedingt umgekehrt übersetzten " "will, wird wohl etwas suchen müssen, da der Original-Übersetzer, der unter " "http://uebersetzer.schnatterente.net erreichbar war, nicht mehr online ist und ich ganz bestimmt " "keinen hier integrieren werde.") navajo_to_text = ("### Navajo-ABC to Text\n" "Die Sprache der Navajo-Indianer wurde im zweiten Weltkrieg für den verschlüßelten Funkverkehr " "eingesetzt. Vorteile waren, daß nahezu niemand außer Navajo-Volk die Sprache verstand und es keine " "schriftlichen Aufzeichnungen über die Sprache gab. Das Alphabet und die Codewörter wurden dabei von " "den Codesprechern (natürlich Navajo's) auswendig gelernt. Die Dekodierfunktion hier übersetzt das " "Codealphabet (A-Z), bei welchem es auch so ist, daß unterschiedliche Worte für den selben " "Buchstaben stehen, in normalen Text. Leider existieren leicht unterschiedliche Alphabete was die " "Wörter bzw. deren Schreibweise angeht im Netz, mit welchen codiert wird, weshalb ich hier nur die " "Dekodierung anbiete. weitere Codewörter und Erklärungen gibt es z.B. hier: " "https://ww2db.com/other.php?other_id=29 oder hier: " "http://math.ucsd.edu/~crypto/Projects/RobertoSandoval/NavajoWindtalkers.pdf") pi_suche = ("### PI Nachkommastellensuche\n" "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben " "und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von PI " "(3.141592653589793238462643...) zu ermitteln. Aus Performance- und Speicherplatzgründen ist die Suche " "auf die ersten 10 Millionen Nachkommastellen beschränkt.") euler_suche = ("### Eulersche Zahl - Nachkommastellensuche\n" "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle auszugeben " "und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von e " "(2.71828182845904523.....) zu ermitteln. Aus Performance- und Speicherplatzgründen " "ist die Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.") goldener_schnitt_suche = ("### phi(Goldener Schnitt) Nachkommastellensuche\n" "Für die eingegebene Zahl/Zahlenreihe X wird versucht die entsprechende X. Nachkommastelle " "auszugeben und das erst Vorkommen der Zahlenreihe X innerhalb der Nachkommastellen von " "phi (1.618033988749894848204586...) zu ermitteln. Aus Performance- und Speicherplatzgründen " "ist die Suche auf die ersten 10 Millionen Nachkommastellen beschränkt.") anagramm_suche_de = ("### Anagrammsuche mit Wörterbuch DE\n" "Diese Funktion benutzt eine deutsche Wörterbuchdatei vom Project " "https://sourceforge.net/projects/germandict um zu überprüfen ob sich unter Verwendung __aller__ " "eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen.") anagramm_suche_en = ("### Anagrammsuche mit Wörterbuch EN\n" "Diese Funktion benutzt die englische Wörterliste en_US-large.txt vom Project " "https://sourceforge.net/projects/wordlist um zu überprüfen ob sich unter Verwendung aller " "eingegebenen Buchstaben Wörter bilden lassen, welche im Wörterbuch vorkommen. Dieses Wörterbuch " "kennt übrigens auch viele Wörter mit Apostroph wie z.B. say's.") wortsuche_de = ("### Wortsuche mit Wörterbuch DE\n" "Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. " "nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. " "Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe " "wird dabei ignoriert. \n" "Beispiel: \n" "Ge*ca**i** -> Geocaching \n" "ge*ca**i** -> Geocaching \n" "T*****dose -> Tupperdose, Tabaksdose \n" "Diese Funktion nutzt dafür die deutsche Wörterbuchdatei vom Project " "https://sourceforge.net/projects/germandict") wortsuche_en = ("### Wortsuche mit Wörterbuch EN\n" "Wer kennt es nicht? Man sucht ein Wort mit einer bestimmten Anzahl an Buchstaben und weiß aber z.B. " "nur den Anfangsbuchstaben und die letzten 3 Buchstaben. Hierbei soll diese Funktion helfen. " "Unbekannte Buchstaben werden dabei einfach durch * ersetzt. Klein-/Großschreibung in der Eingabe " "wird dabei ignoriert. \n" "Beispiel: \n" "Ge*ca**i** -> geocaching \n" "ge*ca**i** -> geocaching \n" "say*s -> say's (Die Wortliste kennt viele Wörter mit Apostroph) \n" "coordinat** -> coordinator, coordinates, coordinated \n" "Diese Funktion nutz dafür die englische Wörterliste en_US-large.txt vom Project " "https://sourceforge.net/projects/wordlist") remorse_de = ("### RE-Morse DE\n" "Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort " "getrennt wird, aber ansonsten einfach mal die Leerzeichen weggelassen werden. Bei genau solchen " "fiesen Gemeinheiten hilft diese Funktion. Diese Funktion benutzt die deutsche Wörterbuchdatei vom " "Project https://sourceforge.net/projects/germandict \n" "Da eine Abfrage relativ lange dauert gibt es die Möglichkeit ein ca. 100 MB großes remorse-de.dic " "generieren zu lassen, welches ab der nächsten Abfrage dann genutzt wird und wodurch dann nur noch " "ca. 20% der Zeit pro Abfrage benötigt wird. Um die Erstellung zu starten muß das Wort GENERATE " "(Großschreibung beachten!) ins Eingabefeld eingetragen werden und der Funktionsknopf betätigt " "werden.") remorse_en = ("### RE-Morse EN\n" "Es gibt ja so Leute, die finden es lustig einen Morsecode so aufzuschreiben, daß zwar Wort für Wort " "getrennt wird, aber ansonsten einfach mal die Leerzeichen weggelassen werden. Bei genau solchen " "fiesen Gemeinheiten hilft diese Funktion. Mit Hilfe der englischen Wörterliste en_US-large.txt vom " "Project https://sourceforge.net/projects/wordlist wird überprüft, für welches Wort der eingegebene " "Morsecode stehen könnte.") t9_de = ("### T9-DE\n" "Diese Funktion benutzt die deutsche Wörterbuchdatei german.dic vom Project " "https://sourceforge.net/projects/germandict ermittelt diese Funktion alle im Wörterbuch " "enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt " "diese aus. \n" "Bsp. 56673462836 liefert das Wort Koordinaten \n" "Da eine Abfrage relativ lange dauert gibt es die Möglichkeit ein spezielles t9-Wörterbuch " "generieren zu lassen, welches ab der nächsten Abfrage dann genutzt wird und wodurch dann nur noch ca. " "15% der Zeit pro Abfrage benötigt wird. Um die Erstellung des t9-de.dic zu starten muß das Wort " "GENERATE (Großschreibung beachten!) ins Eingabefeld eingetragen werden und der Funktionsknopf " "betätigt werden.") t9_en = ("### T9-EN\n" "Mit Hilfe der englischen Wörterliste en_US-large.txt vom Project " "https://sourceforge.net/projects/wordlist ermittelt diese Funktion alle im Wörterbuch " "enthaltenen Wörter die zu der eingegebenen T9-kodierten Ziffernfolge passen und gibt diese aus. \n" "Bsp. 26673462837 liefert das Wort coordinates") vigenere = ("### Vigenere-Chiffre\n" "Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Vigenere-Chiffre baut auf dem Prinzip " "der Cesar-Chiffre auf, wobei hier die Verschiebung jedes einzelnen Buchstaben durch die " "Buchstabenwerte eines Schlüsselwortes definiert werden. Da der zu verschlüsselnde Text im " "allgemeinen länger als das Schlüsselwort ist, wird das Schlüsselwort immer wieder wiederholt. " "Ist der Schlüssel mindestens genauso lang wie der Klartext entspricht dies dann dem " "One-Time-Pad-Chiffre. Der eingegebene Text wird hier mit dem eingegebenen Schlüsselwort kodiert und " "dekodiert ausgegeben und zwar sowohl in der Variante, daß Sonderzeichen Schlüsselbuchstaben " "verbrauchen als auch nicht.") wolseley = ("### Wolseley-Chiffre\n" "Die Eingabe eines Schlüsselwortes ist hier erforderlich!!! Die Woseley-Chiffre arbeitet mit einem " "Schlüsselwort über welches dann ein Codealphabet/Codequadrat gebildet wird mit welchem dann sowohl " "kodiert als auch dekodiert wird. Angefangen wird dabei mit dem jeweils ersten Vorkommen eines " "Buchstaben im Schlüsselwort und danach folgen die restlichen Buchstaben des Alphabets die nicht im " "Schlüsselwort vorkommen. Da hier nur 25 Zeichen zur Verfügung stehen wird das J mit dem I " "zusammengefasst und als I behandelt und dargestellt. Sonstige Zeichen die nicht im Codealphabet " "vorhanden sind werden unverändert ausgegeben. \n \n" "Codealpahbet mit Schlüsselwort: Teebaum \n" "| | | | | | | | | | | | | | | | | | | | | | | | | |\n" "|-|-|-|-|-|-|-|-|-|-|-|---|-|---|-|-|-|-|-|-|-|-|-|-|-|\n" "|T|E|B|A|U|M|C|D|F|G|H|I/J|K|L |N|O|P|Q|R|S|V|W|X|Y|Z|\n" "|Z|Y|X|W|V|S|R|Q|P|O|N|L |K|I/J|H|G|F|D|C|M|U|A|B|E|T|\n \n" "Bei der Chiffrierung/Dechiffrierung wird im Text nun der erste Buchstabe mit dem letzten getauscht, " "der 2. mit dem Vorletzten, usw. also aus T wird Z und umgekehrt,E<->Y, B<->X, A<->W usw.. nur ein " "K bleibt ein K") atbash = ("### Atbash-Chiffre\n" "Atbash ist eine einfache Ersetzungschiffre die für das hebräische Alphabet entwickelt wurde, welche " "später auf das lateinische Alphabet übertragen wurde. Dabei wird dem normalen Alphabet ein " "rückwärts gelesenes Alphabet gegenüber gestellt. A wird zu Z, B zu Y usw. Kodierung und Dekodierung " "erfolgt über die selbe Funktion. \n \n" "Codealpahbet: \n" "| | | | | | | | | | | | | | | | | | | | | | | | | | |\n" "|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|\n" "|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|\n" "|Z|Y|X|W|V|U|T|S|R|Q|P|O|N|M|L|K|J|I|H|G|F|E|D|C|B|A|") monoalphasubstitution = ("### Monoalphabetische Substitutions-Chiffre\n" "Bei der monoalphabetischen Substitution wird jedem Buchstaben des Alphabets der Buchstabe " "eines Schlüsselalphabets zugeordnet: \n" "|Bsp.| |\n" "|----|-|\n" "|Klartextalphabet|ABCDEFGHIJKLMNOPQRSTUVWXYZ|\n" "|Schlüsselalphabet|DSBJFALKNVPOQXYWCEGHIMRTUZ|\n \n" "Spezialformen dieser Chiffre sind Atbash, Cesar, Rot13. Die Funktion hier arbeitet so, dass " "entweder ein komplettes Schlüsselalphabet oder ein Schlüsselwort verwendet werden kann. Bei " "Verwendung eines Schlüsselwortes, wird der Rest des Schlüsselalphabets automatisch " "aufgefüllt. \n" "Aus dem Schlüsselwort GutenMorgenLiebeSonne wird z. B. dann das Schlüsselalphabet: " "GUTENMORLIBSACDFHJKPQVWXYZ \n" "| | |\n" "|-|-|\n" "|Schlüsselwort|GutenMorgenLiebeSonne|\n" "|Schlüsselalphabet|GUTENMORLIBSACDFHJKPQVWXYZ|") autokey = ("### Autokey-Chiffre\n" "Die Autokey-Chiffre arbeitet nach dem selben Prinzip wie Vignere-Chiffre mit dem Unterschied, dass " "hier am Ende des Schlüsselwortes nicht wieder und wieder das Schlüsselwort angehängt wird, sondern " "der Klartext an das Schlüsselwort angehangen wird. Der eingegebene Text wird hier mit dem " "eingegebenen Schlüsselwort kodiert und dekodiert ausgegeben.") polybios = ('Die 5x5 Polybios-Chiffre kodiert Buchstaben zu zweistelligen Zahlen dazu wird das Schlüsselalphabet ' 'in ein 5x5-Quadrat eingetragen. Die Buchstaben werden dann sozusagen zu ihren entsprechenden ' '"Koordinaten" kodiert. Im unten gezeigten Quadrat wird so aus A 11, aus B 12, aus Q 41, usw. Da in ' 'ein 5x5 Quadrat nur 25 Buchstaben passen wird typischer Weise J und I zusammengefasst, (alternativ ' 'auch U und V), sollen auch Ziffern kodiert werden wird mit einem 6x6-Quadrat gearbeitet, bei ' 'welchem dann für das komplette Alphabet und die Ziffern 0-9 Platz ist. \n' '| |1|2|3|4|5|\n' '|-|-|-|-|-|-|\n' '|1|A|B|C|D|E|\n' '|2|F|G|H|I|K|\n' '|3|L|M|N|O|P|\n' '|4|Q|R|S|T|U|\n' '|5|V|W|X|Y|Z|\n\n' 'Kommt für die Chiffre ein Schlüsselwort zum Einsatz wird das Code-Quadrat so abgeändert das die ' 'Buchstaben des Schlüsselwortes entsprechend ihres ersten Vorkommens Zeile für Zeile in das ' 'Codequadrat eingetragen werden, der Rest wird mit den verbliebenen Buchstaben aufgefüllt. Zur ' 'Information wird für jede Polybios-Variante auch noch einmal der verwendete Klartext und das ' 'verwendete Passwort ausgegeben.') polybios_encode = f"### Polybios-Chiffre kodieren\n{polybios}" polybios_decode = f"### Polybios-Chiffre dekodieren\n{polybios}""" klopfcode = ('Der Klopfcode ist im Prinzip eine Polybios Chiffre mit einem festen ' 'Schlüsselquadrat bei welchem nicht I und J sondern C und K zusammengefasst werden. \n' 'siehe hier: \n' '| |1|2|3|4|5|\n' '|-|-|-|-|-|-|\n' '|1|A|B|C|D|E|\n' '|2|F|G|H|I|J|\n' '|3|L|M|N|O|P|\n' '|4|Q|R|S|T|U|\n' '|5|V|W|X|Y|Z|') klopfcode_encode = f"### Klopfcode kodieren\n{klopfcode}" klopfcode_decode = f"### Klopfcode dekodieren\n{klopfcode}" maptiles_kachelkoordinaten = ('### Maptiles / Kachelkoordinaten\n' 'Bei vielen Online-Kartendiensten wie Openstreetmap oder Google-Maps erfolgt die ' 'Kartendarstellung über vorberechnete "Kachel"-Grafikdateien, welche ein ' 'Adressierungssystem benötigen damit je nach Koordinate und Zoomstufe auch der richtige ' 'Kartenausschnitt dargestellt wird und klar ist welche Kacheln daneben darzustellen ' 'sind. \n' 'Solche Kacheln sind typischer Weise PNG-Grafiken mit 256x256 oder 512x512 Pixeln und je ' 'nach Zoomstufe ist eine unterschiedliche Anzahl solcher Kacheln/Tiles notwendig um die ' 'ganze Welt abzubilden. Da je Zoomstufe sich die Anzahl der benötigten Kacheln ' 'vervierfacht und damit auch die Datenmenge werden in der Praxis keine Zoomlevel über ' '20 verwendet. \n' 'Um die einzelnen Kacheln beim tilemap-Server abzufragen braucht man die Zoomstufe, ' 'einen X- und einen Y-Wert wobei dies alles ganzzahlige Werte sind. Abgerufen vom ' 'Tilemap-Server werden die Kacheln dann nach dem Muster: ' '`http://servername/Zoom/X/Y.png` Den Fernsehturm mit Zoomstufe 18 findet man z.B. bei ' 'Openstreetmap hier: https://tile.openstreetmap.org/18/140836/85970.png \n' 'Die Funktion arbeitet hier auf die Art und Weise, dass man 2 durch ein Freizeichen ' 'getrennte Zahlen eingibt. Handelt es sich bei den angegebenen Zahlen um "Kommazahlen" ' 'welche allerdings mit Punkt anzugeben sind (Bsp: 52.520803 13.4088653 ) geht die ' 'Funktion davon aus, daß es sich um Koordinaten in Dezimalgrad handelt und sofern es ' 'gültige Koordinaten sind erfolgt eine Ausgabe der X und Y Werte für die Zoomstufen und ' '1-25. (Positive Zahlen stehen für Nord und Ost, negative für Süd und West) Handelt es ' 'sich bei den beiden Zahlen um Ganzzahlen wird davon ausgegangen, dass es sich um X und ' 'Y Werte handelt und es werden für alle Zoomstufen von 1-25 Koordinaten in ' 'Dezimalminuten und Dezimalgrad ausgegeben, sofern dies sinnvolle Koordinaten ergibt ' 'und sie werden auf einer Karte angezeigt.') quadtree_koordinaten = ("### Quadtree-/Quadkeykoordinaten\n" "Diese Koordinatenkodierung spielt in der alltäglichen Praxis eigentlich kaum noch ein Rolle, " "außer scheinbar bei bing-maps und beim Geocaching. Sie dient ähnlich wie das Maptiles-System " "dazu Grafikdateien für unterschiedliche Zoomstufen einer Karte zu adressieren. Die Länge der " "Zahl entspricht hier zugleich auch dem Detailgrad bzw. der Zoomstufe. Es finden nur die " "Zahlen 0,1,2 und 3 Verwendung, wobei die 0 den Nordwestlichen Quadranten, 1 den " "Nordöstlichen, 2 SW und 3 SO. \nEin kleines Beispiel: 230 würde bedeuten es geht im " "südwestlichen Quadranten (2) um den südöstlichen Quadranten(3) und in diesem wiederum um den " "nordwestlichen Quadranten. Je länger also diese Zahlenreihe aus 0,1,2 und 3 wird um so " "genauer wird ein bestimmter Ort angegeben. \nWeitere Infos gibt es unter folgendem Link zu " "finden: https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system \n" "Die Funktion ermittelt aus einer Quadtreekoordinate die Maptileskoordinaten und die " "WGS84-Koordinaten und zeigt diese auf einer Karte an.") chronogramm = ('### Chronogramm/ römische Ziffern zählen\n' 'Ein Chronogramm (oder Eteostichon) ist ein Satzteil, ein Satz, ein Sinnspruch oder eine Inschrift, ' 'meist ein Vers in lateinischer Sprache, in dem diejenigen Buchstaben, die auch als römische ' 'Zahlzeichen gelesen werden können (I, V, X, L, C, D, M), in ihrer Summe die Jahreszahl des ' 'Ereignisses angeben, auf das sich der Text bezieht. Entscheidend ist allein die Summe der ' 'Zahlenwertbuchstaben, die sonst bei römischen Zahlen übliche Subtraktion kleinerer Zahlenwerte von ' 'folgenden größeren erfolgt nicht. Die Zahlbuchstaben sind meist hervorgehoben, etwa durch ' 'Großschreibung oder Verdickung der Buchstaben bzw. durch farbliche Abhebung mittels Rötung oder ' 'Vergoldung. \n' 'Eine Besonderheit bilden Krypto(chrono)gramme, bei denen die Zahlbuchstaben nicht gekennzeichnet ' 'sind und "verborgen" bleiben. Bei der einfachen Analyse werden hier die Buchstaben I(1), V(5), ' 'X(10), L(50), C(100), D(500), M(1000) berücksichtigt und addiert, bei der erweiterten Analyse wird ' 'zunächst einmal berücksichtigt, daß im Lateinischen Alphabet der Buchstabe J als I und der ' 'Buchstabe U als V geschrieben wird. Außerdem erfolgt wird in der extremen Variante auch noch ' 'W=10(V+V) und Y=2(I+I) berücksichtigt. \n' 'Des Weiteren wird auch für jeden relevanten Buchstaben einzeln noch einmal die Anzahl und Summe' ' angezeigt. Eine Unterscheidung zwischen Klein- und Großschreibung findet nicht statt.') zahlen_roemisch_arabisch_umwandeln = ("### Römische in Arabische Zahlen umwandeln und umgekehrt\n" "Es werden römische Zahlen in arabische umgewandelt und umgekehrt, die Funktion " "arbeitet dabei bei der Umwandlung von arabisch zu römisch mit Werten bis " "maximal 500000. Es werden folgende Zeichen verwendet: I=1, V=5, X=10, L=50, " "C=100, D=500, M=1000, \u2181=5000, \u2182=10000, \u2187=50000, \u2188=100000 \n" "Etwas Vorsicht sollte bei einer Umwandlung von römischen in arabische Zahlen " "geboten sein, wenn mit untypischen Schreibweisen gearbeitet wird bei welchen " "mehr als ein Zeichen von dem nachfolgenden Zeichen abgezogen werden soll. Die " "eigentlich inkorrekte Schreibweise IIX für die Zahl 8 wird hier die Zahl 10 als " "Ergebnis haben (+1-1+10), dafür wird aber allerdings die ebenfalls falsche " "Schreibweise IM genauso als 999 wie die korrekte Schreibweise CMXCIX erkannt.") url_decode = ("### URL-decode\n" "Nachdem Groundspeak nun inzwischen sämtliche Bilddateien über einen Proxy umleitet bevor sie im " "Listing erscheinen wird es manchmal schwer die ursprüngliche URL und/oder den Dateinamen des " "Bildes noch lesen zu können. Die URL hat dort nun jeweils folgendes Muster: " "`https://imgproxy.geocaching.com/......?url=.....` wobei nach dem `?url=` dann die ursprüngliche " "Bild-URL folgt, allerdings wird dabei dann aus `http://` folgendes `http%3A%2F%2F` und um genau " "dieses wieder normal lesbar zu machen dient diese Funktion") reversewig = ('### Reverse Wherigo zu Koordinaten\n' 'Mit dem Reverse Wherigo hat -Waldmeister- eigentlich eine coole Sache erfunden. Man hat anfangs ' 'keine Koordinaten sondern nur 3 Zahlen, welche man nach Start des Wherigo-Cartridges eingibt und ' 'dann erfährt man wie weit der Cache entfernt ist. Nun kann man immer wieder von unterschiedlichen ' 'Positionen aus diese Entfernungsfragen durchführen und sich damit dem Cache nähern. Je weniger ' 'Abfragen man braucht umso besser. Leider gibt es inzwischen genügend Tools die genau wie diese ' 'Funktion hier aus den 3 Zahlen direkt die Finalkoordinaten ermitteln können. \n' ' Leider??? Ja leider denn das führt auch dazu, das es inzwischen so extrem viele dieser ' 'Reverse-Wherigos gibt wo sich die Owner anscheinend auch denken "Die spielt doch sowieso keiner ' 'mehr normal..." anders kann ich mir ganze Trails mit Reverse-Wherigos nicht erklären. Um die ' 'Funktion zu nutzen braucht man nur die 3 Zahlen getrennt durch ein entsprechendes Trennzeichen: ' '| , _ / ; , oder Leerzeichen eingeben und auf den Knopp klicken und bekommt Koordinaten und eine ' 'ungefähre Vorschau auf einer Karte.') base64_ascii = ('### Base64 <-> ASCII\n' 'Base64 ist ein Kodierungsverfahren, welches dazu verwendet wird um beliebige Binärdaten nur Hilfe ' 'einer Zeichenkette aus A-Z, a-z, 0-9, +, / sowie am Ende = übertragen zu können. Ein Einsatzzweck ' 'dafür ist z.B. wenn bei EMails Dateianhänge verwendet werden, dort werden nahezu alle Dateiformate ' 'base64-kodiert übertragen. Auch bei dem einem oder anderen Mystery sind mir solche kodierten ' 'Zeichenketten schon begegnet. Wenn am Ende einer Zeichenkette ein oder zwei "="-Zeichen stehen ist ' 'die Wahrscheinlichkeit recht groß, das hier base64 verwendet wurde. Das "="-Zeichen dient hier ' 'nämlich als "Lückenfüller" am Ende. Die Funktion hier versucht zunächst eine Dekodierung ' 'Base64->ASCII gelingt dies nicht, erscheint ein Hinweis und der eingegeben Text wird dann ' 'Base64-kodiert ausgegeben.') jaegerzaun = ("Jägerzaun (auch Railfence oder ZigZag-Chiffre genannt) Bei dieser Chiffre wird kodiert, indem man " "einen Text im Zickzackmuster in ein Feld aus z.B. 3 Zeilen und so vielen Spalten wie der Text lang " "ist schreibt. Man beginnt in Spalte 1 - Zeile 1, dann geht es in Spalte 2 - Zeile 1 weiter danach " "Spalte 3 - Zeile 3, dann Spalte 4 - Zeile 2, Spalte 5 - Zeile 1 usw. Danach werden die Buchstaben " "einfach Zeile für Zeile hintereinander geschrieben. Unterschiedliche Varianten entstehen einfach " "dadurch, dass man mit unterschiedlich vielen Zeilen arbeitet welche im Schlüsselfeld anzugeben " "ist. \n" "Die Funktion erzeugt hierbei einmal eine Ausgabe bei welcher auch Leerzeichen mitgeschrieben werden " "und eine Ausgabe wo zuvor die Leerzeichen entfernt werden.") jaegerzaun_encrypt = f"### encrypt Jägerzaun\n{jaegerzaun}" jaegerzaun_decrypt = (f"### decrypt Jägerzaun\n{jaegerzaun} \n" f"Wird im Schlüsselfeld keine Zahl angegeben erfolgt automatisch die Dekodierung für alle " f"Zeilenanzahlen von 2-12.") adfgx = ('Die ADFGX-Chiffre arbeitet mit zwei Passwörtern, wobei jedes für je einen Kodierungsschritt ' 'verwendet wird. Das erste wird benutzt um eine Variation der Polybios-Kodierung mit einem 5x5 ' 'Quadrat und J=I durchzuführen bei welcher die Zahlen 1-5 durch die Buchstaben ADFGX ersetzt ' 'werden. \n' 'Mit dem Text "Ein Beispiel",dem Passwort "PASSWORT" und einem mit A->Z aufgefülltem Schlüsselquadrat: \n' '| |A|D|F|G|X|\n' '|-|-|-|-|-|-|\n' '|A|P|A|S|W|O|\n' '|D|R|T|B|C|D|\n' '|F|E|F|G|H|I|\n' '|G|K|L|M|N|Q|\n' '|X|U|V|X|Y|Z| \n \n' '... ergibt der erste Schritt z.B. die Zeichenfolge: "FA FX GG DF FA FX AF AA FX FA GD". ' 'Nun kommt das zweite Passwort zum Einsatz als Beispiel hier:"Tester". Zunächst einmal wird die ' 'alphabetische Reihenfolge des Passworts "Tester" benötigt -> 5 1 4 6 2 3 \n' 'diese Zahlenreihe wird nun in die erste Zeile geschrieben und das Ergebnis aus Schritt 1 zeilenweise ' 'darunter: \n' '|5|1|4|6|2|3|\n' '|-|-|-|-|-|-|\n' '|F|A|F|X|G|G|\n' '|D|F|F|A|F|X|\n' '|A|F|A|A|F|X|\n' '|F|A|G|D| | | \n \n' '... nun eine Sortierung der Spalten... \n' '|1|2|3|4|5|6|\n' '|-|-|-|-|-|-|\n' '|A|G|G|F|F|X|\n' '|F|F|X|F|D|A|\n' '|F|F|X|A|A|A|\n' '|A| | |G|F|D| \n \n' '... dies nun spaltenweise von oben nach unten ausgelesen und hintereinander geschrieben ergibt nun' 'den kodierten Text. Typischer Weise erfolgt für eine bessere Lesbarkeit eine Gruppierung in ' '5er-Blöcken: "AFFAG FFGXX FFAGF DAFXA AD" \n' ' \n' 'Ausgegeben werden zwei Varianten, welche sich nur dadurch unterscheiden wie das Schlüsselquadrat im ' 'ersten Schritt aufgefüllt wird. Entweder in alphabetischer Reihenfolge A->Z oder umgekehrt Z->A.') adfgx_kodieren = f"### HILFE: ADFGX kodieren\n{adfgx}" adfgx_dekodieren = f"### HILFE: ADFGX dekodieren\n{adfgx}" adfgvx = (f'Die ADFGVX-Chiffre erweitert das 5x5-Schlüsselquadrat der ADFGX-Chiffre ersten Kodierungsschritt auf 6x6 ' f'so, dass das komplette Alphabet und die Zahlen 0-9 verwendet werden können. \n' f'Alles andere funktioniert wie bei ... \n \n__ADFGX:__ \n{adfgx}') adfgvx_kodieren = f"### HILFE: ADFGVX kodieren\n{adfgvx}" adfgvx_dekodieren = f"### HILFE: ADFGVX dekodieren\n{adfgvx}" brainfuck_interpreter = ("### Brainfuck-Interpreter\n" "Brainfuck gehört zu den sogenannten esoterischen Programmiersprachen. \n" "Der Programmcode setzt sich hier aus den 8 Zeichen ><+-.,[]') zusammen. Diese Funktion " "führt einen derartigen Programmcode aus, und gibt das Ergebnis aus, welches bei Geocaches " "meist eine kurze Nachricht oder die Koordinaten sind. Für eine umgekehrte Umwandlung von " "Text in Brainfuckcode gibt es im Internet genügend Möglichkeiten zu finden. \n" "Folgender Code wäre z.B. _Hello World!_ in Brainfuck: \n" "`++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++." "------.--------.>+.>.`") ook_interpreter = ("### Ook-Interpreter\n" "Ook ist eine Abwandlung von Brainfuck wobei die 8 Zeichen von Brainfuck hier durch eine " "Kombination von je zwei der folgenden 3 Satzzeichen .!? ersetzt werden. Dabei wird dann je das " "Wort Ook vor die Satzzeichen geschrieben. z.B.: Ook! Ook? Ook. Ook! Da Ook auch durch andere " "Wörter ersetzt oder auch ganz ohne Wörter (ShortOok) auftaucht ignoriert diese Funktion alle " "anderen Zeichen außer .!? bevor versucht wird den Code auszuführen.")