mxrvinpane
Anmeldungsdatum: 22. September 2016
Beiträge: 10
|
Huhu,
ich wollte mich aus Spaß mal an ein ganz simples Encrypten/Decrypten auf eine eigene Methode
setzen. Das einzige was ich möchte ist in Bash z.b. Folgenes machen: Ein Passwort nehmen wir mal Katzenfressen123 so durch das Script sagen wir mal
"secret.sh" zu verändern das sich Buchstaben die ich vorher Festlege durch andere
Sachen ersetzten. Als Beispiel: Ich lege fest K's werden in meinem Script durch die zahl "13" ersetzt.
Bedeutet das wenn ich das Script ausführe zusammen mit dem passwort dahinter
das mir das script dann Folgenes ausspuckt: "13atzenfutter123". Ich denke
mal ihr versteht das. Und anders herrum wenn ich dann das andere Script nutze
"entschlüsseln.sh" z.b. das dann das Passwort "13atzenfutter123" wieder zu "Katzenfutter123"
wird. (Es soll hiermit so gearbeitet werden: secret.sh >> verschlüsselt.txt - Sodass eine
neue Datei für das verschlüsselte und dann auch das entschlüsselte erstellt wird). Aber wie gesagt ich möchte es so machen das ich selber festlegen kann welche Buchstaben / Zahlen
oder Sonderzeichen mit was ersetzt werden. Praxisbeispiel:
1. Ich habe das Script nun fertig (mal angenommen) dann gebe ich
nun in die Shell "secret.sh Katzenfutter123" ein.
2. Nun hat mir das Script eine Datei Namens "verschlüsselte.txt"
erstellt worin sich nun z.b. das befindet: " 13a7z3n5u11e8!"§ "
3. Und wenn ich dann "entschlüsseln.sh 13a7z3n5u11e8!"§" eingebe
wird in eine entschlüsselt.txt erstellt worin sich dann wieder
" Katzenfutter123 " befindet ☺ Ich hoffe ihr versteht was ich meine ☺ LG
mxrvinpane
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Na dann mal viel Spass. Zwar total sinnlos, aber... Vom Script her ist das - wenn deine Ersetzungsregeln K->13 usw. fest sind - einfach eine lange Liste von sed Regeln, oder tr. Dafür, daß es keine Überschneidungen geben kann, musst du selbst sorgen. In PHP wäre hier die strtr() Funktion zu benutzen. Wie man das in Bash nachstellen kann, ... nicht ganz so einfach. Von § solltest du die Finger lassen. Bleib bei ASCII.
|
mxrvinpane
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 10
|
frostschutz schrieb: Na dann mal viel Spass. Zwar total sinnlos, aber...
Das is mir egal, ich soll in meinem Schülerpraktikum ein wenig was machen.
Und ich fände das irgendwie witzig weshalb ich das gern machen würde.
Aber ich weis nicht wie ich da anfangen soll^^
Bin erst seit 3 Tagen am bash lernen. LG
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
mxrvinpane schrieb: Das is mir egal, ich soll in meinem Schülerpraktikum ein wenig was machen.
Und in deinen Praktikum sollst du etwas mit der Bash machen? Oder sollst du etwas verschlüsseln (btw. hat dein Ansatz nichts mit Verschlüsselung zu tun, das ist reine Substitution)?
Und ich fände das irgendwie witzig weshalb ich das gern machen würde.
Schreib doch was sinnvolles, da machts gleich noch mehr Spaß 😉
Aber ich weis nicht wie ich da anfangen soll^^ Bin erst seit 3 Tagen am bash lernen.
Bash-Skripting-Guide für Anfänger.
|
mxrvinpane
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 10
|
misterunknown schrieb: Schreib doch was sinnvolles, da machts gleich noch mehr Spaß 😉
Hast ne Idee was ich da z.b. machen könnte? ☺ & Jop,
ich soll nicht etwas verschlüsseln sondern etwas mit bash machen ^^
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
mxrvinpane schrieb: Hast ne Idee was ich da z.b. machen könnte? ☺ & Jop,
ich soll nicht etwas verschlüsseln sondern etwas mit bash machen ^^
Na der klassische Anwendungsfall ist ein kleines Backupskript, welches du immer mehr erweitern kannst. Erst sicherst du ein paar Files in ein Archiv. Dann kommt noch eine Datenbanksicherung dazu, oder Sicherung auf ein Netzlaufwerk etc. Da gibts zwar schon haufenweise Lösungen, aber beim selbst-bauen lernt man 😉 Und es gibt auch noch tausende andere Anwendungsfälle. Ich habe mir beispielsweise einen Wallpaper-Changer gebaut. Denk einfach nach, was du immer wiederkehrend tust (vom Ablauf her) oder welche Funktionen dir an irgendeiner Stelle fehlen. Für diese kannst du dann ein Bash-Skript schreiben.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
misterunknown schrieb:
Schreib doch was sinnvolles, da machts gleich noch mehr Spaß 😉
Nach 3 Tagen kann man nur spielerisches machen, was man keinem Dritten verkaufen könnte, ob das nun ein Backupscript ist oder eine Verschlüsselung. Da wir aber nicht wissen, was Du (TE) in den 3 Tagen gelernt hast, ist es sinnlos, dass wir das für Dich machen. Du sollst Wissen einsetzen, das Du gelernt hast, nicht solches, das wir gelernt haben.
|
klal
Anmeldungsdatum: 13. Januar 2007
Beiträge: 413
|
Hallo,
Deine selbst gewählte Aufgabe hat nichts mit Kryptographie zu tun.
Es geht um Buchstaben ersetzten.
Dafür gibt es schon Befehle.
Die einfache Variante (einzelne Zeichen, durch einzelne Zeichen): echo Katzenfutter123 | tr K 1 man tr so wie Du es möchtest: echo Katzenfutter | sed "s/K/13/g" man sed Grüße
Klal
|
mxrvinpane
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 10
|
klal schrieb: Hallo,
Deine selbst gewählte Aufgabe hat nichts mit Kryptographie zu tun.
Es geht um Buchstaben ersetzten.
Dafür gibt es schon Befehle.
Die einfache Variante (einzelne Zeichen, durch einzelne Zeichen): echo Katzenfutter123 | tr K 1 man tr so wie Du es möchtest: echo Katzenfutter | sed "s/K/13/g" man sed Grüße
Klal
Dankesehr, aber wie baue ich das nun in ein automatiesiertes Skript ein denn ich möchte ja
wenn man in die Shell dann "secret.sh Katzenfutter123" eingibt das dass Skript innen dann
alle K's zu 13en verwandelt oder alle a's zu 4ren usw. und dann am Ende wenn alle
Buchstaben umgewandelt sind >> verschlüsselt.txt erstellt. ☺ LG
mxrvinpane
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ok, also wirklich "secret" ist an so einem Skript natürlich gar nichts - da sind wir uns hoffentlich einig. Aber so einen Ersetzungscode kannst Du natürlich mit einem Shell-Skript machen, in das Du sozusagen ein sed -Skript einbettest: | #!/bin/bash
# "$1" = 1. Parameter: das was "verschlüsselt" werden soll
echo "$1" | sed '
s/K/13/g;
s/a/4/g;
' > verschlüsselt.txt
|
... aber Dir ist dabei klar, dass
das weder eine Verschlüsselung ist (sondern nur eine Teil-Substitution) und dass die Ersetzung auch nicht eindeutig ist, denn die "13" und die "4" können ja durchaus auch im Original vorkommen.
Aber darauf hatten Dich meine Vorredner ja auch schon hingewiesen. (Genaueres kannst Du ja mal im Wiki zur Verschlüsselung nachlesen.) LG, track p.s.: Falls Du noch andere Ideen suchst, was man so als Skript programmieren könnte, dann guck doch vielleicht einfach mal in der Liste hier im Wiki oder bei meiner Stoppuhr.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
klal schrieb: Hallo,
Deine selbst gewählte Aufgabe hat nichts mit Kryptographie zu tun.
Doch. Es ist zwei Spuren komplexer als die Cäsarverschlüsselung, nur hält sie eben keinen Hobbycryptologen auf. Mit sed wirst Du nicht weit kommen, weil es das erste Zeichen in späteren Befehlen, wenn diese das Zielzeichen behandeln (i-u) weiterbearbeiten (u-e):
| echo "2 Chinesen mit dem Kontrabass" | sed 's/i/u/g;s/a/o/g;s/u/e/g'
2 Chenesen met dem Kontroboss
|
tr kann nur 1:1 übersetzen:
| echo "2 Chinesen mit dem Kontrabass" | tr iau uoe
2 Chunesen mut dem Kontroboss
|
Wenn Du aber weniger Zeichen in der Eingabe hast, als in der Ausgabe Zeichenkombinationszeichen, dann kannst Du erst alle mit tr in ein Zwischenformat umwandeln, und dann das Zwischenformat mit sed zum gewünschten Ergebnis: | echo "2 Chinesen mit dem Kontrabass" | tr iau "u#e" | sed 's/#/13/g'
2 Chunesen mut dem Kontr13b13ss
|
|
frostschutz
Anmeldungsdatum: 18. November 2010
Beiträge: 7657
|
Ein pure bash Ansatz mit case ... schnubbelschlumpf.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | #!/bin/bash
plaintext="$1"
ciphertext=""
while [ ${#plaintext} -gt 0 ]
do
case "$plaintext" in
# 13 <-> K
13*)
ciphertext+='K'
plaintext=${plaintext:2}
;;
K*)
ciphertext+='13'
plaintext=${plaintext:1}
;;
# t <-> 7
t*)
ciphertext+='7'
plaintext=${plaintext:1}
;;
7*)
ciphertext+='t'
plaintext=${plaintext:1}
;;
# für alles was keine Ersetzung definiert hat:
*)
ciphertext+=${plaintext:0:1}
plaintext=${plaintext:1}
;;
esac
done
echo "$ciphertext"
|
Ausgabe mit Ver- und Entschlüsselung: $ ./schnubbelschlumpf.sh Katzenfutter123
13a7zenfu77er123
$ ./schnubbelschlumpf.sh 13a7zenfu77er123
Katzenfutter123 Weitere Verschlüsselungspaare (hier nur 13=K, t=7) kannst du dir dann dazuschreiben. Mit #!/bin/bash -x oder set -x kannst du dir die einzelnen Schritte bei der Ausführung anzeigen lassen.
|