Hallo AutoIt-Programmierer,
ich möchte mal gerne wissen, ob man mit AutoIt Dateien, wie z.B. .txt, jpg, exe, usw. in eine Container-Datei, mit einer eigene Dateiendung, wie z.B. .test (als Beispiel) speichern und verschlüsseln kann?
MfG
MehmeX
Hallo AutoIt-Programmierer,
ich möchte mal gerne wissen, ob man mit AutoIt Dateien, wie z.B. .txt, jpg, exe, usw. in eine Container-Datei, mit einer eigene Dateiendung, wie z.B. .test (als Beispiel) speichern und verschlüsseln kann?
MfG
MehmeX
Erstelle mit FileWrite eine neue Datei und schreibe da den mit z.B. _StringEncrypt verschlüsselten Text der zu packenden Datei rein ;).
Aber wozu das Rad neu erfinden? Es gibt bereits zip, rar etc.
Erstelle mit FileWrite eine neue Datei und schreibe da den mit z.B. _StringEncrypt verschlüsselten Text der zu packenden Datei rein ;).
Aber wozu das Rad neu erfinden? Es gibt bereits zip, rar etc.
Wer das Rad nicht neu erfindet, kann es auch nicht verbessern.
Ausserdem ist das schon nützlich, wenn man sich zum Beispiel ein Tagebuch coded, will man ja nicht jeden Eintrag mit ZIP kompressen müssen - dafür ist AutoIt doch da.
Ups, ich dachte es geht auch darum mehrere Dateien in eine packen zu können.
Dann ist es natürlich einfacher eine verschlüsselte Datei z.B. in einer Ini Struktur zu erstellen.
Wenn ich eine Datei mit _Stringencrypt() verschlüssele, dann wird z.B. die 10 KB-Datei zu eine 20 oder 30 KB. Gibt es nicht eine andere Lösung, also die gelesene Datei (Binär einlesen) und es in eine neue Datei schreiben und diese dann extra verschlüsseln? Oder muss ich den gesamten Binärcode verschlüsseln, also mit _Stringencrypt()?
ZitatWenn ich eine Datei mit _Stringencrypt() verschlüssele, dann wird z.B. die 10 KB-Datei zu eine 20 oder 30 KB. Gibt es nicht eine andere Lösung, also die gelesene Datei (Binär einlesen) und es in eine neue Datei schreiben und diese dann extra verschlüsseln? Oder muss ich den gesamten Binärcode verschlüsseln, also mit _Stringencrypt()?
Wenn du mit StringEncrypt arbeitest wird die Datei in jedem Fall größer ;).
die Crypt UDF ist recht gut ... hab damit auch mal versucht dateien zu verschlüsseln und das ging echt wahnsinnig schnell ...
die Crypt UDF ist recht gut ... hab damit auch mal versucht dateien zu verschlüsseln und das ging echt wahnsinnig schnell ...
Is ja klar die Crypt UDF ist eine Dll, die String Encrypt UDF ist pur in AutoIt geschrieben
Hi,
wenn du reinen Text verschlüsseln möchtest, könntest du 7- oder sogar 6-Bit statt der "üblichen" 8 Bit für eine Buchstabendarstellung benutzen. Dadurch spart man schon (bei 7 statt 8 Bit) 12,5% ein, und eine "Verschlüsselung" bekommt man gewissermassen automatisch dazugeschenkt.
Man ermittelt den Ascii-code der Buchstaben, wandelt die so erhaltene Zahl in 8-Bit, streicht das achte Bit und schreibt alle so erhaltenen Bits hintereinander. Dann wird diese Bitfolge wieder in 8 Bit-"Stücke" aufgeteilt und diese dann wiederum in eine Zahl bzw Ascii-code umgewandelt.
$text=inputbox("Verschlüsselung 8 nach 7 Bit","Bitte Text eingeben:","Dieser Text ist mit 7-Bit verschlüsselt")
[/autoit] [autoit][/autoit] [autoit]$siebenbit=ascii2siebenbit($text) ;aus dem 8-bit text einen "7-bit"-binärstring machen
MsgBox(262144,'7-Bit-Binärstring erstellen','Selection:' & @lf & '$siebenbit' & @lf & @lf & 'Return:' & @lf & $siebenbit) ;### Debug MSGBOX
$codiert=bin2ascii($siebenbit) ;Binärstring als 8-bit-ascii darstellen
MsgBox(262144,'7-Bit-Binärstring als 8-Bit darstellen (Codierter Text)','Selection:' & @lf & '$codiert' & @lf & @lf & 'Return:' & @lf & $codiert) ;### Debug MSGBOX
$dekodiert=siebenbit2achtbitascii($codiert);aus 7-Bit wieder 8-bit-text machen
MsgBox(262144,'aus dem 8-Bit-Text wieder 7-Bit-Text machen und darstellen' ,'Selection:' & @lf & '$dekodiert' & @lf & @lf & 'Return:' & @lf & $dekodiert) ;### Debug MSGBOX
func siebenbit2achtbitascii($siebenbit_string)
$binaerstring=ascii2bin($siebenbit_string) ;asciizeichen in binärstring umwandeln
$step = 7 ;7-Bit ASCII Buchstaben
$ascii_string = "" ;Rückgabestring
For $f = 1 To StringLen($binaerstring) Step $step ;string von Vorne nach hinten 7-bitweise durchsuchen
$t = StringMid($binaerstring, $f, $step) ; 7-Bit-Wort, ein ASCII-Buchstabe
$bin = 0 ;startwert für
For $i = 1 To $step ;jedes Bit suchen
If StringMid($t, $i, 1) = "1" Then $bin += (2 ^ ($step - $i)) ;wenn Bit=1 dann binärzahl=binärzahl+2^(8-Bitposition)
Next
$ascii_string &= Chr($bin) ;aus der zahl einen buchstaben machen
Next
Return $ascii_string
endfunc
func ascii2siebenbit($text) ;aus 8-bit ascii einen 7-bit binärstring machen
$bin_string=""
for $x=1 to stringlen($text) ;jeden buchstaben im text umwandeln
$asciicode=asc(stringmid($text,$x,1)) ;ascii-code des buchstaben ermitteln
for $i=6 to 0 step -1 ;asciicode in SIEBEN bits (das 8. bit wird nicht beachtet!)
if bitand($asciicode,2^$i) then ;alle bits hintereinander schreiben
$bin_string&="1"
else
$bin_string&="0"
endif
next
Next
return $bin_string
endfunc
Func bin2ascii($bin_string) ;string aus nullen und einsen in 8-bit-ascii text string umwandeln
$step = 8 ;8-Bit ASCII Buchstaben
$ascii_string = "" ;Rückgabestring
For $f = 1 To StringLen($bin_string) Step $step ;string von Vorne nach hinten 8-bitweise durchsuchen
$t = StringMid($bin_string, $f, $step) ; 8-Bit-Wort, ein ASCII-Buchstabe
$bin = 0 ;startwert für
For $i = 1 To $step ;jedes Bit suchen
If StringMid($t, $i, 1) = "1" Then $bin += (2 ^ ($step - $i)) ;wenn Bit=1 dann binärzahl=binärzahl+2^(8-Bitposition)
Next
$ascii_string &= Chr($bin)
Next
Return $ascii_string
EndFunc ;==>bin2ascii
func ascii2bin($ascii_string) ;ascii in binärstring darstellen
$step=8 ;8-Bit ASCII Buchstaben
$bin_string=""
for $t=1 to stringlen($ascii_string) ;jeden Buchstaben im String
$asciicode=asc(stringmid($ascii_string,$t,1)) ;in asciicode umwandeln
for $i=7 to 0 step -1 ;asciicode in bits
if bitand($asciicode,2^$i) then
$bin_string&="1"
else
$bin_string&="0"
endif
next
next
return $bin_string
endfunc
Die Funktionen ascii2bin() und bin2ascii() hatte ich mal HIER vorgestellt.
Hausaufgabe:
Schreibe das Script so um, daß auch Ascii-Zeichen größer als 127 (z.B. die Umlaute äöü oder ß) in 7 bit codiert bzw dekodiert werden? (TIP: es gibt in der Ascii-code Tabelle Zeichen kleiner als 32, die idR nie in "normalem" Text genutzt werden)
Hier was aus dem engl. Forum: FAF Archive format
Slm,
UEZ
Die "billigste", schnellste, sicherste und auch 100% unknackbare Verschlüsselung erfolgt simpelst per XOR und einem Zufallsschlüssel. Dabei bleibt die Größe der zu verschlüsselnden Datei gleich. Ein nochmaliges XOR der verschlüsselten Datei mit dem Schlüssel erzeugt wieder die Ursprungddatei.
Nun kann man, genau wie bei allen anderen Verschlüsselungsmethoden auch, versuchen die Schlüssellänge auf ein handhabbares Maß zu verkleinern. Da bieten sich dann Rotations- oder Austauschmethoden an, bei denen der "kurze" Schlüssel zu einem "langen" Schlüssel wird.
So könnte man bspw, aus dem Schlüssel "Test" einfach den längeren Schlüssel "TestTestTest" oder "TTTeeesssttt" oder "TestestTstTe" oder oder oder machen, und diesen dann per XOR mit dem Ursprung verschlüsseln.
$text="Dies ist ein verschlüsselter Text!"
$Passwort="AutoIt"
$crypt=_XOR_Crypt($text,$passwort)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$crypt' & @lf & @lf & 'Return:' & @lf & $crypt) ;### Debug MSGBOX
$text=_XOR_Crypt($crypt,$passwort)
MsgBox(262144,'Debug line ~' & @ScriptLineNumber,'Selection:' & @lf & '$text' & @lf & @lf & 'Return:' & @lf & $text) ;### Debug MSGBOX
func _XOR_Crypt($file,$pass) ;kodieren und dekodieren per XOR
$crypt=""
for $i=1 to stringlen($file)
$crypt&=chr(BitXOR(asc(stringmid($file,$i,1)),asc(stringmid($pass,mod($i,stringlen($pass)),1))))
next
return $crypt
endfunc
Danke für eure Antworten. Ich werde mich mal damit beschäftigen.