Zurzeit möchte ich ein Verschlüsselungs-Tool schreiben, das alle Datein in einen "Container" in Form einer *.ini packt. Momentan liest das Programm die Datei binär ein, schreibt den Wert in den "Container" und kann anschließend die Datei aus dem "Container" extrahieren. Mit sehr kleinen Text-Dateien und Bildern klappt das, mache ich dies aber z.B. mit einer 500kb großen kompilierten *.exe, dann ist diese nach dem extrahieren nur noch 14kb groß und funktioniert natürlich nicht mehr. Wieso klappt das nur mit kleinen Dateien? Was mache ich falsch?
Spoiler anzeigen
Global $IniFile = @ScriptDir & "\Container.ini" ;Name der *.ini
Global $SourceFileName = "Test.txt" ;Die Datei, die binär in der *.ini gespeichert wird
;Global $Password = "Test"
_FileHexRead(@ScriptDir & "\" & $SourceFileName); Zuerst diese Funktion aufrufen, um die Datei in den "Container" zu schreiben
;_FileHexWrite(); Danach diese Funktion aufrufen, um die Datei aus dem "Container" zu extrahieren
MfG,
xp_fan
Func _FileHexRead($Source)
$file = FileOpen($Source, 16)
$hex = FileRead($file)
FileClose($file)
IniWrite($IniFile, "Data", "Data" & _IniKeys("Data") + 1, $hex)
_FileNames()
Return $hex
EndFunc ;==>_FileHexRead
Func _FileHexWrite()
;$Data = IniReadSection($IniFile, "Data")
;$Files = IniReadSection($IniFile, "FileNames")
For $i = 1 To _IniKeys("Data") Step 1
$name = IniRead($IniFile, "FileNames", "File" & $i, "None")
;MsgBox(0, "Testausgabe", $name)
$NFile = FileOpen(@ScriptDir & "\" & $name, 18)
$inhalt = IniRead($IniFile, "Data", "Data" & $i, "0")
FileWrite($NFile, Binary($inhalt))
FileClose($NFile)
Next
EndFunc ;==>_FileHexWrite
Func _IniKeys($Section)
$Sections = IniReadSection($IniFile, $Section)
If @error Then
Return 0
Else
Return $Sections[0][0]
EndIf
EndFunc ;==>_IniKeys
Func _FileNames()
IniWrite($IniFile, "FileNames", "File" & _IniKeys("FileNames") + 1, $SourceFileName)
EndFunc ;==>_FileNames