CRC-Fehler beim Entpacken von ZIP / Owncloud

German support forum

Moderators: Hacker, Stefan2, white

Gem
Junior Member
Junior Member
Posts: 24
Joined: 2007-08-29, 11:21 UTC

CRC-Fehler beim Entpacken von ZIP / Owncloud

Post by *Gem »

Hallo zusammen,

ich bekomme beim Versuch, ZIP-Dateien (wie jetzt festgestellt nur bei den ZIPs, die mir Owncloud erzeugt) mit dem TC (8.51a, unter Nutzung des internen ZIP-Entpackers) zu entpacken, folgende Fehlermeldung:

Code: Select all

CRC-Fehler beim Entpacken von
<DATEI>, Datei gelöscht!
Sowohl über den (Windows-)Explorer als auch mit WinRAR lassen sich die Archive fehlerfrei entpacken.
Auch die Option "Behalte defekte Dateien (CRC-Fehler)" ändert das Verhalten nicht.

Die beiden unten aufgeführten Topics liefern leider keine Lösung.

Jemand eine hilfreiche Idee?

http://ghisler.ch/board/viewtopic.php?t=35988
http://ghisler.ch/board/viewtopic.php?t=22388
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6981
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Post by *Horst.Epp »

Hilfreich wäre es vor allem, wenn du hier ein Muster angehängt hättest.
Oder wie soll Christian aus deiner Beschreibung das Problem finden ?
Gem
Junior Member
Junior Member
Posts: 24
Joined: 2007-08-29, 11:21 UTC

Post by *Gem »

Zunächst hatte ich auf Hilfestellung durch die Community gehofft, vl. hat ja jemand das gleiche Problem und schon eine Lösung parat.

Hier aber natürlich auch eine von Owncloud generierte Datei:
test.zip
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50561
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Die Datei scheint gar keine CRC-Quersummen zu enthalten - wenn man mit F3 reinschaut und auf Hex-Modus umschaltet, sieht man das an den vielen FF FF FF FF-Blöcken.

Bei mir erscheint der Fehler auch wenn man defekte Dateien behalten will, aber die Datei wird einwandfrei entpackt.
Author of Total Commander
https://www.ghisler.com
Gem
Junior Member
Junior Member
Posts: 24
Joined: 2007-08-29, 11:21 UTC

Post by *Gem »

Ja, der "Fehler" liegt am ZIP, das OC (Beta) erstellt - das ist ja auch nicht komprimiert.

Mich hat eben nur verwundert, dass die anderen Programme das Archiv ohne Warnung/Fehler entpacken und ich im TC unter Verwendung der Option "defekte Dateien behalten" bei jeder Datei bestätigen muss, dass ich sie behalten will.

Da das ein sehr spezieller Einzel(fehler?)fall ist, ist das Thema damit auch erledigt.

Danke für die Antwort.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50561
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

TC ist halt etwas pingeliger - wenn der CRC-Quersummenwert gibt es immer eine Warnung.
Author of Total Commander
https://www.ghisler.com
Gem
Junior Member
Junior Member
Posts: 24
Joined: 2007-08-29, 11:21 UTC

Parallelthread auf Github/OC

Post by *Gem »

Guten Tag,

mittlerweile ist das "Problem" auch bei OC angekommen, vielleicht für Sie Herr Ghisler ganz interessant:

https://github.com/owncloud/core/issues/10001
McNetic
Junior Member
Junior Member
Posts: 6
Joined: 2014-07-31, 11:52 UTC

Post by *McNetic »

Hallo, ich bin der Entwickler von PHPZipStreamer, der Komponente, die ab Owncloud 7 für das Zippen verantwortlich ist.

Ich hatte mit TC8.50 mal mit meinen Zip-Files getestet, und damals keine Probleme festgestellt. Leider habe ich diese Version nicht mehr verfügbar.

Soweit ich es sehe, sind die CRCs in der Zip-Datei völlig in Ordnung. Die FFFF sind die Größen (komprimiert/unkomprimiert), die im Header (standardkonform) auf -1 gesetzt werden, da die Zip64-Extension genutzt wird und die Größen am Schluss im Zip64 extended information field stehen. Kannst Du das noch mal prüfen?

Achja: Dass die Dateien nicht komprimiert sind, ist auch standardkonform; die Gründe sind in einem Kommentar in dem bereits verlinkten issue bei Owncloud zu finden.
User avatar
tbeu
Power Member
Power Member
Posts: 1354
Joined: 2003-07-04, 07:52 UTC
Location: Germany
Contact:

Post by *tbeu »

TC8.50 kannst du hier herunterladen. Der CRC-Fehler von test.zip kommt da aber auch.
TC plugins: Autodesk 3ds Max / Inventor / Revit Preview, FileInDir, ImageMetaData (JPG Comment/EXIF/IPTC/XMP), MATLAB MAT-file Viewer, Mover, SetFolderDate, Solid Edge Preview, Zip2Zero and more
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50561
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

2McNetic
Edit: Total Commander unterstützt eigentlich nur die 32-bit-Variante des extended information field. Weil aber der CRC-Wert am Anfang steht (entweder direkt, oder hinter "PK"0708), spielt das keine Rolle, weil TC nur das CRC-Feld auswertet.

Das Problem ist, dass das "extended information field" bei der Owncloud-generierten ZIP-Datei komplett fehlt (siehe Link weiter oben). Nach dem (unkomprimierten) Dateiinhalt kommt direkt das central directory ("PK"01 02).
Author of Total Commander
https://www.ghisler.com
McNetic
Junior Member
Junior Member
Posts: 6
Joined: 2014-07-31, 11:52 UTC

Post by *McNetic »

Hallo, ich würde gerne auf Deinen Post antworten, müsste dabei aber zwei Links angeben - das darf ich aber nicht. Kannst Du das freischalten? Danke.
CoolWater
Power Member
Power Member
Posts: 744
Joined: 2003-03-27, 16:33 UTC

Post by *CoolWater »

Sollte ab dem 3. Post gehen. Also einfach einen weiteren Post erstellen.
McNetic
Junior Member
Junior Member
Posts: 6
Joined: 2014-07-31, 11:52 UTC

Post by *McNetic »

Ah, ok. In der Fehlermeldung stand nach dem ersten Post.

Also ich habe jetzt nochmal die Spezifikation gewälzt ( https://www.pkware.com/documents/casestudies/APPNOTE.TXT ). Was bei meinen Zip-Dateien fehlt, ist der "data descriptor". Dieser ist laut Spezifikation optional. Es gibt ein Flag, mit dem man seine Anwesenheit anzeigen kann - das ist bei mir nicht gesetzt.

Eine Recherche zeigte, dass die gleiche Frage bei der Entwicklung von JDK7 auftrat, und die Entwickler haben bei PKware nachgefragt:
https://blogs.oracle.com/xuemingshen/entry/is_zipinput_outputstream_handling_of
Recht weit unten auf der Seite sieht man, dass die Antwort ist, dass "data descriptor" nicht gleichzeitig mit dem "zip64 extended information field" verwenden soll. Korrigier mich bitte, wenn ich das falsch verstanden habe - mir geht es nicht darum, den schwarzen Peter umherzuschieben, sondern eine standardkonforme Implementierung zu haben, die (im Rahmen der Spezifikation) mit möglichst vielen Programmen kompatibel ist.

Der korrekte CRC-Wert für jede Datei steht übrigens (auch, in meinem Fall nur) im "central directory header".
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50561
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Das ist falsch - der "data descriptor" muss vorhanden sein, wenn Grössen und CRC NICHT im Header stehen.

Code: Select all

      This descriptor exists only if bit 3 of the general
      purpose bit flag is set (see below).  It is byte aligned
      and immediately follows the last byte of compressed data.
      This descriptor is used only when it was not possible to
      seek in the output .ZIP file, e.g., when the output .ZIP file
      was standard output or a non-seekable device.  For ZIP64(tm) format
      archives, the compressed and uncompressed sizes are 8 bytes each.

       Bit 3: If this bit is set, the fields crc-32, compressed 
                 size and uncompressed size are set to zero in the 
                 local header.  The correct values are put in the 
                 data descriptor immediately following the compressed
                 data.
So wie ich das verstehe, darf das CRC-Feld im Local Header nur dann einen ungültigen Wert enthalten, wenn man Bit 3 setzt UND den data descriptor sendet.
Author of Total Commander
https://www.ghisler.com
User avatar
white
Power Member
Power Member
Posts: 5827
Joined: 2003-11-19, 08:16 UTC
Location: Netherlands

Post by *white »

McNetic wrote:Was bei meinen Zip-Dateien fehlt, ist der "data descriptor". Dieser ist laut Spezifikation optional. Es gibt ein Flag, mit dem man seine Anwesenheit anzeigen kann - das ist bei mir nicht gesetzt.
Diese Flag ist aber doch gesetzt ins test.zip oben.
McNetic wrote:Eine Recherche zeigte, dass die gleiche Frage bei der Entwicklung von JDK7 auftrat, und die Entwickler haben bei PKware nachgefragt:
https://blogs.oracle.com/xuemingshen/entry/is_zipinput_outputstream_handling_of
Recht weit unten auf der Seite sieht man, dass die Antwort ist, dass "data descriptor" nicht gleichzeitig mit dem "zip64 extended information field" verwenden soll.
....

Der korrekte CRC-Wert für jede Datei steht übrigens (auch, in meinem Fall nur) im "central directory header".
Also Streaming ist noch nicht möglich mit zip64. Und korrekte CRC-Feld, Komprimierte Größe und unkomprimierte Größe muss im Local Header und im "central directory header" stehen.

Siehe auch:

Code: Select all

      4.3.9.5 An extensible data descriptor will be released in a 
      future version of this APPNOTE.  This new record is intended to
      resolve conflicts with the use of this record going forward,
      and to provide better support for streamed file processing.
Post Reply