Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1880to1884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

OpenSSL und Excel

OpenSSL und Excel
09.05.2022 15:04:54
Tobi@s
Hallo,
ich arbeite auf einer Behörde. Dienstlich bekommen wir von der Postbank CDs, welche per OpenSSL verschlüsselt wurden.
Dazu wurde bisher die cmd geöffnet, der Speicherpfad des Programms eingegeben und dann eine Befehlsfolge, die mit "openssl enc ..." anfängt und den Pfad der Datei, das Passwort und den Ausgabepfad für die (erwartete) csv-Datei.
Das funktioniert mit jedem Passwort.
Soweit so ... händisch :-).
Ich (als neuer Kollege) will das Ganze automatisieren. Soweit ... funktioniert auch alles, wenn ... ja, wenn die Passworte nicht immer mal Zeichen beinhalten, die "Sonderzeichen" sind. Da scheitert mein Problem.
Hier mal der Kern:

Open txt_Zielpfad & Name_BAT For Output As #1
Print #1, "C:"
Print #1, "cd \openssl\bin"
Print #1, "openssl enc -d -aes256 -in " & P_in & Dat_in & " -k " & PW & " -out " & P_out
Close #1
'Bat-Datei ausführen
Dim retVal
retVal = Shell(txt_Zielpfad & Name_BAT, 1)
mit dem Code erstellt mein Makro eine bat-Datei und schreibt in den ersten Zeilen von "Print" den Dateipfad des Programms rein (in einer Zeile mit "C:\openssl\bin" bekomme ich das nicht hin).
in der letzten Zeile werden die zuvor ausgewerteten Variablen P_in, Dat_in (für Pfad und Dateiname der verschlüsselten Datei), das PW (Passwort) und mit P_out die Ausgabedatei übergeben.
Problem: wenn im PW Zeichen wie "}" stehen ... erstellt er eine csv-Datei die nur (für mich) kryptischen Müll enthält :-).
Ich habe schon probiert, diese Zeichen zu maskieren mit "^" bzw. auch "das Sonderzeichen doppeln" (% --> %%) - bekomme es einfach nicht hin.
Jemand meinte, man könnte auch das so in die Datei schreiben, dass das "PW" (und so) als Variable gewertet wird, aber da kenne ich mich absolut nicht aus, wie ich das hinbekomme und ob es funktioniert.
Wenn ich einmal dabei bin ... auch funktioniert dieser Weg nur, wenn im Dateipfad keine Leerzeichen zu finden sind. Was müsste man tun, damit man auch Pfade nutzen kann, in denen sich Leerzeichen befinden? Ebenfalls mit Variablen irgendwie?
und wenn ich einmal dabei bin ... gibts evtl schon irgendwelche VBA-Module die mit openSSL spielen und die man frei nutzen kann? Ich hab bisher nichts (deutschsprachiges) gefunden.
Tobi@s

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OpenSSL und Excel
09.05.2022 15:53:36
Yal
Hallo Tobias,
so ein hohes ist es in solchen Beiträge auch nicht. Mit Schul-Englisch kommt man meistens zurecht.
http://exceldevelopmentplatform.blogspot.com/2017/11/use-vba-to-shell-openssl-console.html
Aber Du kannst mit Shell den Befehl direkt ausführen lassen, ohne über einen Batchdatei zu gehen:

Dim retVal
Dim Befehl As String
Const cPfad = "C:\openssl\bin\"
Const cBefehl = "openssl enc -d -aes256 -in xxPfad_in -k xxPW -out xxPfad_out"
Const cDatei_in = "das-is-meine-Eingangsdatei.csv.enc"
Const cDatei_out = "das-is-meine-Ausgangsdatei.csv"
Befehl = Replace(cBefehl, "xxPfad_in", cPfad & cDatei_in)
Befehl = Replace(Befehl, "xxPfad_out", cPfad & cDatei_out)
Befehl = Replace(Befehl, "xxPW", "123456")
retVal = Shell(Befehl, 1)
VG
Yal
Anzeige
AW: OpenSSL und Excel
10.05.2022 16:21:19
Tobi@s
Danke erstmal ...
"Mit Schul-Englisch kommt man meistens zurecht."
und da geht das Problem los :-)
so richtig funktioniert der code nicht. Vielleicht war auch noch ein Fehler in meiner Erklärung drin.
Der von dir in "cPfad" geschriebene Pfad ist der Pfad des Programms "OpenSSL" und hat nichts mit der Datei zu tun die ich entschlüsseln will. Von daher brauche ich "hinten" einen anderen Pfad (kein Problem, gelöst).
in der (von der Postbank geschriebenen Anleitung) steht, dass man die cmd öffnen muss, IN den Ordner von "OpenSSL" wechseln muss (mit "cd ...") und dort dann diesen (langen) Befehl ausführen muss. Und das funktioniert nicht, wenn ich dann den Shell-Befehl "so" aufrufe wie programmiert (und Variablen angepasst).
Ich habe deine Idee mit dem Replace mal so umgesetzt, dass ich es in "meinen Code" eingefügt habe. 4 von 5 Dateien hat er auf dem Wege encrypten können. Warum "nr 5" nicht - hab ich noch nicht raus gefunden. Die bat-Datei sieht "normal" aus. oder man muss halt die Sonderzeichen noch "maskieren", das probiere ich gleich mal. :-)
Anzeige
AW: OpenSSL und Excel
10.05.2022 17:07:25
Firmus
Hi Tobias,
bin mir nicht sicher, ob es zu deiner Problemstellung exakt passt.
Wenn ich die Befehl im CMD-Fenster aufrufe: DIR "C:\Users\FirmusW7\Documents\*.*"
dann werden enthaltene ÄÖÜ und diverse Sonderzeichen umgesetzt.
Ursache: Falsche Codepage verwendet.
Für richtiges Ergebnis gilt es dieses zu verwenden.
chcp 1250
DIR "C:\Users\FirmusW7\Documents\*.*"

Damit werden die ÄÖ.... richtig umgesetzt. Die Dateinamen stimmen dann.
Eventuelle ist die 1250 bei dir nicht die richtige, hier gibt die Auswahl
https://de.wikipedia.org/wiki/Windows-1250
Quelle:
https://www.vbarchiv.net/forum/read.php?id=2&t=137025&i=137025&v=f
Gruß,
Firmus
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige