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 schreiben 🙂

    Ich 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


Anmelden zum Antworten