Heute ist ein schöner tag zum programmieren
& da ich euch nur zugerne erneut heute begehre komme ich schnell mal zur Sache.
Ich habe mitbekommen das diese RC4 Func von heute früh etwas langsam arbeitet wenn die datei 1mb< ist, also arbeite ich jetzt mit Autoits <Crypt.au3>.
Ich kam auf die idee dateien zu binden, das fand ich ist eine fazinierende Übung. Also saß ich einige Zeit daran verschiedene Dinge zu binden & somit auch 2 Text dateien. Eine Hauptdatei(FILE1.txt) unverschlüsselt mit einer (FILE2.txt->Base64->RC4) verschlüsselten datei. Damit ein Trenner die beiden dateien erkennt habe ich eine art Trennwand erstellt die im script so aussieht: "-=TESTME=-"
getrennt habe ich das ganze mit 'StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)' allerdings schmeißt mir StringMid irgend ein ramsch raus der laut IsBinar nicht binär ist. Ich habe eine menge herumexprimentiert komme aber nicht dahinter. Schlussendlich versuche ich die Dateien wieder zu trennen.
Das script sieht sicher genauso Ramsch aus wie der Output von StringMid, aber ehrlich gesagt habe ich es soweit ich konnte separiert um fehler zu entschlüsseln. Ich komme da aber nicht weiter.
Spoiler anzeigen
#include <Crypt.au3>
#include "_Base64.au3"
;encode
$1 = @ScriptDir & "\1\FILE1.txt"
$2 = FileOpen($1,16)
$3 = FileRead($2)
$4 = _Base64Encode(BinaryToString($3))
FileDelete(@ScriptDir & "\1\1BaseE.txt")
$5 = FileOpen(@ScriptDir & "\1\1BaseE.txt", 16+1)
FileWrite($5, $4)
FileClose($5)
$1 = @ScriptDir & "\1\1BaseE.txt"
$2 = FileOpen($1,16)
$3 = FileRead($2)
_Crypt_Startup()
Local $iAlgorithm = $CALG_RC4
Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
Local $bEncrypted = _Crypt_EncryptData($3, $g_hKey, $CALG_USERKEY)
_Crypt_DestroyKey($g_hKey)
_Crypt_Shutdown()
FileDelete(@ScriptDir & "\1\2RC4E.txt")
$AFsave2 = FileOpen(@ScriptDir & "\1\2RC4E.txt", 16+1)
FileWrite($AFSave2, $bEncrypted)
FileClose($1)
$ZS = FileRead(FileOpen(@ScriptDir & "\1\FILE2.txt",16))
$ZCR = FileRead(FileOpen(@ScriptDir & "\1\2RC4E.txt", 16))
FileDelete(@ScriptDir & "\1\3BIND.txt")
$Z1 = FileOpen(@ScriptDir & "\1\3BIND.txt", 16+1)
FileWrite($Z1, $ZS)
FileWrite($Z1,StringToBinary("-=TESTME=-"))
FileWrite($Z1, $ZCR)
FileClose($Z1)
;decode
$DS = FileRead(FileOpen(@ScriptDir & "\1\3BIND.txt", 16))
$sSeparatedData = StringMid($DS, StringInStr($DS, "-=TESTME=-") + StringLen("-=TESTME=-"),-1)
FileDelete(@ScriptDir & "\1\5RC4.txt")
$DO = FileOpen(@ScriptDir & "\1\5RC4.txt",16+1)
FileWrite($DO, $sSeparatedData)
FileClose($DO)
$1 = FileOpen(@ScriptDir & "\1\5RC4.txt", 16)
$2 = FileRead($1)
_Crypt_Startup()
Local $g_hKey = _Crypt_DeriveKey("TestPassword", $iAlgorithm)
$sDecryptedData = _Crypt_DecryptData($2, $g_hKey, $CALG_RC4)
_Crypt_DestroyKey($g_hKey)
_Crypt_Shutdown()
FileClose($1)
FileDelete(@ScriptDir & "\1\6BaseD.txt")
$1 = FileOpen(@ScriptDir & "\1\6BaseD.txt", 16+1)
FileWrite($1, $sDecryptedData)
FileClose($1)
$1 = @ScriptDir & "\1\6BaseD.txt"
$2 = FileOpen($1,16)
$3 = FileRead($2)
$4 = _Base64Decode(BinaryToString($3))
FileDelete(@ScriptDir & "\1\7ORIGFILE2.txt")
$5 = FileOpen(@ScriptDir & "\1\7ORIGFILE2.txt", 16+1)
FileWrite($5, $4)
Alles anzeigen
in FILE1 stand sowas wie "testme",
in FILE2 = "addme",
also ganz simpel einfach weil ich so schneller das problem lösen wollte.
PS: ich komme mir hier langsam wie ein Nervbold vor, ich hoffe das ist nicht so.
Danke im Vorraus!