Zip-Files erstellen erste Erfolge doch jetzt haberts ...
-
moin meisters ...
habe die zlib und die beiliegenden beispiele genommen.
die beispiele unterstüzen keine multipart archive, welche ich benötige.habe begonnen mit einfachen zip-files was auch gut funktioniert.
Dateien oder Verzeichnisse mit und ohne Passwort zu erstellen, welche auch von
Winzip entpackt werden können.jetzt sitze ich über den multipart archiven. hier kann ich diese ohne passwort
erstellen und mit winzip entpacken. mit passwort wird nur der inhalt von winzip
angezeigt, auch das die dateien verschlüsselt sind.beim entpacken, wird jedoch das passwort nicht akzeptiert !
die Unterschiede beider Variaten sind nur, daß ohne Passwort die crc, comp_size und uncomp_size in den local header vor und im Fall mit Passwort, hinter die kompr. Daten geschrieben werden.
Um den Fehler zu finden habe ich nun eine Datei mit 5 Byte dem multipartarchiv
hinzugefügt und vergleiche mit dem Hexeditor beide Dateien ( meine *.zip und die mit winzip erstellte)bis auf die verschlüsselten und kompr. Daten sind beide Files aufs Byte gleich.
Die Länger der Daten und somit die der Files sind gleich!Es muß also irgendwie an der verschlüsselung liegen, die erstellung des schlüssel und die Verschlüsselung in beiden Fällen ( einfach zip / multipart zip ) ist gleich.
Wenn ich experimentiere und die crc beim multipart in den loacl header schreibe
und angebe ( BIT 3 nicht gesetzt ) das die crc im local header steht, funktioniert das entpacken des multipart archives.
Diese Vorgehensweise ist aber nicht praktisch, sonst müßte unter umständen beim packen nach der 2. disk nochmal die 1. disk eingelegt werden um ebend den local header zu schreibenIch weiß mir keinen Rat mehr, hat das von Euch schon mal geschafft, was ich noch vor mir habe ?
Besten Dank im Voraus
mfg
RB
-
moin meisters ...
habe jetzt die Ursache finden können, aber das Problem hat sich deswegen noch
nicht gelöst.Also bei den Beispielen minizip zur zLib wird wie bei Winzip ein 12 Byte großer
Header und Daten verschlüsselt.Beim extrahieren wird der Header entschlüsselt und mit dem Ergebniss dann die Daten.
Nach entschlüsseln des Headers (12 Byte) müssen in Byte 10 und 11 das Hiword
der crc enthalten sein.Wenn ich nun mit meiner Klasse ein zip archiv verschlüsselt erstelle und extrahieren möchte funktioniert das, auch in byte 10 und 11 findet sich das Hiword der crc.
Wenn ich ein mit Winzip erstelltes Archiv extrahiere, sind falsche Werte in Byte 10 und 11, JEDOCH läst sich das Archiv korrekt entpacken !!!
Das alles gilt für multipart Archive.
Bei normalen archiven hat winzip kein Problem mit meinen passwort-archiven.
Offenbar prüft winzip die Bytes 10 und 11 in diesem Fall nicht, nur ebend bei
multipart archiven.wenn ich egal was für ein mit winzip erstelltes Archiv extrahieren möchte
stimmen die werte in Byte 10 und 11 IMMER nicht mit dem Hiword der crc überein.Ich könnte also auch sagen "Passwort falsch", dummerweise kann ich ebend aber alles wie schon gesagt korrekt entpacken.
Habe schon so viel überprüft aber komme einfach nicht dahinter was ich anders
machen mußBitte um Hilfe. Besten Dank.
mfg
RB