127.  Von Enigma über HASH bis Babel - Verschlüsselung elektronischer Daten


Einleitung

Das Verschlüsseln von Daten bekommt in einer unfreiwillig immer mehr transparenten Gesellschaft eine größere Bedeutung zu. Der Sternenhimmelstuermer recherchierte ein wenig mit Google im Internet, um von Enigma über Hash-Werte sich zum Projekt Babel durchzukämpfen.

Das Projekt Babel vom Sternenhimmelstuermer können Sie freilich noch nicht kennen, da es der Versuch ist, mit VBS und einer Batch auf der Ebene von Zufall einzelner verschlüsselter Buchstaben einen halbwegs anständigen Code zum verschlüsseln zu kreieren, was beinahe unmöglich ist, da der Code im Klartext vorliegt. Das ganze Projekt wird jedenfalls eine HTA, die eine Batch generiert, in der der einmalige individuelle Verschlüsselungscode und  Entschlüsselungscode vorliegt.
In Wirklichkeit geht es natürlich dem Sternenhimmelstuermer um VBS und Batch, Variablen erstellen und Verschieben und auf bestimmte Zeichen an bestimmter Position zuzugreifen. Das alles ein wenig verpackt in einer übergeordneten Mission...

Inhaltsangabe
1. Vorstellung von Enigma und Erweiterung um E-Mail-Versendefunktion
2. Hash-Werte
3. Projekt Babel Das Projekt Babel wurde unter dem Codenamen NoNSA realisiert! Aus Sentimentalität bleibt dieser erster Ansatz als eine Art Logbuch bestehen, aber die fertige Version ist zu 100 % lauffähig, schnell, mit Base64 und kann somit ganze Dokumente verschlüsseln - kein Vergleich zu diesem primitiven Ansatz!
Es werden in der oben genannten Babel to go Version 20 Tabellen mit 14 Reihen a 76 Zeichen verwendet - ziemlich schwer knackbar-:)
 
Vorstellung von Enigma und  Erweiterung um  E-Mail-Versendefunktion

Vielleicht ist dem einen oder anderen der Begriff Enigma geläufig, , welches eine im letzten Jahrhundert in Deutschland erfundene Maschine zur Verschlüsselung von Nachrichten ist.
 Enigma kommt aus dem griechischen und bedeutet Rätsel. Die Nazis erkannten das potential und aus der Herstellerfirma wurde ein staatlicher Zulieferbetrieb. Nicht zu vergessen ist der Kinofilm Enigma - das Geheimnis, ein wirklich gelungener  Kinofilm. Der Verschlüsselungscode wurde bereits im letzten Jahrhundert gebrochen, aber der Sternenhimmelstuermer behauptet, dass mit kleinen Änderungen es möglich ist, SMS und E-Mails hinreichend zu verschlüsseln. Der Aufwand von Supercomputern ist für die Durchschnitts-E-mail wenig effektiv - selbst bei einer Berechnung mit Tabellen werden einige Sekunden bis Minuten gebraucht, bei z. B. 100.000 gestohlenen Passwörtern ist das einfach nicht mehr lukrativ...

Der Sternenhimmelstuermer stellt erstmal Enigma als Javascript vor, welches zur einfachen Verschlüsselung von SMS vollauf genügt.

Kritiker werden wieder sagen: Enigma ist unsicher und geknackt. Der Sternenhimmelstuermer sagt hingegen:

1. Jeder Code ist knackbar - es kommt auf den Zeitaufwand an und selbst wenn Cloudcomputer nur 10 Minuten brauchen sollten - dann wäre der Aufwand für ein paar SMS in der Regel zu groß...

2. Ist eine 1 zu 1 Verschlüsselung, d. h., dass Ihre SMS nicht übermäßig aufgebläht werden (O.k.: nach jeder fünften Stelle kommt ein Leerzeichen, was bei 80 Buchstaben 16 Leerzeichen entsprechen würde...die man auch entfernen könnte - was jeden Angreifer zusätzlich irretieren würde...das wird nochmal erklärt.

3. Nichts hindert Sie daran, mit einer einfachen Suchen und Ersetzen-Funktion einen Buchstaben des verschlüsselten Textes durch ein Sonderzeichen zu ersetzen. Schreiben Sie dann noch z. B.  die Wörter rückwärts,  gibt es auch keine Möglichkeit für einen Computer,  Wörter anhand eines Wörterbuchs zu identifizieren....

Bei einer SMS wird dann der Code annähernd unknackbar...Das Risiko liegt dann beim Entschlüsseln und Verschlüsseln - und bei einem PC mit Internetanbindung ist eine ernst gemeinte Verschlüsselung nicht nur allein wegen des Bundestrojaner wohl eher ein Witz...

4. Der Quellcode von Enigma liegt offen vor. Da schafft es kein Geheimagent der Chinesen, Amerikaner oder in Geldnöten geratener Programmierer, Ihnen etwas unterzujubeln.

5. Wem das noch nicht reicht, der kann die einzelnen Blöcke mit Leichtigkeit mit einer Batch noch Zeilenweise vertauschen...

Software wie GNU PG unterlag noch bis in die 90èr Jahre des letzten Jahrhunderts den strengen militärischen Einfuhr- und Ausfuhrverbot in der USA. Es ist anzunehmen, dass entweder durch Deals oder per Erfindung der Geheimdienste Hintertüren entdeckt wurden, die eine Gesetzeslockerung zur Folge hatten, obwohl in den USA immer noch Restriktionen bestehen. Der Sternenhimmelstuermer glaubt nicht an eine wirklich sichere Verschlüsselung und wird immer wieder in seinem Glauben bestätigt.

Wohl aber reicht eine solche rudimentäre Verschlüsselung, um sich Spam und Co. vom Leibe zu halten und was will der Normalbürger mehr?


Der Sternenhimmelstuermer bettete die aktuelle Version von Enigma 2.0 in seine Webseite ein - mit einbetten ist gemeint, dass der Code im I-Frame liegt - fremde Seiten bettet man sonst nicht in den Code ein, dass ist wohl selbstverständlich. Das ist laut Lizenzbestimmungen von Herrn Pollak so erlaubt. Sie können auf der originären Seite sich die Webseite downloaden und dann Offline verfügbar machen. Das ist so gewollt und ganz schön tricky -


Diese veränderte Kopie hier liegt in einem I-Frame und beinhaltet eine Erweiterung um eine E-Mail-Versendefunktion des Erstellten Codes (Ausgabe) von Enigma und zwei Funktionen zur Erstellung des Sha-I-Wertes des Eingabefeldes und Ausgabefeldes. In der Hilfe ist ein Link zur Seite des Autors Daniel Palloks. Der o. a. Link bietet denselben Link




Hinweis: Der Quellcode entspricht nicht dem Originalcode der ursprünglichen Version.

Es wurden folgende Zeilen abgeändert:

Beschreibung der Veränderungen:

Im Head neues Script:

<script language="JavaScript">
function mailout() {
var ergebnishash = document.getElementById('hash');
var ergebnis = document.getElementById('out');
   betreffzeile="E-Mail Enigma mit eingetragenen Wert SHA I: " + ergebnishash.value;
   text=ergebnis.value;
   location.href="mailto:meine@adresse.de?subject="+betreffzeile+"&body="+text;
  }

</script>


Erklärung: Neue Funktion Mailout kreiert. Mit der getElementByID-Methode wird aus Ihrer Textarea out der Inhalt gezogen. Der Inhalt wird als Text als ergebnis.Value übernommen und per location.href an das E-Mail-Programm übergeben, dass im Browser als Standard-Applikation eingetragen ist.... Nach einer Rückfrage wird die email erstellt. Ja, da ist dann die Fakeadresse mailto:meine@adresse.de? drinnen, die Sie natürlich in eine beliebige Adresse ändern können.

Dann kann man den vorher abgefragten und eingetragenen Sha 1-Wert von der Eingabe oder Ausgabe versenden. Richtig sinnig ist nur die Ausgabe, aber vielleicht brauchen fortgeschrittene User ja mal die Eingabe zur eigenen Sicherheit... Fragen Sie den SHA-Wert nicht ab, wird eben kein SHA-Wert in der Überschrift generiert...

Im Body:

<div><input name="qw" title="Eingabemodus umschalten" onclick="fadeInp()" value="QWERTZU-Tastatur" type="button"> &nbsp; <input name="stl" onclick="fadeSt()" value="Steckerleiste ein" type="button"> &nbsp; <input name="knopf" onclick="fade()" value=" Monitor ein " type="button"> &nbsp; <input name="neuladen" onclick="window.location.href=window.location.href" value="Alles zurücksetzen" type="button"></div><div><INPUT TYPE="BUTTON" onClick="mailout()" VALUE="Mail"></div>

Hier hängte der Sternenhimmelstuermer nur den Button für die Mail-Funktion an.... , die heißt mail und ist erstmal nicht dokumentiert...

In Zeile:

<em>© 2007-11 Daniel Palloks, Erweiterung: e-Mail Funktion und SHA-1 Funktion Sternenhimmelstuermer 2013</em>

Was bewirken die Veränderungen?

Sobald Sie einen Text in Enigma eingegeben haben und die verschlüsselte Ausgabe sichtbar ist, können Sie diese mit der Mail-Funktion versenden...

Hintergrund

Um z. B. im Smartphone eine Ausgabe zu erreichen, müssen Sie den Text in eine interne Anwendung des Smartphones bringen. Mit der Mail-Funktion (siehe auch diese Abhandlung) ist das ein leichtes Unterfangen...


Na ja, sind nur ein paar Zeilen Code und soll auch nicht die ursprüngliche Leistung schmälern, aber kleine Ideen haben manchmal einen großen Effekt...

Nachtrag: Die neu integrierte SHA-I - Funktion zeugt von dem Text der Eingabe und Ausgabe den jeweiligen SHA-I Wert an. Sehen Sie hierzu auch das SHA I - Kapitel!
Da steht dann auch wieder der neu implementierte Code...


Erste Schritte

Als erstes Stellen Sie den Verschlüsselungscode ein. Dieses ist während der laufenden Eingabe nicht mehr möglich. Dann wählen Sie sich ein Modell aus und stellen die Walzen ein. Zusätzlich gibt es noch diverse Subeinstellungen z. B. in der Steckerleiste. Wichtig ist nur eins: Zum Entschlüsseln müssen diselben Einstellungen wie beim Verschlüsseln vorliegen.

Im Zweifelsfall schreiben Sie sich das auf! Mit der Taste zurücksetzen oder bei Schließung des Javascripts sind alle Einstellungen verloren (ist zwar unzulässig, aber man könnte sagen: so flüchtig wie RAM auf dem PC - schaltet man den Computer aus, sind die Daten verloren-:)).

Beliebig großen reinen Text per Copy und Paste einfach in das Eingabefeld importieren (bei String V wird das dann gleich übersetzt).  Sie können den Text  auch per  virtueller Tastatur (QWERTZ) eingeben.

Javascript muss aktiviert sein. ä,ü...ß,1234567890, Sonderzeichen usw. werden ignoriert. Die Ausgabe  erfolgt  bei manueller  Eingabe in Echtzeit in Blöcken zu fünf Buchstaben mit einem Leerzeichen getrennt.

Durch einen Doppelklick in das Ausgabefeld wird der gesamte Text markiert und kann  dann bequem kopiert werden.


Wie gesagt - lieber ein einfaches Modell, dann die Walzen ein wenig  verändern und lieber danach mit Suchen und Ersetzen den Ausgabetext mit Zahlen oder Sonderzeichen anreichern. Bei einer SMS ziemlich sicher...z. B.  zweiten, dritten und vierten Buchstaben des Empfängers als Walzeneinstellungsparameter - seien Sie kreativ!

Wenn Sie sehen wollen, wie Enigma so arbeitet, dann schalten Sie den Monitor ein.


Leerzeichen entfernen oder Hinzufügen

Um potentielle Angreifer ein wenig zu verwirren können Sie Leerzeichen  wegnehmen und später wieder Hinzufügen. Der Vorteil liegt  bei SMS eindeutig  in dem Einsparen von Leerzeichen. Schließlich kosten die auch Geld (money for nothing - für ein wenig mehr Lesebequemlichkeit..). Da die Zergliederung in Enigma gleichmäßig in Buchstabengruppen von  5 Buchstaben vorsieht, verbessert sich nach Ansicht des Sternenhimmelstuermers die Lesbarkeit, wenn Sie nach dem Entschlüsseln beim Klartext nochmals die Leerzeichen entfernen.

Dazu kopieren Sie mit Doppelklick in der Ausgabe-Textbox von Enigma den codierten Text: Doppelklick auf verschlüsselten Text mit linker Maustaste zum Markieren. Dann rechte Mausmenü und kopieren. Dann Text in Word oder Editor von Windows einfügen.

Einfach bei Word in der Registerkarte Start rechts auf Bearbeiten und im Dropdownmenü Ersetzen auswählen. Sie landen dann direkt in der Registerkarte Ersetzen im neuen Dialogfenster.

Dort  in Suche nach einfach einmal die Tabulatortaste betätigen, um ein Leerzeichen einzufügen.  Dann können Sie Ersetzen durch: einfach ignorieren. Denn das Leerzeichen wird quasi durch nichts ersetzt und somit entfernt - Alles ersetzen drücken - fertig.

Umgekehrt wird  es schwieriger: Nach jedem fünften Buchstaben muss ein Leerzeichen eingesetzt werden. Bleiben wir in Word und passen ein bestehendes Makro an (Zitat in abgeänderter Form von Office-Loesung.de):

Sub enigma()
With Selection
.HomeKey wdStory
Pos = 1
Do While Pos < ActiveDocument.Characters.Count
    .MoveRight 1, 5, 0
    .TypeText " "
    Pos = Pos + 4
Loop
End With
End Sub

Die Angaben nach Moveright sind entscheidend. Nach jedem fünften Zeichen wird ein Leerzeichen eingefügt. Lustig nebenbei: Der Nachfrager im o. a. Link wollte  DNA-Frequenzen in Form bringen: Mit Word die Grundbausteine des Lebens einfach lesbar machen - das hat schon etwas...

Wie integriere ich ein Makro in Word? Viele User können keine Makros benutzen, dabei ist es nach Ansicht des Sternenhimmelstuermers ein wenig Pflicht in der Arbeitswelt zumindest bestehende Makros für Stapelverarbeitungen zumindest integrieren zu können. Das ist einfach und wird hier nochmal Schritt für Schritt erklärt:

1. Word 2007 (mit dem habe ich das auch getestet) öffnen
2. Office Button drücken und Optionen auswählen
3. Unter Wichtigste Optionen für das Arbeiten mit Word bei Entwicklerregisterkarte in der Multifunktionsleiste anzeigen ein Häkchen setzen und mit O. K. übernehmen
4. In der Entwicklertool-Registerkarte ganz links Makros auswählen.
5. Im Dialogfenster einen Titel wie Enigma  als Makroname eingeben und fakultativ eine Beschreibung, dann den Button Erstellen: Ein Grundgerüst wird angezeigt.
6. Das Grundgerüst wird gelöscht und der o. a. blaue Text eingefügt.
7. einfach das Dokumentenfenster der Eingabe schließen
8. Wieder in die Entwicklertool-Registerkarte
9. Dort Makros auswählen. Jetzt wird Ihnen das Makro angeboten. Markieren durch anklicken und den Button Ausführen betätigen.


2. Hash-Werte

Nein, dass wird kein Kapitel über die Verwendung von Drogen, sondern es geht um ein einseitiges kryptologisches Verfahren, um einzelnen Texten, Dokumenten oder Dateien individuelle Buchstaben-Zahlenreihen zuzuweisen.

Zwei typische Vertreter sind :

SHA 1 = secure hash algorithm (engl. für sicherer Hash-Algorithmus)
MD5      = Message-Digest Algorithm 5

Das Prinzip dahinter: Eine Kopie einer Datei entspricht zu 100 % dem Original. Ändern Sie nur einen Buchstaben der Kopie, so kommt ein  total anderer Wert heraus. Wozu ist das gut?  Auf Sicherheit bedachte Autoren  und Downloadseiten geben den Hashwert  ihrer Datei an. Sollte jemand den Quellcode  verändern  und Malware oder Viren  einbauen, so wird dieses entdeckt.  Der Autor hat hingegen nichts zu befürchten,  da  der Buchstaben-Zahlenblock  nicht s über den Quellcode verrät.

Leider stellt der Sternenhimmelstuermer eine zunehmende Trägheit bei der Angabe von HASH-Werten fest. Auch erstaunlich ist, dass die Dateien einiger Freeware schon in der einfachen KB-Zahl in bekannten Downloadquellen und selten auch in den folgend genannten differieren.

Der Sternenhimmelstuermer versucht in der Reihenfolge chip.de oder heiseonline.de, Computerbild oder ZD-Net  und dann auf den Autorenseiten. Ja, die unbekannten Autoren kommen erstmal am Ende. Die werden zwar zur Überprüfung nochmal auf ihrer Homepage  besucht (einige veröffentlichen den Hash-Wert und das ist dann eine prima  Gegenprobe zu den "etablierten" Downloadquellen.

Das einige dieser Tools nach der Installation nach Hause telefonieren wollen, was der Sternenhimmelstuermer mit seiner Desktopfirewall natürlich mitbekommt (nicht die von Windows, die ist ohne Aufsatz oder definierte Regeln - deren Erstellung für den Normalbürger zu kompliziert ist - einfach grottenschlecht was die Durchlässigkeit von Nachrichten vom PC in das Internet angeht), ist bedenklich...

Da wir dabei sind: Der Sternenhimmelstuermer prüft bei Virus-Total mit 40 Online-Scannern Download-Dateien. Was hat das mit HASH-Werts zu tun? Öfters bekommt man als Antwort, dass die Datei mit dem HASH-Wert schon überprüft wurde und das Ergebnis negativ ist. Aha, hier wird die Einmaligkeit  des Wertes dazu ausgenutzt, um sich laufende Überprüfungen zu ersparen!

Also alles schön und der Hash-Wert das Non Plus Ultra? Nein, es gibt genug Menschen, die an einer Manipulation dieses Wertes arbeiten - Zitat Wiki: Im August 2006 wurde auf der CRYPTO 2006 ein weiterer, wesentlich schwerwiegenderer Angriff gegen SHA-1 präsentiert, der möglicherweise auch in der Praxis Auswirkungen zeigen kann. Bei diesem Angriff kann ein Teil der gefälschten Nachricht (derzeit bis zu 25 %) im Inhalt frei gewählt werden.
 
Das wird im Wiki-Artikel allerdings relativiert. Beängstigend ist aber, dass wir im Jahre 2012 leben und bei der laufenden Fortentwicklung von Knackmethoden mit einer hohen Wahrscheinlichkeit davon auszugehen ist, dass zumindestens Geheimdienste ein Hash-Wert eher periphär tangiert...

Es gibt diverse Software für das ermitteln von SHA-1 und MD-5. Der Sternenhimmelstuermer testete das englischsprachige Tool   HashMyFiles, dass Sie bei chip.de runterladen können - gerade mal 54 KB, kommt in einem ZIP-Ordner daher, nimmt keinen ungewollten Online-Kontakt auf und ist einfach zu bedienen. Das Tool muss nicht installiert werden. Einfach die *.exe im entpackten Ordner starten. Das Tool macht im Gegensatz zu anderen Tools in diesem Bereich einen insgesamt guten Eindruck.

Dann können Sie gerne Spaßeshalber mit dem folgenden Javascript gerne den Wert SHA-1 von Text berechnen, was Sie mal gebrauchen können, wenn Sie überprüfen wollen, ob der Text einer E-Mail, SMS oder  ? wirklich unverändert angekommen ist. Dazu schicken Sie Vorzugsweise  einfach den generierten Code seperat an den Empfänger. Dieser überprüft den HASH-Wert mit dem HASH-Wert des übermittelten Textes.






Das Javascript untersteht der GNU-Lizenz und wurde vom Sternenhimmelstuermer ein wenig für die Verwendung auf dieser Seite angepasst. Der Ursprung liegt auf der englischsprachigen Seite http://www.movable-type.co.uk/scripts/sha1.html . Der Sternenhimmelstuermer übernimmt keine Gewähr für die Funktionstüchtigkeit und Richtigkeit des Javascriptcodes. Sie können sich den Code kopieren und frei weiterverwenden.

Sie erinnern sich?  Sollte nur ein Buchstabe im Text verändert sein, dann ist beim Empfänger der HASH-Wert total unterschiedlich - Aha, dieser Text wurde manipuliert...Übrigens könnte man als Geschäftsmann gerichtsfeste Beweise dafür schaffen, dass wirklich ein bestimmter Text übermittelt wurde. Nochmal: Ein HASH-Wert ist einmalig. In einer Kopie kann also nur derselbe Wert herauskommen. Damit könnte man auch Mitarbeiter überprüfen bzw. Schützen. Am Ende der Bearbeitung wird der Hash-Wert ermittelt. Stimmt der nicht mit einem Dokument vor Gericht überein, dann wurde wohl gut oder schlecht gemeint das Dokument verändert...

Der Sternenhimmelstuermer baute die SHA-I Funktion gleich einmal in Enigma ein:

Änderungen: eben angegebener Code in den Headbereich und im Body:

<div><button type="button" onclick="k.hash.value = Sha1.hash(f.inp.value)">Hash Eingabe</button><button type="button" onclick="k.hash.value = Sha1.hash(f.out.value)">Hash Ausgabe</button><input value="nicht abgefragt" name="hash" id="hash" readonly="readonly" type="text" size="50" maxlength="50"></div>

Wie man leicht erkennen kann, wurden zwei Buttons und ein Ausgabefeld an Enigma angepasst. Das kann eigentlich jeder Javascriptanfänger .

Die Demo ist im Kapitel über Enigma von Herrn Daniel Palloks.

Kleiner Gedankensprung: Wie wäre es denn mit verkürzten HASH-Werten für Unterschriften von Behörden - ist ein wenig anonymisiert... Auf jeden Fall sollten Sie  den HASH-Wert ihres Namens  mal Offline  (!) ermitteln und auswendig lernen -:), ne, es gibt sinnvollere Beschäftigungen.




3. Projekt Babel

Das Projekt Babel wurde unter dem Codenamen Babel to go realisiert! Aus Sentimentalität bleibt dieser erster Ansatz als eine Art Logbuch bestehen, aber die fertige Version ist zu 100 % lauffähig, schnell, mit Base64 - kein Vergleich zu diesem primitiven Ansatz! Schauen Sie unter o. a. Link nach...

20.09.2012 Der Grundcode wurde überarbeitet Babel ist jetzt die sicherste Verschlüsselung, die je mit einer Batch geschrieben wurde...

Der Sternenhimmelstuermer wird diese Abhandlung mit einer HTA zur Ver- und Entschlüsselung in einer HTA beenden: Es wird ausschließlich auf VBS und Batch basieren.

Der Grundcode ist auf Batch-Basis. Das Ganze wird dann in einer  HTA verpackt. Die Batches sind aber durchaus alleine eine lauffähige Anwendung

Die Grundverschlüsselung wird erstmal veröffentlicht. Diesmal keine langen Erklärungen. Als erstes brauchen Sie ein Testdokument mit dem Namen auslesetext.txt. Darin wird in Kleinbuchstaben geschrieben.  12 kleine Buchstaben  mit jeweils einem Leerzeichen dazwischen. Pro Reihe sind zwoelf Buchstaben Pflicht. Ja, das ist erstmal unbequem, wir befinden uns noch in der Pre-Beta-Phase ohne GUI. Das wird noch angepasst... Wieviele Zeilen Sie verwenden ist so ziemlich egal (1 - endlich), dauert dann aber immer mehr Zeit...aämtliche Zahlen auch, aber ö,ä, und Satzzeuchen wie Komma, Punkt, Anführungszeichen znd Sonderzeichen sind tötlich. Ja, echte handgemachte Verschlüsselung im Kerncode ist erstmal schrecklich -:) Es gibt aber nichts, was man nicht durch eine Gui, Word und VBS hinkriegen könnte. Satzzeichen und Sonderzeichen kann man durch Suchen und Ersetzen in lesbare Form bringen...

Hier mal ein Probetext zum kopieren wie es im Rohcode unter der Haube aussieht :

auslese.txt

d a s i s t e i n v e r
s u c h m i t d e r s o
f t w a r e b a b e l d
e r b e w e i s t d a s
j e d e r h a l b w e g
s g u t e r b a t c h s
c h r e i b e r d a s p
o t e n t i a l h a t e
i n e n e b e n s o s i
c h e r e n c o d e w i
e n i g m a z u e r s c
h a f f e n x x x x x x

So, dann brauchen Sie drei Batches. Die erste Batch können Sie in einem beliebigen Ordner ausführen. Dieses erstellt einen Unterordner namens chiffre. In diesem liegen dann zwoelf Tabellen mit zufällig generierten Alphabeten und 12 Blocktexte zum Austauschen der Reihen. Jedem Buchstaben wird später ein neuer Buchstabe oder eine Zahl oder in dieser kleinen Probeversion ein Buchstabe, kleine Zahl, ü oder # zugeordnet. Führen Sie die Batch ein zweites Mal aus, so passiert nichts. Sie müssen zuerst den Unterordner komplett löschen, um neue Verschlüsselungstabellen und Blocktexte zu erstellen.

In der Praxis muss eine Kopie  der aktuelle Chiffreordner dann an den Empfänger in der Kopie geschickt werden. Noch mal zum Verständnis: Ver- und Entschlüsselung ist die Aufgabe der folgenden Batches. Die erste Batch generiert die einmaligen Codetabellen nach dem Zufallsprinzip. Sie ist das Gehirn. Die beiden anderen Batches sind nur ausführende Organe, die sich an den Tabellen abarbeiten - das ist aber eine durchaus anspruchsvolle Aufgabe...

Codetabellen.bat

if exist chiffre goto chiffreexist
mkdir "chiffre"
set destination=%~dp0%
REM alphatext der durch Austausch von Buchstaben sicher wird
>"%destination%alpha_1.txt"  ECHO a
>"%destination%alpha_2.txt" ECHO b
>"%destination%alpha_3.txt" ECHO c
>"%destination%alpha_4.txt" ECHO d
>"%destination%alpha_5.txt" ECHO e
>"%destination%alpha_6.txt" ECHO f
>"%destination%alpha_7.txt" ECHO g
>"%destination%alpha_8.txt" ECHO h
>"%destination%alpha_9.txt" ECHO i
>"%destination%alpha_10.txt" ECHO j
>"%destination%alpha_11.txt" ECHO k
>"%destination%alpha_12.txt" ECHO l
>"%destination%alpha_13.txt" ECHO m
>"%destination%alpha_14.txt" ECHO n
>"%destination%alpha_15.txt" ECHO o
>"%destination%alpha_16.txt" ECHO p
>"%destination%alpha_17.txt" ECHO q
>"%destination%alpha_18.txt" ECHO r
>"%destination%alpha_19.txt" ECHO s
>"%destination%alpha_20.txt" ECHO t
>"%destination%alpha_21.txt" ECHO u
>"%destination%alpha_22.txt" ECHO v
>"%destination%alpha_23.txt" ECHO w
>"%destination%alpha_24.txt" ECHO x
>"%destination%alpha_25.txt" ECHO y
>"%destination%alpha_26.txt" ECHO z
>"%destination%alpha_27.txt" ECHO 0
>"%destination%alpha_28.txt" ECHO 1
>"%destination%alpha_29.txt" ECHO 2
>"%destination%alpha_30.txt" ECHO 3
>"%destination%alpha_31.txt" ECHO 4
>"%destination%alpha_32.txt" ECHO 5
>"%destination%alpha_33.txt" ECHO 6
>"%destination%alpha_34.txt" ECHO 7
>"%destination%alpha_35.txt" ECHO 8
>"%destination%alpha_36.txt" ECHO 9
>"%destination%alpha_37.txt" ECHO ü
>"%destination%alpha_38.txt" ECHO ^#
>"%destination%alpha_39.txt" ECHO ö

REM Zuordnung von Buchstaben zur Codierung und Decodierung in Tabellen
set /a d=1
set /a x=0
 :Schleife
 if %x% GEQ 39 goto ende
set /a x=%x%+1
 :neueZahl
 SET MIN=1
 SET MAX=39
 SET /a Zufallszahl=MIN+(MAX-MIN+1)*%random%/32768
 If exist beta_%Zufallszahl%_*.txt (goto neueZahl) else echo %Zufallszahl% >beta_%Zufallszahl%_%x%.txt
 for /f %%a in (beta_%Zufallszahl%_%x%.txt) do for /f %%i in (alpha_%x%.txt) do echo %%i >>beta_%Zufallszahl%.log
 goto :Schleife
 :ende
set /a z=1
:anfang
for /f %%a in (beta_%z%.log) do for /f %%i in (alpha_%z%.txt) do echo %%i %%a %%a %%i >>chiffre_%d%.txt
Set /a z=%z%+1
if %z% GEQ 39 goto dele
goto :anfang
:dele
 del beta_*_*.txt
del beta_*.log
set /a d=%d%+1
set /a x=0
if %d% GEQ 13 goto chiffreende
goto Schleife
:chiffreende
del alpha_*.txt
copy chiffre_*txt %destination%chiffre\chiffre_*.txt
del chiffre_*.txt


Rem die horizontalen Drehungen werden durchgefuehrt nach Zufallsblocktexten
if exist block_*_*.log (goto los) else goto generate

:generate
set /a z=0
:Schleifeblock
if %z% GEQ 12 goto los
set /a z=%z%+1
:newnumber
SET MIN=1
 SET MAX=12
 SET /a Zufallszahl=MIN+(MAX-MIN+1)*%random%/32768
If exist %destination%chiffre\block_*_%Zufallszahl%.log (goto newnumber) else echo %z% %Zufallszahl% >%destination%chiffre\block_%z%_%Zufallszahl%.log
goto Schleifeblock
:los

:chiffreexist


Prinzipiell können Sie die Batch um Großbuchstaben und weitere Sonderzeichen ergänzen, wenn Sie die folgenden rot markierten Stellen ergänzen: >"%destination%alpha_39.txt" ECHO ö Die nächste Zeile wäre 40. Einfach z. B. für ein ä
>"%destination%alpha_40.txt" ECHO ä einfügen. Dann gibt es also 40 Buchstaben. Deshalb müssen Sie bei der Zuordnung einer Zufallszahl nun die Zahl auf 40 erhöhen (if %x% GEQ 40 goto ende, SET MAX=40, if %z% GEQ 40 goto dele)

In der Praxis wird Babel stark fehleranfällig und es ist insbesondere auf Groß und Kleinschreibung zu verzeichten. In Babel wird das alles so umgewandelt, dass es stimmt. Nein, Profis kann man widersprechen, ein 100 % Erfolg ist auch mit if /i und so einem gedönst in der Batch später tödlich...Mit dieser Kombination gibt es 0 Fehler - ü oder ä ergeben wieder Fehler...wird für Profis in den folgenden Batches erkennbar, warum...


Diese Batch wird nun gestartet - egal wo!!! Dann wird automatisch von der Batch ein neuer Ordner Namens Chifre erstellt !

Nun legen Sie den auslese.txt in den neu geschaffenen Ordner chiffre. Ja, das ist suboptimal, da die Stärke der Codetabellen.bat darin liegt blitzschnell neue Verschlüsselungstabellen zu generieren. Ist eben noch eine Prebeta...

Im Ordner chiffre liegen die Codetabellen chiffre_1.txt - chiffre_12.txt . und Block_1_zufallszahl_log (Zahlen 1-12).  Die bleiben schön drinnen liegen. Das sind die Tabellen zur Ver- und Ent-schlüsselung.

Als nächstes wird die Batch zur Verschlüsselung in den Ordner chiffre gelegt:

Codierung.bat (in Ordner chiffre, der zuvor automatisch erstellt wurde!)


REM Zwoelf Reihen in einzelnen Dokumenten werden gebildet

FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) DO echo %%i >>auslese_1.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%j >>auslese_2.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%k >>auslese_3.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%l >>auslese_4.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%m >>auslese_5.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%n >>auslese_6.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%o >>auslese_7.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%p >>auslese_8.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%q >>auslese_9.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%r >>auslese_10.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%s >>auslese_11.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (auslese.txt) do echo %%t >>auslese_12.txt


REM Ort wird ermittelt

set destination=%~dp0%

REM Zwoelf Reihen werden unterschiedlich chiffriert

set destination=%~dp0%

>"%destination%code1.bat"   ECHO set vgl=%%1
>>"%destination%code1.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_1.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_1.log
FOR /F "tokens=1 delims=" %%i in (auslese_1.txt) do call code1.bat %%i


>"%destination%code2.bat"   ECHO set vgl=%%1
>>"%destination%code2.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_2.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_2.log
FOR /F "tokens=1 delims=" %%i in (auslese_2.txt) do call code2.bat %%i

>"%destination%code3.bat"   ECHO set vgl=%%1
>>"%destination%code3.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_3.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_3.log
FOR /F "tokens=1 delims=" %%i in (auslese_3.txt) do call code3.bat %%i

>"%destination%code4.bat"   ECHO set vgl=%%1
>>"%destination%code4.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_4.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_4.log
FOR /F "tokens=1 delims=" %%i in (auslese_4.txt) do call code4.bat %%i

>"%destination%code5.bat"   ECHO set vgl=%%1
>>"%destination%code5.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_5.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_5.log
FOR /F "tokens=1 delims=" %%i in (auslese_5.txt) do call code5.bat %%i

>"%destination%code6.bat"   ECHO set vgl=%%1
>>"%destination%code6.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_6.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_6.log
FOR /F "tokens=1 delims=" %%i in (auslese_6.txt) do call code6.bat %%i

>"%destination%code7.bat"   ECHO set vgl=%%1
>>"%destination%code7.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_7.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_7.log
FOR /F "tokens=1 delims=" %%i in (auslese_7.txt) do call code7.bat %%i

>"%destination%code8.bat"   ECHO set vgl=%%1
>>"%destination%code8.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_8.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_8.log
FOR /F "tokens=1 delims=" %%i in (auslese_8.txt) do call code8.bat %%i

>"%destination%code9.bat"   ECHO set vgl=%%1
>>"%destination%code9.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_9.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_9.log
FOR /F "tokens=1 delims=" %%i in (auslese_9.txt) do call code9.bat %%i

>"%destination%code10.bat"   ECHO set vgl=%%1
>>"%destination%code10.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_10.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_10.log
FOR /F "tokens=1 delims=" %%i in (auslese_10.txt) do call code10.bat %%i

>"%destination%code11.bat"   ECHO set vgl=%%1
>>"%destination%code11.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_11.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_11.log
FOR /F "tokens=1 delims=" %%i in (auslese_11.txt) do call code11.bat %%i

>"%destination%code12.bat"   ECHO set vgl=%%1
>>"%destination%code12.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffre_12.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_12.log
FOR /F "tokens=1 delims=" %%i in (auslese_12.txt) do call code12.bat %%i


REM die Reihen werden zusammengefuehrt

FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_1.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_2.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further1
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further1) else goto final1
:final1
set /a y=1
:last1
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last1) else goto nowend1
:nowend1
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_1_2.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del code*.bat
del auslese_*.txt



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_3.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_4.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further2
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further2) else goto final2
:final2
set /a y=1
:last2
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last2) else goto nowend2
:nowend2
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_3_4.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log




FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_5.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_6.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further3
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further3) else goto final3
:final3
set /a y=1
:last3
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last3) else goto nowend3
:nowend3
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_5_6.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_7.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_8.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further4
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further4) else goto final4
:final4
set /a y=1
:last4
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last4) else goto nowend4
:nowend4
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_7_8.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_9.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_10.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further5
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further5) else goto final5
:final5
set /a y=1
:last5
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last5) else goto nowend5
:nowend5
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_9_10.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_11.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_12.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further6
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further6) else goto final6
:final6
set /a y=1
:last6
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last6) else goto nowend6
:nowend6
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_11_12.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log


FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_1_2.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_3_4.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further7
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further7) else goto final7
:final7
set /a y=1
:last7
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last7) else goto nowend7
:nowend7
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_1_2_3_4.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_1_2.txt
del chif_3_4.txt


FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_5_6.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_7_8.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further8
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further8) else goto final8
:final8
set /a y=1
:last8
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last8) else goto nowend8
:nowend8
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_5_6_7_8.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_5_6.txt
del chif_7_8.txt




FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_9_10.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_11_12.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further9
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further9) else goto final9
:final9
set /a y=1
:last9
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last9) else goto nowend9
:nowend9
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_9_10_11_12.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_9_10.txt
del chif_11_12.txt

FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_1_2_3_4.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_5_6_7_8.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further10
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further10) else goto final10
:final10
set /a y=1
:last10
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last10) else goto nowend10
:nowend10
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_final.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del auslese_*.log

FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_final.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_9_10_11_12.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further11
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further11) else goto final11
:final11
set /a y=1
:last11
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last11) else goto nowend11
:nowend11
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif1.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chif1.txt) DO echo %%t %%s %%r %%q %%p %%o %%n %%m %%l %%k %%j %%i >>chif.txt
del chif1.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_final.txt
del chif_*_*_*_*.txt

REM zufallszahll bestimmt Drehung aller zwoelf Buchstabenreihen

set destination=%~dp0%
set /a y=0
:loopb
if %y% geq 12 goto loopbende
set /a y=%y%+1
if exist block_1_%y%.log echo i >>var1%y%.txt
if exist block_2_%y%.log echo j >>var1%y%.txt
if exist block_3_%y%.log echo k >>var1%y%.txt
if exist block_4_%y%.log echo l >>var1%y%.txt 
if exist block_5_%y%.log echo m >>var1%y%.txt
if exist block_6_%y%.log echo n >>var1%y%.txt
if exist block_7_%y%.log echo o >>var1%y%.txt 
if exist block_8_%y%.log echo p >>var1%y%.txt  
if exist block_9_%y%.log echo q >>var1%y%.txt
if exist block_10_%y%.log echo r >>var1%y%.txt 
if exist block_11_%y%.log echo s >>var1%y%.txt 
if exist block_12_%y%.log echo t >>var1%y%.txt
goto loopb
:loopbende


set /p var1=<var11.txt
set /p var2=<var12.txt
set /p var3=<var13.txt
set /p var4=<var14.txt
set /p var5=<var15.txt
set /p var6=<var16.txt
set /p var7=<var17.txt
set /p var8=<var18.txt
set /p var9=<var19.txt
set /p var10=<var110.txt
set /p var11=<var111.txt
set /p var12=<var112.txt
>"%destination%codeblock1.bat"   ECHO FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%%%i IN (chif.txt) DO echo %%%%%var1% %%%%%var2% %%%%%var3% %%%%%var4% %%%%%var5% %%%%%var6% %%%%%var7% %%%%%var8% %%%%%var9% %%%%%var10% %%%%%var11% %%%%%var12% ^>^>chifende.txt
>>"%destination%codeblock1.bat"  ECHO exit ^>^>chifende.txt
start /wait codeblock1.bat
del var*.txt
del chif.txt
del codeblock1.bat




Diese Batch führen Sie mit Doppelklick aus. Ja,  der entstehende chifende.txt ist schon das Endprodukt. Jeder Buchstabe wurde durch einen Buchstaben in der zufällig generierten Codetabelle ersetzt. Jede Reihe nach einer eigenen Codetabelle, was bei Zwölf Buchstaben in einer Zeile zwoelf verschiedenen Verschlüsselungstabellen entspricht. Das ist bei kurzen Texten unknackbar - ohne die entsprechenden Codetabellen, die wie gesagt durch den Zufall erstellt werden.

Jeder Buchstabe in einer Zeile wird durch einen Buchstaben aus den Codetabellen ersetzt. Am Ende wird per Zufall jede Reihe horizontal per Zufall getauscht - beide Zufälle sind nicht nachvollziehbar - jeder Tabellensatz ist sehr einmalig...

Sie müssten einmalig dem Empfänger diesen generierten Ordner mit Chiffretexten zusenden. In Zeitabständen können Sie die Codetabellen durch neue auswechseln. Einfach einen neuen chiffre-Ordner erstellen. Niemand kann die Erstellung nachvollziehen. Jede neue Tabellenerstellung ist ziemlich einmalig...

Am Ende kommt die Entschlüsselung. Für die Entschlüsselung brauchen wir die 12 chiffre-Tabellen und 12 Zufallsblocktexte sowie den verschlüsselten Text (chifende.txt.)

Dann erstellen Sie folgende Batch und führen Sie aus. Hinweis: Die Lage der Batch und der 12 chiffre-Tabellen, sowie des chif.txt muss immer relativ, d. h. im selben Ordner sein. Was natürlich nicht heißen muss, dass die im chiffre-Ordner liegen...

dechif.bat (in Ordner chiffre legen, der vorher automatisch erstellt wurde!)

REM zufallszahl bestimmte Drehung einzelner Buchstabenreihen wird aufgehoben

set destination=%~dp0%
set /a y=0
:loopb1
if %y% geq 12 goto loopbende1
set /a y=%y%+1
if exist block_%y%_1.log echo i >>var2%y%.txt
if exist block_%y%_2.log echo j >>var2%y%.txt
if exist block_%y%_3.log echo k >>var2%y%.txt
if exist block_%y%_4.log echo l >>var2%y%.txt 
if exist block_%y%_5.log echo m >>var2%y%.txt
if exist block_%y%_6.log echo n >>var2%y%.txt
if exist block_%y%_7.log echo o >>var2%y%.txt 
if exist block_%y%_8.log echo p >>var2%y%.txt  
if exist block_%y%_9.log echo q >>var2%y%.txt
if exist block_%y%_10.log echo r >>var2%y%.txt 
if exist block_%y%_11.log echo s >>var2%y%.txt 
if exist block_%y%_12.log echo t >>var2%y%.txt
goto loopb1
:loopbende1


set /p var1=<var21.txt
set /p var2=<var22.txt
set /p var3=<var23.txt
set /p var4=<var24.txt
set /p var5=<var25.txt
set /p var6=<var26.txt
set /p var7=<var27.txt
set /p var8=<var28.txt
set /p var9=<var29.txt
set /p var10=<var210.txt
set /p var11=<var211.txt
set /p var12=<var212.txt
>"%destination%codeblock2.bat"   ECHO FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%%%i IN (chifende.txt) DO echo %%%%%var1% %%%%%var2% %%%%%var3% %%%%%var4% %%%%%var5% %%%%%var6% %%%%%var7% %%%%%var8% %%%%%var9% %%%%%var10% %%%%%var11% %%%%%var12% ^>^>chifendeergebnis.txt
>>"%destination%codeblock2.bat"  ECHO exit ^>^>chifendeergebnis.txt
start /wait codeblock2.bat
del var*.txt
del chifende.txt
del codeblock2.bat

REM Zwoelf Reihen in einzelnen Dokumenten werden gebildet

FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) DO echo %%i >>auslese_1.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%j >>auslese_2.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%k >>auslese_3.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%l >>auslese_4.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%m >>auslese_5.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%n >>auslese_6.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%o >>auslese_7.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%p >>auslese_8.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%q >>auslese_9.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%r >>auslese_10.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%s >>auslese_11.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (chifendeergebnis.txt) do echo %%t >>auslese_12.txt

del chifendeergebnis.txt


REM es werden zwoelf Tabellen zur Decodierung erstellt

set /a t=1
:wloop
FOR /F "tokens=1,2,3,4 delims= " %%i IN (chiffre_%t%.txt) DO echo %%k %%l  >>chiffren_%t%.txt
set /a t=%t%+1
if exist chiffre_%t%.txt (goto wloop) else goto wloopende
:wloopende

del chiffer_*.log

REM Ort wird ermittelt
set destination=%~dp0%


REM Zwoelf Reihen werden dechiffriert

set destination=%~dp0%

>"%destination%code1.bat"   ECHO set vgl=%%1
>>"%destination%code1.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_1.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_1.log
FOR /F "tokens=1 delims=" %%i in (auslese_1.txt) do call code1.bat %%i


>"%destination%code2.bat"   ECHO set vgl=%%1
>>"%destination%code2.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_2.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_2.log
FOR /F "tokens=1 delims=" %%i in (auslese_2.txt) do call code2.bat %%i

>"%destination%code3.bat"   ECHO set vgl=%%1
>>"%destination%code3.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_3.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_3.log
FOR /F "tokens=1 delims=" %%i in (auslese_3.txt) do call code3.bat %%i

>"%destination%code4.bat"   ECHO set vgl=%%1
>>"%destination%code4.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_4.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_4.log
FOR /F "tokens=1 delims=" %%i in (auslese_4.txt) do call code4.bat %%i

>"%destination%code5.bat"   ECHO set vgl=%%1
>>"%destination%code5.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_5.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_5.log
FOR /F "tokens=1 delims=" %%i in (auslese_5.txt) do call code5.bat %%i

>"%destination%code6.bat"   ECHO set vgl=%%1
>>"%destination%code6.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_6.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_6.log
FOR /F "tokens=1 delims=" %%i in (auslese_6.txt) do call code6.bat %%i

>"%destination%code7.bat"   ECHO set vgl=%%1
>>"%destination%code7.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_7.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_7.log
FOR /F "tokens=1 delims=" %%i in (auslese_7.txt) do call code7.bat %%i

>"%destination%code8.bat"   ECHO set vgl=%%1
>>"%destination%code8.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_8.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_8.log
FOR /F "tokens=1 delims=" %%i in (auslese_8.txt) do call code8.bat %%i

>"%destination%code9.bat"   ECHO set vgl=%%1
>>"%destination%code9.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_9.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_9.log
FOR /F "tokens=1 delims=" %%i in (auslese_9.txt) do call code9.bat %%i

>"%destination%code10.bat"   ECHO set vgl=%%1
>>"%destination%code10.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_10.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_10.log
FOR /F "tokens=1 delims=" %%i in (auslese_10.txt) do call code10.bat %%i

>"%destination%code11.bat"   ECHO set vgl=%%1
>>"%destination%code11.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_11.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_11.log
FOR /F "tokens=1 delims=" %%i in (auslese_11.txt) do call code11.bat %%i

>"%destination%code12.bat"   ECHO set vgl=%%1
>>"%destination%code12.bat"  ECHO for /f "tokens=1,2,3,4"  %%%%i in (chiffren_12.txt) do if %%%%i equ %%vgl%% (echo %%%%j) ^>^>auslese_12.log
FOR /F "tokens=1 delims=" %%i in (auslese_12.txt) do call code12.bat %%i


REM die Reihen werden zusammengefuehrt

FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_1.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_2.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further1
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further1) else goto final1
:final1
set /a y=1
:last1
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last1) else goto nowend1
:nowend1
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_1_2.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log

del auslese_*.txt



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_3.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_4.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further2
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further2) else goto final2
:final2
set /a y=1
:last2
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last2) else goto nowend2
:nowend2
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_3_4.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log




FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_5.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_6.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further3
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further3) else goto final3
:final3
set /a y=1
:last3
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last3) else goto nowend3
:nowend3
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_5_6.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_7.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_8.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further4
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further4) else goto final4
:final4
set /a y=1
:last4
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last4) else goto nowend4
:nowend4
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_7_8.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_9.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_10.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further5
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further5) else goto final5
:final5
set /a y=1
:last5
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last5) else goto nowend5
:nowend5
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_9_10.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log



FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_11.log"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "auslese_12.log"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further6
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further6) else goto final6
:final6
set /a y=1
:last6
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last6) else goto nowend6
:nowend6
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_11_12.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log


FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_1_2.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_3_4.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further7
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further7) else goto final7
:final7
set /a y=1
:last7
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last7) else goto nowend7
:nowend7
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_1_2_3_4.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_1_2.txt
del chif_3_4.txt


FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_5_6.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_7_8.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further8
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further8) else goto final8
:final8
set /a y=1
:last8
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last8) else goto nowend8
:nowend8
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_5_6_7_8.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_5_6.txt
del chif_7_8.txt




FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_9_10.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_11_12.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further9
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further9) else goto final9
:final9
set /a y=1
:last9
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last9) else goto nowend9
:nowend9
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_9_10_11_12.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_9_10.txt
del chif_11_12.txt

FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_1_2_3_4.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_5_6_7_8.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further10
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further10) else goto final10
:final10
set /a y=1
:last10
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last10) else goto nowend10
:nowend10
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>chif_final.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del auslese_*.log

FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_final.txt"') DO echo %%A^: >> tableone1.log
FOR /F "tokens=*" %%A IN ('findstr /N .* "chif_9_10_11_12.txt"') DO echo %%A^: >> tabletwo1.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tableone1.log) DO echo %%j  >tableone1_%%i.log
FOR /F "tokens=1,* delims=:"  %%i  IN (tabletwo1.log) DO echo %%j  >tabletwo1_%%i.log
set /a x=1
:further11
for /f "delims=" %%a in (tableone1_%x%.log) do for /f "delims=" %%i in (tabletwo1_%x%.log) do echo %%i%%a >tablenew1_%x%.log
set /a x=%x%+1
if exist *_%x%.log (goto further11) else goto final11
:final11
set /a y=1
:last11
for /f "TOKENS=*" %%a in ('dir tablenew1_%y%.log /b') do type "%%a" >> result1.txt
set /a y=%y%+1
if exist tablenew1_%y%.log (goto last11) else goto nowend11
:nowend11
FOR /F "tokens=1,2 delims=:"  %%i  IN (result1.txt) DO echo %%i%%j >>dechiffre1.txt
FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims= " %%i IN (dechiffre1.txt) DO echo %%t %%s %%r %%q %%p %%o %%n %%m %%l %%k %%j %%i >>dechiffre.txt
del dechiffre1.txt
del tablenew1_*.log
del tableone1_*.log
del tabletwo1_*.log
del result1.txt
del tableone1.log
del tabletwo1.log
del chif_final.txt
del chif_*_*_*_*.txt
del chiffren_*.txt
del code*.bat





Nach Doppelklick wird der codierte chifende.txt entschlüsselt. Im Textdokument dechiffre.txt steht dann der entschlüsselte Text.

20.09.2012

Das ist jetzt wirklich die maximale Variante für ein öffentliches Projekt, Reihen und Buchstaben werden durch den Zufall bestimmt ausgetauscht. Die letzte ernstzunehmende sich lohnende Steigerung wäre der Austausch von ganzen Zeilen nach dem Zufallsprinzip - das bringt aber nicht wirklich mehr Sicherheit...Tja, wer den Text lieber aus einem Textdokument kopieren will, der kann ja gern

die Codierung.bat und Dechif.bat als Textdokument herunterladen.


Der Autor weist noch einmal darauf hin, dass es schwer ist, öffentlich so ein Projekt zu entwickeln, da jeder potentielle Hacker mitlesen kann. Aber wer den Code verstanden hat, kann leicht ein wirklich unknackbares Produkt daraus entwickeln.
Z. B. einfach mit einer Codetabelle (nach Zufallsprinzip) nochmals über den ganzen Text rübergehen. Das ergibt schon eine so starke Veränderung, dass ein Hacker ganz schön ins Rudern kommt...

Da die Sternenhimmelstuermer eine Lehrseite ist, ein paar themenspezifische Verweise. Der Code von Babel resultiert aus jahrelangen Erklärungen dieser Seite. Der Windowseditor war am Anfang dieses Projektes leer, aber es existierten jede Menge Vorlagen auf der Sternenhimmelstuermerseite , die durch Copy und Paste schnell übertragen werden konnten. 

Der Sternenhimmelstuermer schrieb eine Abhandlung über den For - Befehl in Beziehung auf Tabellen. Das Auseinandernehmen und Zusammensetzen von Tabellen wurde dort auch schrittweise für Anfänger erklärt.  Der Code in der Kodierungs und Dechiffrierbat  ist zu 100 % derselbe.

Die Erstellung von Zufallsbuchstaben und Zahlen ist fast neu auf dieser Seite. Deshalb schrieb der Sternenhimmelstuermer einen Lottogenerator  und eine Abhandlung von der zufälligen Buchstabenziehung  - angenehmer Nebeneffekt: Es lag wieder Code vor der schnell angepasst werden konnte.

In der Zufallsbuchstabenabhandlung schrieb der Sternenhimmelstuermer bereits, dass er einen objektorientierte Ansatz für die Programmierung mit der CMD entwickelte, mit dem er fähig ist jedes gängiges Problem zu lösen. Egal ob Archivierung von Dateien, einen Doublettenfinden, eine Suchmaschine...

Deshalb verzichtet der Sternenhimelstuermer hier auch den Code näher zu erklären.

Fazit, wer sich die Mühe macht, mehrere  ältere Abhandlungen zu lesen, kann  seine Batcherkenntnisse erweitern.  Der Sternenhimmelstuermer arbeitet wirklich nur mit erweiterten Grundbefehle  - das sieht für einen Anfänger zwar schwer aus, aber in Wirklichkeit ist dieses ein sehr leichter Code...

22.09.2012 Auf Grund eines Fehlers von den Probedateien wurden diese Funktionsuntüchtig. Der Sternenhimmelstuermer korregierte einen Befehl in der Vodetabellenblatt:  If exist %destination%chiffre\block_*_%Zufallszahl%.log (goto newnumber) else echo %z% %Zufallszahl% >%destination%chiffre\block_%z%_%Zufallszahl%.log Da war ein %destination%chiffre\ zu wenig. Jetzt hinkt noch die laufende Zeile 9. Das wird noch korregiert! Mehr als peinlich, aber bei einer großen Datei kann man schon einmal einen Pfad verhunzen...

Fehlerreport 2 : In einer Nachtaktion den zweiten Fehler gefunden ein kleines p statt einem q. Jetzt stimmt alles wieder tut mir leid, dass ich fehlerhaft gearebeitet hatte...
 



Impressum
Datenschutz