nick2212
Goto Top

Textdatei verschlüsseln per Batch

Hi Leute ich wollte einmal fragen ob es eine Möglichkeit gibt, den Inhalt einer Textdatei per Batch zu verschlüsseln und später auch wieder zu entschlüsseln.
Also es geht mir nicht darum das der Text in der Datei total toll verschlüsselt ist,sondern eher darum das man ihn nicht einfach auslesen kann.
Und ich wollte fragen ob man das mit zwei verschiedenen Dateien machen kann?
Also die eine Batch entschlüsselt und die andere verschlüsselt.

Schon mal vielen Dank im Voraus.
LG Nick2212

Content-ID: 276068

Url: https://administrator.de/contentid/276068

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

emeriks
emeriks 30.06.2015 um 21:59:39 Uhr
Goto Top
Also es geht mir nicht darum das der Text in der Datei total toll verschlüsselt ist,sondern eher darum das man ihn nicht einfach auslesen kann.
Du willst ihn verschlüsseln aber nicht "total toll verschlüsseln"?
Aha. Kannst Du uns bitte mal erläutern, wo für Dich "total voll" anfängt?

Wenn es Dir darum geht, dass man bestimmte Dateien nur lesen darf, wenn man dazu berechtigt ist, dann kann man das auch mit NTFS-Berechtigungen erledigen.

E.
Nick2212
Nick2212 30.06.2015 um 22:46:53 Uhr
Goto Top
Also ich möchte die textdatei nicht aufwendig verschlüsseln sondern eher den Text in der Datei, und ich würde die Datei trotzdem gerne öffnen.
Also ich hatte mir das so vorgestellt, dass die Batch den Inhalt der textdatei liest und dann der Text in der Datei überschrieben wird.
Später kann die andere Batch dann den Text wieder auf den ursprünglichen Text zurücksetzen.

Es würde auch reichen wenn die Zeichen des Textes einfach gegen andere Zeichen ausgetauscht werden. Wobei es aber wichtig wäre, dass Zahlen und "-" unterstützt werden.
114757
Lösung 114757 30.06.2015, aktualisiert am 01.07.2015 um 15:13:36 Uhr
Goto Top
Moin,
nutz doch die NTFS Verschlüsselung und den CMD-Befehl cipher
https://technet.microsoft.com/de-de/library/bb490878.aspx

Verschlüsseln:
cipher /e /a "c:\datei.txt"
Entschlüsseln:
cipher /d /a "c:\datei.txt"
Gruß jodel32
Nick2212
Nick2212 01.07.2015 um 00:15:14 Uhr
Goto Top
Und da hat wer genau darauf Zugriff?
TlBERlUS
TlBERlUS 01.07.2015 um 08:09:06 Uhr
Goto Top
Moin,
Zitat von @Nick2212:
Und da hat wer genau darauf Zugriff?

Jeder, dem du nicht den Zugriff darauf verboten hast? -> siehe @emeriks

Grüße,

Tiberius
114757
114757 01.07.2015 aktualisiert um 08:25:35 Uhr
Goto Top
Zitat von @Nick2212:
Und da hat wer genau darauf Zugriff?
Einmal kurz gelesen, und du bist schlauer... http://www.different-thinking.de/efs.php
AnkhMorpork
AnkhMorpork 01.07.2015 um 09:05:21 Uhr
Goto Top
Nick2212
Nick2212 01.07.2015 aktualisiert um 09:14:17 Uhr
Goto Top
Aber soweit ich das verstanden habe kann damit nur mein Benutzer die Datei überhaupt lesen.
Oder kann ich die Datei auch auf anderen Rechnern auslesen und dann aber nur mit meinem Windows Passwort?
@114757
emeriks
emeriks 01.07.2015, aktualisiert am 05.06.2019 um 08:27:26 Uhr
Goto Top
Hi,
cipher verschlüsselt über EFS. EFS Verschlüsselung erfolgt unter Verwendung von Zertifikaten. Jeder Benutzer, welcher dieses Zertifikat samt privaten Schlüssel in seinem Profil installiert hat, kann diese Datei lesen und ändern. Vorausgesetzt, er hat die NTFS-Berechtiungen dafür.

Bei der Variante mit Powershell kann jeder die Datei entschlüsseln, der weiß, womit sie verschlüsselt wurde und der den entsprechenden Schlüssel hat.

E.
TlBERlUS
TlBERlUS 01.07.2015 um 09:36:25 Uhr
Goto Top
Du könntest sie auch mit 7zip verschlüsseln, dann kannst du die Datei überall auslesen...
DerWoWusste
DerWoWusste 01.07.2015 um 10:26:36 Uhr
Goto Top
Hi.

Man könnte..., man könnte... tausend schöne Dinge tun.
Aber wozu? Gegen was schützt Du DIch denn damit? Wer würde sonst dort mitlesen und wie?
colinardo
Lösung colinardo 01.07.2015, aktualisiert am 02.07.2015 um 17:06:15 Uhr
Goto Top
Zitat von @emeriks:
Bei der Variante mit Powershell kann jeder die datei entschlüsseln, der weiß, womit sie verschlüsselt wurde und
der den entsprechenden Schlüssel hat.
Hat da jemand Powershell geflüstert face-wink
function Encrypt-String($plaintext,$password,$salt='jj3h4h5+tbbj2j281273#+', $init='j3j35&#*23kkk35!'){  
    $p = new-Object System.Security.Cryptography.AesManaged
	$p.Key = (new-Object Security.Cryptography.PasswordDeriveBytes ([Text.Encoding]::UTF8.GetBytes($password)), ([Text.Encoding]::UTF8.GetBytes($salt)), "SHA1", 5).GetBytes(32) #256/8  
	$p.IV = (new-Object Security.Cryptography.SHA1Managed).ComputeHash( [Text.Encoding]::UTF8.GetBytes($init) )[0..15]
    $encryptor = $p.CreateEncryptor()
    $msEncrypt = New-Object IO.MemoryStream
    $csEncrypt = New-Object Security.Cryptography.CryptoStream $msEncrypt,$encryptor,"Write"  
    $swEncrypt = New-Object IO.StreamWriter $csEncrypt
    $swEncrypt.Write($plaintext)
    $swEncrypt.Close()
    $csEncrypt.Close()
    $msEncrypt.Close()
    $p.Clear()
    [byte[]]$result = $msEncrypt.toArray()
    return [Convert]::ToBase64String($result)
}
function Decrypt-String($string,$password,$salt='jj3h4h5+tbbj2j281273#+', $init='j3j35&#*23kkk35!'){  
    $p = new-Object System.Security.Cryptography.AesManaged
    $p.Key = (new-Object Security.Cryptography.PasswordDeriveBytes ([Text.Encoding]::UTF8.GetBytes($password)), ([Text.Encoding]::UTF8.GetBytes($salt)), "SHA1", 5).GetBytes(32) #256/8  
	$p.IV = (new-Object Security.Cryptography.SHA1Managed).ComputeHash( [Text.Encoding]::UTF8.GetBytes($init) )[0..15]
    $decryptor = $p.CreateDecryptor()
    $msDecrypt = New-Object IO.MemoryStream @(,([Convert]::FromBase64String($string)))
    $csDecrypt = New-Object Security.Cryptography.CryptoStream $msDecrypt,$decryptor,"Read"  
    $srDecrypt = New-Object IO.StreamReader $csDecrypt
    [string]$result = $srDecrypt.ReadtoEnd()
    $srDecrypt.Close()
    $csDecrypt.Close()
    $msDecrypt.Close()
    $p.Clear()
    return $result
}


# Secrets
$salt = "h23hh4h8sdfz823bkj234))(7lsdf"  
$init = "hshh3w4gh34k*'#sfjo34"  
$pass = 'MySecret'  

# Text der verschlüsselt werden soll
$myplainText = 'Das ist ein ganz geheimer Text'  

# Verschlüsseln
$encrypted = Encrypt-String -plaintext $myplainText -salt $salt -init $init -password $pass
write-host "Encrypted String: $encrypted"  

# Entschlüsseln
$decrypted = Decrypt-String -string $encrypted -salt $salt -init $init -password $pass
write-host "Decrypted String: $decrypted"  
Grüße Uwe
TlBERlUS
TlBERlUS 01.07.2015 aktualisiert um 11:26:50 Uhr
Goto Top
Zitat von @colinardo:
Hat da jemand Powershell geflüstert face-wink

Hast du dir konfiguriert, dass du Benachrichtigungen bekommst, sobald jemand etwas von Powershell schreibt? face-smile

Grüße,

Tiberius
colinardo
colinardo 01.07.2015 aktualisiert um 11:34:24 Uhr
Goto Top
Zitat von @TlBERlUS:
Hast du dir konfiguriert, dass du Benachrichtigungen bekommst, sobald jemand etwas von Powershell schreibt? face-smile
Sowas habe ich tatsächlich (auch als Powershell-Script face-smile), wenn ich Zeit habe schau ich dann ab und zu mal auf die Liste. Im Moment hab ich aber eher weniger Zeit ..
emeriks
emeriks 01.07.2015 um 11:34:57 Uhr
Goto Top
@colinardo
... ich wusste es! face-wink
AnkhMorpork
AnkhMorpork 01.07.2015 um 12:00:58 Uhr
Goto Top
Zitat von @emeriks:

Bei der Variante mit Powershell kann jeder die datei entschlüsseln, der weiß, womit sie verschlüsselt wurde und
der den entsprechenden Schlüssel hat.

Klar, dann kann das jeder Vollhonk. face-smile

Das größte Problem bei Batch-Varianten ist, dass das Passwort immer irgendwo im Klartext auftaucht (sog. Batch-Fluch face-wink ), auch beim berüchtigten Bat2Exe-Gedöns.

Diese Methode ist auch scherzig:
https://tobivnext.wordpress.com/2012/06/18/powershell-cmdlet-zum-auslese ...

Gruß

Ankh
TlBERlUS
TlBERlUS 01.07.2015 um 12:54:06 Uhr
Goto Top
Zitat von @colinardo:

> Zitat von @TlBERlUS:
> Hast du dir konfiguriert, dass du Benachrichtigungen bekommst, sobald jemand etwas von Powershell schreibt? face-smile
Sowas habe ich tatsächlich (auch als Powershell-Script face-smile), wenn ich Zeit habe schau ich dann ab und zu mal auf die
Liste. Im Moment hab ich aber eher weniger Zeit ..

Das erklärt so einiges O.o
Nick2212
Nick2212 01.07.2015 um 13:07:24 Uhr
Goto Top
Das würde mich ja garnicht stören es geht nur darum dass niemand (auch ich nicht) ohne passwort den richtigen text lesen kann.
Und wenn man das in der exe lesen kann wäre es nicht ganz so schlimm.
AnkhMorpork
AnkhMorpork 01.07.2015 um 13:21:07 Uhr
Goto Top
Zitat von @Nick2212:

Das würde mich ja garnicht stören es geht nur darum dass niemand (auch ich nicht) ohne passwort den richtigen text lesen
kann.
Und wenn man das in der exe lesen kann wäre es nicht ganz so schlimm.

Es wäre von Vorteil, wenn du den Beitrag, auf den du dich beziehst, auch zitierst. So lässt sich das nur schwer zuordnen - hängt irgendwie in der Luft.

Ankh
DerWoWusste
DerWoWusste 01.07.2015 aktualisiert um 13:54:54 Uhr
Goto Top
es geht nur darum dass niemand (auch ich nicht) ohne passwort den richtigen text lesen kann.
Das ist leicht paranoid. Dann muss der Text schon so bedeutsam sein, wie eine Kennwortdatenbank, oder vielleicht der Schlüssel zu den Kronjuwelen.

Normalerweise schützt man Text, den man öfter ansieht, der aber sehr schützenswert ist, nur durch die üblichen Mechanismen:
-Platte verschlüsselt, Nutzerkennwort gesetzt, Bildschirm wird bei Abwesenheit gesperrt.

Wenn Du meinst, etwas darüber hinaus machen zu müssen, müsstest Du zuvor noch ganz andere Maßnahmen ergreifen, denn sonst ist das vergebliche Mühe.
eisbein
eisbein 02.07.2015 aktualisiert um 16:14:59 Uhr
Goto Top
Mahlzeit!

es geht nur darum dass niemand (auch ich nicht) ohne passwort den richtigen text lesen kann.

Ich bin vielleicht altmodisch, aber ich bin stolzer Besitzer eines dieser Hi-Tech-USB-Sticks und der hängt mir um den Hals face-wink

Es gäbe da an mir aber sich auch nach andere Aufbewahrungsorte, wo nicht so schnell wer unbemerkt hinfasst.

Gruß
Eisbein
aqui
aqui 02.07.2015 um 16:24:12 Uhr
Goto Top
Das würde mich ja garnicht stören es geht nur darum dass niemand (auch ich nicht) ohne passwort den richtigen text lesen kann. Und wenn man das in der exe lesen kann wäre es nicht ganz so schlimm.
Die Lösung hast du ja nun vom Kollegen colinardo oben auf dem Silbertablett serviert bekommen !
Auf "Gelöst" ist ja eh geklickt...also alles gut.
gestriger
gestriger 01.06.2019 um 07:48:00 Uhr
Goto Top
Hey, ich wollte mal fragen, (bin nicht allzu bewandert was das angeht), wie kriege ich den Decrypted-Text raus wenn ich nur den Encrypted Text hab?
colinardo
colinardo 01.06.2019 aktualisiert um 08:07:48 Uhr
Goto Top
Zitat von @gestriger:

Hey, ich wollte mal fragen, (bin nicht allzu bewandert was das angeht), wie kriege ich den Decrypted-Text raus wenn ich nur den Encrypted Text hab?
Ohne Passwort, Salt und Init, garnicht.
Dann wäre Verschlüsselung ja obsolet wenn es sowieso jeder dechifrieren könnte.
gestriger
gestriger 01.06.2019 um 08:52:18 Uhr
Goto Top
Ne, ich meine wenn man pass salt und init hat, und das Encrypted aber nicht das decrypted. Wie macht man das sdann im Scrypt?
colinardo
colinardo 01.06.2019 aktualisiert um 09:03:51 Uhr
Goto Top
Zitat von @gestriger:

Ne, ich meine wenn man pass salt und init hat, und das Encrypted aber nicht das decrypted. Wie macht man das sdann im Scrypt?
Öhm, das steht doch oben im Beispiel im Abschnitt "Entschlüsseln", einfach mal komplett lesen würde ich dir empfehlen.
$encrypted = ".................."  
# Entschlüsseln
$decrypted = Decrypt-String -string $encrypted -salt $salt -init $init -password $pass
write-host "Decrypted String: $decrypted"  
gestriger
gestriger 05.06.2019 aktualisiert um 07:26:33 Uhr
Goto Top
Na Hoppala. Danke! Ne Warte. Aber oben in deinem Scrypt steht das mit dem ="...." doch gar nicht. Soll ich das dann dazuschreiben?
colinardo
colinardo 05.06.2019 aktualisiert um 07:55:33 Uhr
Goto Top
Zitat von @gestriger:

Na Hoppala. Danke! Ne Warte. Aber oben in deinem Scrypt steht das mit dem ="...." doch gar nicht. Soll ich das dann dazuschreiben?
Oh man, die Punkte ersetzt du natürlich durch deinen bereits verschlüsselten String! Also so blöd kann man sich doch nun wirklich nicht anstellen face-sad.
emeriks
emeriks 05.06.2019 um 08:32:08 Uhr
Goto Top
Zitat von @colinardo:
Oh man, die Punkte ersetzt du natürlich durch deinen bereits verschlüsselten String! Also so blöd kann man sich doch nun wirklich nicht anstellen face-sad.
Der Freitag naht ...
gestriger
gestriger 05.06.2019 um 08:37:43 Uhr
Goto Top
Dass man die Punkte durch DEN string ersetzt war mir doch schon bewusst.
gestriger
gestriger 05.06.2019 um 12:35:28 Uhr
Goto Top
Ich hab es genau so gemacht, nur dass dann in Powershell der Decrypted String: $decrypted" in der letzten Zeile deaktiviert und der Output ist leer. Kannst du es mir genau erklären?