Top-Themen

Aktuelle Themen (A bis Z)

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, 5884 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 ..
Ähnliche Inhalte
Visual Studio
Rückgabewerte von Funktionen
Frage von MarcoBornVisual Studio9 Kommentare

Hallo Forum, ich schreibe gerade in VB.NET eine Funktion, die als Rückgabewert einen Double-Wert zurückliefert. Wenn jedoch vom Nutzer ...

Visual Studio
Tastatureingaben abfangen
gelöst Frage von joehuabaVisual Studio7 Kommentare

Hallo Zusammen, ich hab folgendes Problem: Ich fange mit einem Programm bestimmte Tastenkombinationen ab. Das funktioniert auch soweit. Allerdings ...

Python
Rückgabewert von MySQL-Funktion
gelöst Frage von NativeModePython4 Kommentare

Hallo, ich habe für eine mySQL-Abfrage eine eigene Funktion erstellt und abgespeichert: Soweit so gut, das funktioniert wenn ich ...

Microsoft Office
Excel bei bestimmten Werten einen Rückgabewert
gelöst Frage von easy4breezyMicrosoft Office2 Kommentare

Hi Leute, es geht sozusagen um ein Ticketsystem mit Prioritäten. Die 3 Prioritäten sind Low, Medium und High, die ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 6 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 10 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware8 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...