Batchprogrammierung (Windows) - Rückgabewerte von GPG abfangen
Meine ersten Batchprogramme funktionieren zwar, aber gerade mal eben so ...
Ich habe mir zwei Skripts gebastelt, um meine Daten sicher auf einem USB-Stick herumtragen zu können. Skript 1 macht aus dem Ordner "protected" zuerst eine TAR-Datei und verschlüsselt diese sodann mit GPG die Datei "protected.tar.gpg" und löscht am Schluss den ursprünglichen Ordner.
Skript 2 machts umgekehrt: Entschlüsseln, entpacken und dann den Ordner an den ursprünglichen Ort kopieren.
Skript 1:
Skript 2:
Was ich in Skript 1 will: Nur wenn die Archivierung des Ordners erfolgreich war, soll der Ordner gelöscht werden. War die Archivierung nicht erfolgreich, dann soll ausgegeben werden: "Bei der Erzeugung des Tar-Files ist ein Fehler aufgetreten. Der Ordner wird nicht gelöscht."
Und nur wenn der Verschlüsselungsvorgang erfolgreich war, soll das Tar-File gelöscht werden. War die Verschlüsselung nicht erfolgreich, dann sollte ausgegeben werden: "Verschlüsselung nicht erfolgreich. Das Tar-File wird nicht gelöscht."
Analog möchte ich einen solchen Sicherheitsmechanismus auch in Skript 2.
Wie gehe ich das am besten an?
Carnap
Ich habe mir zwei Skripts gebastelt, um meine Daten sicher auf einem USB-Stick herumtragen zu können. Skript 1 macht aus dem Ordner "protected" zuerst eine TAR-Datei und verschlüsselt diese sodann mit GPG die Datei "protected.tar.gpg" und löscht am Schluss den ursprünglichen Ordner.
Skript 2 machts umgekehrt: Entschlüsseln, entpacken und dann den Ordner an den ursprünglichen Ort kopieren.
Skript 1:
M:
tar -c -f M:/protected.tar M:/data/protected
if errorlevel 0 echo Tar-File erfolgreich erzeugt.
else echo Erzeugung des TAR-Files fehlgeschlagen.
rd M:\data\protected /s /q
gpg --symmetric protected.tar
if errorlevel 0 echo Tar-File erfolgreich verschlüsselt.
del protected.tar
echo Der Ordner ist nun verchluesselt.
pause
Skript 2:
gpg --decrypt --output protected.tar protected.tar.gpg
tar -xvf protected.tar
xcopy M:\protected M:\data /k /r /e /i /s /c /h
del protected.tar
del protected.tar.gpg
echo Sie koennen nun arbeiten.
pause
Was ich in Skript 1 will: Nur wenn die Archivierung des Ordners erfolgreich war, soll der Ordner gelöscht werden. War die Archivierung nicht erfolgreich, dann soll ausgegeben werden: "Bei der Erzeugung des Tar-Files ist ein Fehler aufgetreten. Der Ordner wird nicht gelöscht."
Und nur wenn der Verschlüsselungsvorgang erfolgreich war, soll das Tar-File gelöscht werden. War die Verschlüsselung nicht erfolgreich, dann sollte ausgegeben werden: "Verschlüsselung nicht erfolgreich. Das Tar-File wird nicht gelöscht."
Analog möchte ich einen solchen Sicherheitsmechanismus auch in Skript 2.
Wie gehe ich das am besten an?
Carnap
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101893
Url: https://administrator.de/contentid/101893
Ausgedruckt am: 26.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Carnap!
Etwa so:
Mit "if errorlevel" erfolgt die Überprüfung immer nach "größer/gleich", sodass "if errorlevel 0" immer "true" ergibt - daher die Änderung auf "if errorlevel 1" ...
Grüße
bastla
Etwa so:
M:
tar -c -f M:/protected.tar M:/data/protected
if errorlevel 1 (
echo Erzeugung des TAR-Files fehlgeschlagen.
goto :Ende
) else (
echo Tar-File erfolgreich erzeugt.
rd M:\data\protected /s /q
)
gpg --symmetric protected.tar
if errorlevel 1 (
echo Verschluesselung nicht erfolgreich.
) else (
echo Tar-File erfolgreich verschlüsselt.
del protected.tar
echo Der Ordner ist nun verchluesselt.
)
:Ende
pause
Grüße
bastla
Zitat von @Carnap:
Ich habe mir zwei Skripts gebastelt, um meine Daten sicher auf einem
USB-Stick herumtragen zu können.
Hm, vom Ansatz her würde ich ein dickes Fragezeichen hinter das sicher machen. Wenn ich den Quellcode richtig überflogen habe, dann packst du das Verzeichnis, löscht das dann mit rd, verschlüsselst das Archiv, und löscht es dann mit del. Meine Frage: Warum verschlüsselst du die Datei, wenn du die Ausgangsdaten nicht sicher löscht. Wenn jemand deinen Stick klaut, dann kann er recht einfach die gelöschten Dateien wiederherstellen. So gelangt er an die Dateien, ohne deine Verschlüsselung angreifen zu müssen.Ich habe mir zwei Skripts gebastelt, um meine Daten sicher auf einem
USB-Stick herumtragen zu können.
Oder überschreibst du den leeren Platz auf dem Stick dann noch mit Zufallsmüll, dann hättest du das Problem natürlich gelöst.
Alternativ würde ich dir empfehlen, del und rd durch andere Programme zu ersetzen. Ich meine mal ein Programm names "ncrypt" oder so gesehen zu haben, was das machen kann.
Soll das ganze nur mit batch gehen, kann dir hier im Forum sicher weitergeholfen werden! Eine Batch, die zwar für paranoide wie mich sicher auch nicht zufriedenstellend ist, die ich aber mal für so ein Problem genutzt habe:
@echo off
setlocal
if exist "%~1" call :secDelete "%~1" & goto :end
echo Die Datei "%~1" konnte nicht gefunden werden. 1>&2
::Datei nicht gefunden, beendet mit Errorcode 1
exit /b 1
goto :end
:secDelete
set size=%~z1
echo Die Datei ist %size% groß.
::Die "Zufallszahlen" werden 1817 byte groß werden...
set /a rounds=%size%/1817
set /a rounds=%rounds%+1
echo Die Datei "%~1" wird jetzt sicher gelöscht...
echo Daten zum überschreiben werden ausgewürfelt...
call :makeRandomData
echo. >"%~1"
:rounds
echo rounds: %rounds%
if %rounds% LSS 1 del "%~1" & goto :eof
set /a rounds=%rounds%-1
goto :rounds
:makeRandomData
::bauen wir uns etwas Müll zusammen, den wir dann ýber die Datei schreiben
set /a loop += 1
if 2000 LSS %loop% set loop= & goto :eof
call :getRandom
set müll=%müll%%rand%
goto :makeRandomData
:getRandom
set /a rand=%random%
::Stellt sicher, dass dir Random nicht zu kurz sind
if %rand% LSS 10000 goto :getRandom
goto :eof
:end
endlocal
::kein Fehler aufgetreten, beendet mit Errorcode 0
exit /b 0
genau diesen Ansatz verfolgt meine Batch. Sie überschreibt die Datei mit Zufallsdaten. Ob das aber auf einem Flash-Speicher funktioniert, weiß ich nicht. Es wurde für Festplatten im klassischem Sinn "entwickelt".
Ich habe es gerade mal auf einer SD-Karte versucht. Ich habe einen Datei mit del gelöscht, und eine mit meiner Batch. Das Programm Undelete+ konnte die mit del gelöschte Datei wiederherstellen, die mit meiner Batch gelöschte Datei nicht. Sie scheint also schon mal besser zu sein, als sich gar keine Gedanken drüber zu machen.
Ich habe es gerade mal auf einer SD-Karte versucht. Ich habe einen Datei mit del gelöscht, und eine mit meiner Batch. Das Programm Undelete+ konnte die mit del gelöschte Datei wiederherstellen, die mit meiner Batch gelöschte Datei nicht. Sie scheint also schon mal besser zu sein, als sich gar keine Gedanken drüber zu machen.