Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batchprogrammierung (Windows) - Rückgabewerte von GPG abfangen

Frage Entwicklung Batch & Shell

Mitglied: Carnap

Carnap (Level 1) - Jetzt verbinden

15.11.2008, aktualisiert 17.11.2008, 5808 Aufrufe, 4 Kommentare

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:
01.
M:  
02.
tar -c -f M:/protected.tar M:/data/protected 
03.
if errorlevel 0 echo Tar-File erfolgreich erzeugt. 
04.
else echo Erzeugung des TAR-Files fehlgeschlagen. 
05.
rd M:\data\protected /s /q  
06.
gpg --symmetric protected.tar 
07.
if errorlevel 0 echo Tar-File erfolgreich verschlüsselt. 
08.
del protected.tar 
09.
echo Der Ordner ist nun verchluesselt. 
10.
pause
Skript 2:
01.
gpg --decrypt --output protected.tar protected.tar.gpg 
02.
tar -xvf protected.tar 
03.
xcopy M:\protected M:\data /k /r /e /i /s /c /h 
04.
del protected.tar 
05.
del protected.tar.gpg 
06.
echo Sie koennen nun arbeiten. 
07.
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
Mitglied: bastla
15.11.2008 um 10:14 Uhr
Hallo Carnap!

Etwa so:
01.
M:  
02.
tar -c -f M:/protected.tar M:/data/protected 
03.
if errorlevel 1 ( 
04.
    echo Erzeugung des TAR-Files fehlgeschlagen. 
05.
    goto :Ende 
06.
) else ( 
07.
    echo Tar-File erfolgreich erzeugt. 
08.
    rd M:\data\protected /s /q 
09.
10.
 
11.
gpg --symmetric protected.tar 
12.
if errorlevel 1 ( 
13.
    echo Verschluesselung nicht erfolgreich. 
14.
) else ( 
15.
    echo Tar-File erfolgreich verschlüsselt. 
16.
    del protected.tar 
17.
    echo Der Ordner ist nun verchluesselt. 
18.
19.
 
20.
:Ende 
21.
pause
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
Bitte warten ..
Mitglied: Ren
16.11.2008 um 14:22 Uhr
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.
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:
01.
@echo off 
02.
setlocal 
03.
if exist "%~1" call :secDelete "%~1" & goto :end 
04.
echo Die Datei "%~1" konnte nicht gefunden werden. 1>&2 
05.
::Datei nicht gefunden, beendet mit Errorcode 1 
06.
exit /b 1 
07.
goto :end 
08.
 
09.
:secDelete 
10.
set size=%~z1 
11.
echo Die Datei ist %size% groß. 
12.
::Die "Zufallszahlen" werden 1817 byte groß werden... 
13.
set /a rounds=%size%/1817 
14.
set /a rounds=%rounds%+1 
15.
echo Die Datei "%~1" wird jetzt sicher gelöscht... 
16.
echo Daten zum  überschreiben werden ausgewürfelt... 
17.
call :makeRandomData 
18.
echo. >"%~1" 
19.
:rounds 
20.
echo rounds: %rounds% 
21.
if %rounds% LSS 1 del "%~1" & goto :eof 
22.
set /a rounds=%rounds%-1 
23.
goto :rounds 
24.
 
25.
:makeRandomData 
26.
::bauen wir uns etwas Müll zusammen, den wir dann ýber die Datei schreiben 
27.
set /a loop += 1 
28.
if 2000 LSS %loop% set loop= & goto :eof 
29.
call :getRandom 
30.
set müll=%müll%%rand% 
31.
goto :makeRandomData 
32.
 
33.
:getRandom 
34.
set /a rand=%random% 
35.
::Stellt sicher, dass dir Random nicht zu kurz sind 
36.
if %rand% LSS 10000 goto :getRandom 
37.
goto :eof 
38.
 
39.
:end 
40.
endlocal 
41.
::kein Fehler aufgetreten, beendet mit Errorcode 0 
42.
exit /b 0
Die Batch ist eigentlich uralt, ich habe gerade aber mal die größten Schnitzer, die mir aufgefallen sind, herausgenommen. Für Kritik bin ich offen, wenn sich jemand mit dem Thema "Dateien sicher löschen" auskennt, darf er mir gerne sagen, was er davon hält.
Bitte warten ..
Mitglied: Carnap
16.11.2008 um 16:40 Uhr
Hallo ren, hallo bastla,

besten Dank euch beiden für die Code-Vorschläge. Sieht ja sehr gut aus.

bastla: ich werde das ausprobieren, sobald ich wieder zu Hause bin.

ren: Du hast Recht, mir ist es einmal um ein funktionierendes Skript gegangen. Das mit dem Löschen von Dateien auf dem Stick ist sowieso ein Problem, siehe:
http://en.wikipedia.org/wiki/Wear_levelling
http://de.wikipedia.org/wiki/Solid_State_Drive
www.corsair.com/_faq/FAQ_flash_drive_wear_leveling.pdf

Ich experimentiere gerade mit cipher.exe. Das Programm überschreibt leeren Platz auf dem Stick:
http://blog.danielhahn.eu/2008/sicheres-loeschen-mit-windows-bordmittel ...

Mir ist auch einmal eine Idee untergekommen: Die zu löschende Datei vorher öffnen, Inhalt löschen und dann mit lauter Nullen beschreiben, abspeichern und erst dann löschen.
So steht in der datei nichts Relevantes drinnen, wenn sie wirklich restauriert werden können sollte.

Mein Problem wird aber die Performance des Ganzen sein. Aber darüber zerbreche ich mir derzeit noch nicht den Kopf. Ich will etwas lernen dabei.

lg Carnap
Bitte warten ..
Mitglied: Ren
17.11.2008 um 11:48 Uhr
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.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...