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">
<input name="stl" onclick="fadeSt()" value="Steckerleiste ein"
type="button"> <input name="knopf" onclick="fade()" value="
Monitor ein " type="button"> <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...