1
1
mirror of https://github.com/wader/fq.git synced 2024-09-11 20:07:11 +03:00

zip: Fix incorrect time/date, add extended timestamp and refactor

MSDOS time/date was read in wrong order and also did not take into account
that the bit ranges in the shortis are in little-endian.

Remodel modification_time/date to be one struct with fat_time, fat_date LE shorts
and then synthetic values for day, hours, minute etc and also a unix field with the
timestamp as unix time.

Also refactor and clenaup extra fields/extended code a bit.

Fixes #792
This commit is contained in:
Mattias Wadman 2023-10-21 18:11:56 +02:00
parent 1a3823f187
commit a83cac6021
11 changed files with 1350 additions and 825 deletions

View File

@ -1395,9 +1395,15 @@ Decode value as zip
Supports ZIP64.
## Timestamp and time zones
The timestamp accessed via `.local_files[].last_modification` is encoded in ZIP files using [MS-DOS representation](https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime) which lacks a known time zone. Probably the local time/date was used at creation. The `unix_guess` field in `last_modification` is a guess assuming the local time zone was UTC at creation.
### References
- https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
- https://opensource.apple.com/source/zip/zip-6/unzip/unzip/proginfo/extra.fld
- https://formats.kaitai.io/dos_datetime/
- https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime
[#]: sh-end

View File

@ -20,14 +20,16 @@ $ fq -o uncompress=false dv bigzero-zip.zip
0x0000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x0000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x0000| 08 00 | .. | compression_method: "deflated" (8) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x0000| c8 | . | hours: 25 0xa-0xa.5 (0.5)
0x0000| c8 78 | .x | minutes: 3 0xa.5-0xb.3 (0.6)
0x0000| 78 | x | seconds: 24 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x0000| 84 | . | year: 66 0xc-0xc.7 (0.7)
0x0000| 84 45 | .E | month: 2 0xc.7-0xd.3 (0.4)
0x0000| 45 | E | day: 5 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x0000| c8 78 | .x | fat_time: 0x78c8 0xa-0xc (2)
| | | second: 16 (8)
| | | minute: 6
| | | hour: 15
0x0000| 84 45 | .E | fat_date: 0x4584 0xc-0xe (2)
| | | day: 4
| | | month: 12
| | | year: 2014 (34)
| | | unix_guess: 1417705576 (2014-12-04T15:06:16)
0x0000| 54 81| T.| crc32_uncompressed: 0xae158154 0xe-0x12 (4)
0x0010|15 ae |.. |
0x0010| 4e 28 00 00 | N(.. | compressed_size: 10318 0x12-0x16 (4)
@ -38,13 +40,19 @@ $ fq -o uncompress=false dv bigzero-zip.zip
0x0020|67 7a 65 72 6f 2e 7a 69 70 |gzero.zip |
| | | extra_fields[0:2]: 0x29-0x45 (28)
| | | [0]{}: extra_field 0x29-0x36 (13)
0x0020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x29-0x2b (2)
0x0020| 09 00 | .. | data_size: 9 0x2b-0x2d (2)
0x0020| 03 57 6a| .Wj| data: raw bits 0x2d-0x36 (9)
0x0030|80 54 7e 6a 80 54 |.T~j.T |
0x0020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x29-0x2b (2)
0x0020| 09 00 | .. | size: 9 0x2b-0x2d (2)
| | | flags{}: 0x2d-0x2e (1)
0x0020| 03 | . | unused: 0 0x2d-0x2d.5 (0.5)
0x0020| 03 | . | creation_time_present: false 0x2d.5-0x2d.6 (0.1)
0x0020| 03 | . | access_time_present: true 0x2d.6-0x2d.7 (0.1)
0x0020| 03 | . | modification_time_present: true 0x2d.7-0x2e (0.1)
0x0020| 57 6a| Wj| modification_time: 1417701975 (2014-12-04T14:06:15Z) 0x2e-0x32 (4)
0x0030|80 54 |.T |
0x0030| 7e 6a 80 54 | ~j.T | access_time: 1417702014 (2014-12-04T14:06:54Z) 0x32-0x36 (4)
| | | [1]{}: extra_field 0x36-0x45 (15)
0x0030| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x36-0x38 (2)
0x0030| 0b 00 | .. | data_size: 11 0x38-0x3a (2)
0x0030| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x36-0x38 (2)
0x0030| 0b 00 | .. | size: 11 0x38-0x3a (2)
0x0030| 01 04 74 00 00 00| ..t...| data: raw bits 0x3a-0x45 (11)
0x0040|04 14 00 00 00 |..... |
0x0040| ed dd bf aa 03 df bf df e7 ef 9c| ...........| compressed: raw bits 0x45-0x2893 (10318)
@ -70,15 +78,17 @@ $ fq -o uncompress=false dv bigzero-zip.zip
0x2890| 00 | . | language_encoding: false 0x289c.4-0x289c.5 (0.1)
0x2890| 00 | . | unused1: 0 0x289c.5-0x289d (0.3)
0x2890| 08 00 | .. | compression_method: "deflated" (8) 0x289d-0x289f (2)
| | | last_modification_date{}: 0x289f-0x28a1 (2)
0x2890| c8| .| hours: 25 0x289f-0x289f.5 (0.5)
0x2890| c8| .| minutes: 3 0x289f.5-0x28a0.3 (0.6)
| | | last_modification{}: 0x289f-0x28a3 (4)
0x2890| c8| .| fat_time: 0x78c8 0x289f-0x28a1 (2)
0x28a0|78 |x |
0x28a0|78 |x | seconds: 24 0x28a0.3-0x28a1 (0.5)
| | | last_modification_time{}: 0x28a1-0x28a3 (2)
0x28a0| 84 | . | year: 66 0x28a1-0x28a1.7 (0.7)
0x28a0| 84 45 | .E | month: 2 0x28a1.7-0x28a2.3 (0.4)
0x28a0| 45 | E | day: 5 0x28a2.3-0x28a3 (0.5)
| | | second: 16 (8)
| | | minute: 6
| | | hour: 15
0x28a0| 84 45 | .E | fat_date: 0x4584 0x28a1-0x28a3 (2)
| | | day: 4
| | | month: 12
| | | year: 2014 (34)
| | | unix_guess: 1417705576 (2014-12-04T15:06:16)
0x28a0| 54 81 15 ae | T... | crc32_uncompressed: 0xae158154 0x28a3-0x28a7 (4)
0x28a0| 4e 28 00 00 | N(.. | compressed_size: 10318 0x28a7-0x28ab (4)
0x28a0| b9 9a 3f 00 | ..?. | uncompressed_size: 4168377 0x28ab-0x28af (4)
@ -94,12 +104,17 @@ $ fq -o uncompress=false dv bigzero-zip.zip
0x28c0| 62 69 67 7a 65 72 6f 2e 7a 69 70 | bigzero.zip | file_name: "bigzero.zip" 0x28c1-0x28cc (11)
| | | extra_fields[0:2]: 0x28cc-0x28e4 (24)
| | | [0]{}: extra_field 0x28cc-0x28d5 (9)
0x28c0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x28cc-0x28ce (2)
0x28c0| 05 00| ..| data_size: 5 0x28ce-0x28d0 (2)
0x28d0|03 57 6a 80 54 |.Wj.T | data: raw bits 0x28d0-0x28d5 (5)
0x28c0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x28cc-0x28ce (2)
0x28c0| 05 00| ..| size: 5 0x28ce-0x28d0 (2)
| | | flags{}: 0x28d0-0x28d1 (1)
0x28d0|03 |. | unused: 0 0x28d0-0x28d0.5 (0.5)
0x28d0|03 |. | creation_time_present: false 0x28d0.5-0x28d0.6 (0.1)
0x28d0|03 |. | access_time_present: true 0x28d0.6-0x28d0.7 (0.1)
0x28d0|03 |. | modification_time_present: true 0x28d0.7-0x28d1 (0.1)
0x28d0| 57 6a 80 54 | Wj.T | modification_time: 1417701975 (2014-12-04T14:06:15Z) 0x28d1-0x28d5 (4)
| | | [1]{}: extra_field 0x28d5-0x28e4 (15)
0x28d0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x28d5-0x28d7 (2)
0x28d0| 0b 00 | .. | data_size: 11 0x28d7-0x28d9 (2)
0x28d0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x28d5-0x28d7 (2)
0x28d0| 0b 00 | .. | size: 11 0x28d7-0x28d9 (2)
0x28d0| 01 04 74 00 00 00 04| ..t....| data: raw bits 0x28d9-0x28e4 (11)
0x28e0|14 00 00 00 |.... |
| | | file_comment: "" 0x28e4-0x28e4 (0)

View File

@ -20,7 +20,16 @@ Decode examples
Supports ZIP64.
Timestamp and time zones
========================
The timestamp accessed via .local_files[].last_modification is encoded in ZIP files using MS-DOS representation
(https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime) which lacks a known time zone.
Probably the local time/date was used at creation. The unix_guess field in last_modification is a guess assuming the local time zone
was UTC at creation.
References
==========
- https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
- https://opensource.apple.com/source/zip/zip-6/unzip/unzip/proginfo/extra.fld
- https://formats.kaitai.io/dos_datetime/
- https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime

View File

@ -19,14 +19,16 @@ $ fq -d zip dv test-macos.zip
0x00000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x00000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x00000| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x00000| 73 | s | hours: 14 0xa-0xa.5 (0.5)
0x00000| 73 0a | s. | minutes: 24 0xa.5-0xb.3 (0.6)
0x00000| 0a | . | seconds: 10 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x00000| 75 | u | year: 58 0xc-0xc.7 (0.7)
0x00000| 75 53 | uS | month: 10 0xc.7-0xd.3 (0.4)
0x00000| 53 | S | day: 19 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x00000| 73 0a | s. | fat_time: 0xa73 0xa-0xc (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00000| 75 53 | uS | fat_date: 0x5375 0xc-0xe (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00000| 00 00| ..| crc32_uncompressed: 0x0 0xe-0x12 (4)
0x00010|00 00 |.. |
0x00010| 00 00 00 00 | .... | compressed_size: 0 0x12-0x16 (4)
@ -37,13 +39,19 @@ $ fq -d zip dv test-macos.zip
0x00020|73 74 2f |st/ |
| | | extra_fields[0:2]: 0x23-0x43 (32)
| | | [0]{}: extra_field 0x23-0x34 (17)
0x00020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 0d 00 | .. | data_size: 13 0x25-0x27 (2)
0x00020| 07 9a 90 99 61 9b 90 99 61| ....a...a| data: raw bits 0x27-0x34 (13)
0x00030|9a 90 99 61 |...a |
0x00020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 0d 00 | .. | size: 13 0x25-0x27 (2)
| | | flags{}: 0x27-0x28 (1)
0x00020| 07 | . | unused: 0 0x27-0x27.5 (0.5)
0x00020| 07 | . | creation_time_present: true 0x27.5-0x27.6 (0.1)
0x00020| 07 | . | access_time_present: true 0x27.6-0x27.7 (0.1)
0x00020| 07 | . | modification_time_present: true 0x27.7-0x28 (0.1)
0x00020| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x28-0x2c (4)
0x00020| 9b 90 99 61| ...a| access_time: 1637453979 (2021-11-21T00:19:39Z) 0x2c-0x30 (4)
0x00030|9a 90 99 61 |...a | creation_time: 1637453978 (2021-11-21T00:19:38Z) 0x30-0x34 (4)
| | | [1]{}: extra_field 0x34-0x43 (15)
0x00030| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x34-0x36 (2)
0x00030| 0b 00 | .. | data_size: 11 0x36-0x38 (2)
0x00030| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x34-0x36 (2)
0x00030| 0b 00 | .. | size: 11 0x36-0x38 (2)
0x00030| 01 04 f5 01 00 00 04 14| ........| data: raw bits 0x38-0x43 (11)
0x00040|00 00 00 |... |
| | | uncompressed: raw bits 0x43-0x43 (0)
@ -65,15 +73,17 @@ $ fq -d zip dv test-macos.zip
0x00040| 00 | . | language_encoding: false 0x4a.4-0x4a.5 (0.1)
0x00040| 00 | . | unused1: 0 0x4a.5-0x4b (0.3)
0x00040| 00 00 | .. | compression_method: "none" (0) 0x4b-0x4d (2)
| | | last_modification_date{}: 0x4d-0x4f (2)
0x00040| 81 | . | hours: 16 0x4d-0x4d.5 (0.5)
0x00040| 81 01 | .. | minutes: 8 0x4d.5-0x4e.3 (0.6)
0x00040| 01 | . | seconds: 1 0x4e.3-0x4f (0.5)
| | | last_modification_time{}: 0x4f-0x51 (2)
0x00040| 73| s| year: 57 0x4f-0x4f.7 (0.7)
0x00040| 73| s| month: 10 0x4f.7-0x50.3 (0.4)
| | | last_modification{}: 0x4d-0x51 (4)
0x00040| 81 01 | .. | fat_time: 0x181 0x4d-0x4f (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00040| 73| s| fat_date: 0x5373 0x4f-0x51 (2)
0x00050|53 |S |
0x00050|53 |S | day: 19 0x50.3-0x51 (0.5)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00050| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x51-0x55 (4)
0x00050| 00 00 00 00 | .... | compressed_size: 0 0x55-0x59 (4)
0x00050| 00 00 00 00 | .... | uncompressed_size: 0 0x59-0x5d (4)
@ -83,13 +93,20 @@ $ fq -d zip dv test-macos.zip
0x00060| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x61-0x68 (7)
| | | extra_fields[0:2]: 0x68-0x88 (32)
| | | [0]{}: extra_field 0x68-0x79 (17)
0x00060| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x68-0x6a (2)
0x00060| 0d 00 | .. | data_size: 13 0x6a-0x6c (2)
0x00060| 07 c2 dd 96| ....| data: raw bits 0x6c-0x79 (13)
0x00070|61 c2 dd 96 61 c2 dd 96 61 |a...a...a |
0x00060| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x68-0x6a (2)
0x00060| 0d 00 | .. | size: 13 0x6a-0x6c (2)
| | | flags{}: 0x6c-0x6d (1)
0x00060| 07 | . | unused: 0 0x6c-0x6c.5 (0.5)
0x00060| 07 | . | creation_time_present: true 0x6c.5-0x6c.6 (0.1)
0x00060| 07 | . | access_time_present: true 0x6c.6-0x6c.7 (0.1)
0x00060| 07 | . | modification_time_present: true 0x6c.7-0x6d (0.1)
0x00060| c2 dd 96| ...| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x6d-0x71 (4)
0x00070|61 |a |
0x00070| c2 dd 96 61 | ...a | access_time: 1637277122 (2021-11-18T23:12:02Z) 0x71-0x75 (4)
0x00070| c2 dd 96 61 | ...a | creation_time: 1637277122 (2021-11-18T23:12:02Z) 0x75-0x79 (4)
| | | [1]{}: extra_field 0x79-0x88 (15)
0x00070| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x79-0x7b (2)
0x00070| 0b 00 | .. | data_size: 11 0x7b-0x7d (2)
0x00070| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x79-0x7b (2)
0x00070| 0b 00 | .. | size: 11 0x7b-0x7d (2)
0x00070| 01 04 f5| ...| data: raw bits 0x7d-0x88 (11)
0x00080|01 00 00 04 14 00 00 00 |........ |
| | | uncompressed: raw bits 0x88-0x88 (0)
@ -111,14 +128,16 @@ $ fq -d zip dv test-macos.zip
0x00080| 00| .| language_encoding: false 0x8f.4-0x8f.5 (0.1)
0x00080| 00| .| unused1: 0 0x8f.5-0x90 (0.3)
0x00090|08 00 |.. | compression_method: "deflated" (8) 0x90-0x92 (2)
| | | last_modification_date{}: 0x92-0x94 (2)
0x00090| 81 | . | hours: 16 0x92-0x92.5 (0.5)
0x00090| 81 01 | .. | minutes: 8 0x92.5-0x93.3 (0.6)
0x00090| 01 | . | seconds: 1 0x93.3-0x94 (0.5)
| | | last_modification_time{}: 0x94-0x96 (2)
0x00090| 73 | s | year: 57 0x94-0x94.7 (0.7)
0x00090| 73 53 | sS | month: 10 0x94.7-0x95.3 (0.4)
0x00090| 53 | S | day: 19 0x95.3-0x96 (0.5)
| | | last_modification{}: 0x92-0x96 (4)
0x00090| 81 01 | .. | fat_time: 0x181 0x92-0x94 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00090| 73 53 | sS | fat_date: 0x5373 0x94-0x96 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00090| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x96-0x9a (4)
0x00090| 00 00 00 00 | .... | compressed_size: 0 0x9a-0x9e (4)
0x00090| 35 00| 5.| uncompressed_size: 53 0x9e-0xa2 (4)
@ -128,13 +147,20 @@ $ fq -d zip dv test-macos.zip
0x000a0| 74 65 73 74 2f 61 2e 74 78 74| test/a.txt| file_name: "test/a.txt" 0xa6-0xb0 (10)
| | | extra_fields[0:2]: 0xb0-0xd0 (32)
| | | [0]{}: extra_field 0xb0-0xc1 (17)
0x000b0|55 54 |UT | header_id: 0x5455 (extended timestamp) 0xb0-0xb2 (2)
0x000b0| 0d 00 | .. | data_size: 13 0xb2-0xb4 (2)
0x000b0| 07 c2 dd 96 61 32 e0 96 61 c2 dd 96| ....a2..a...| data: raw bits 0xb4-0xc1 (13)
0x000b0|55 54 |UT | tag: 0x5455 (extended timestamp) 0xb0-0xb2 (2)
0x000b0| 0d 00 | .. | size: 13 0xb2-0xb4 (2)
| | | flags{}: 0xb4-0xb5 (1)
0x000b0| 07 | . | unused: 0 0xb4-0xb4.5 (0.5)
0x000b0| 07 | . | creation_time_present: true 0xb4.5-0xb4.6 (0.1)
0x000b0| 07 | . | access_time_present: true 0xb4.6-0xb4.7 (0.1)
0x000b0| 07 | . | modification_time_present: true 0xb4.7-0xb5 (0.1)
0x000b0| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xb5-0xb9 (4)
0x000b0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xb9-0xbd (4)
0x000b0| c2 dd 96| ...| creation_time: 1637277122 (2021-11-18T23:12:02Z) 0xbd-0xc1 (4)
0x000c0|61 |a |
| | | [1]{}: extra_field 0xc1-0xd0 (15)
0x000c0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0xc1-0xc3 (2)
0x000c0| 0b 00 | .. | data_size: 11 0xc3-0xc5 (2)
0x000c0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0xc1-0xc3 (2)
0x000c0| 0b 00 | .. | size: 11 0xc3-0xc5 (2)
0x000c0| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0xc5-0xd0 (11)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
0x000|61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61|aaaaaaaaaaaaaaaa| uncompressed: raw bits 0x0-0x35 (53)
@ -164,14 +190,16 @@ $ fq -d zip dv test-macos.zip
0x000e0| 00 | . | language_encoding: false 0xed.4-0xed.5 (0.1)
0x000e0| 00 | . | unused1: 0 0xed.5-0xee (0.3)
0x000e0| 08 00| ..| compression_method: "deflated" (8) 0xee-0xf0 (2)
| | | last_modification_date{}: 0xf0-0xf2 (2)
0x000f0|73 |s | hours: 14 0xf0-0xf0.5 (0.5)
0x000f0|73 0a |s. | minutes: 24 0xf0.5-0xf1.3 (0.6)
0x000f0| 0a | . | seconds: 10 0xf1.3-0xf2 (0.5)
| | | last_modification_time{}: 0xf2-0xf4 (2)
0x000f0| 75 | u | year: 58 0xf2-0xf2.7 (0.7)
0x000f0| 75 53 | uS | month: 10 0xf2.7-0xf3.3 (0.4)
0x000f0| 53 | S | day: 19 0xf3.3-0xf4 (0.5)
| | | last_modification{}: 0xf0-0xf4 (4)
0x000f0|73 0a |s. | fat_time: 0xa73 0xf0-0xf2 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x000f0| 75 53 | uS | fat_date: 0x5375 0xf2-0xf4 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x000f0| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0xf4-0xf8 (4)
0x000f0| 00 00 00 00 | .... | compressed_size: 0 0xf8-0xfc (4)
0x000f0| 03 01 00 00| ....| uncompressed_size: 259 0xfc-0x100 (4)
@ -180,13 +208,20 @@ $ fq -d zip dv test-macos.zip
0x00100| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x104-0x10e (10)
| | | extra_fields[0:2]: 0x10e-0x12e (32)
| | | [0]{}: extra_field 0x10e-0x11f (17)
0x00100| 55 54| UT| header_id: 0x5455 (extended timestamp) 0x10e-0x110 (2)
0x00110|0d 00 |.. | data_size: 13 0x110-0x112 (2)
0x00110| 07 9a 90 99 61 9c 90 99 61 9a 90 99 61 | ....a...a...a | data: raw bits 0x112-0x11f (13)
0x00100| 55 54| UT| tag: 0x5455 (extended timestamp) 0x10e-0x110 (2)
0x00110|0d 00 |.. | size: 13 0x110-0x112 (2)
| | | flags{}: 0x112-0x113 (1)
0x00110| 07 | . | unused: 0 0x112-0x112.5 (0.5)
0x00110| 07 | . | creation_time_present: true 0x112.5-0x112.6 (0.1)
0x00110| 07 | . | access_time_present: true 0x112.6-0x112.7 (0.1)
0x00110| 07 | . | modification_time_present: true 0x112.7-0x113 (0.1)
0x00110| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x113-0x117 (4)
0x00110| 9c 90 99 61 | ...a | access_time: 1637453980 (2021-11-21T00:19:40Z) 0x117-0x11b (4)
0x00110| 9a 90 99 61 | ...a | creation_time: 1637453978 (2021-11-21T00:19:38Z) 0x11b-0x11f (4)
| | | [1]{}: extra_field 0x11f-0x12e (15)
0x00110| 75| u| header_id: 0x7875 (UNIX UID/GID) 0x11f-0x121 (2)
0x00110| 75| u| tag: 0x7875 (UNIX UID/GID) 0x11f-0x121 (2)
0x00120|78 |x |
0x00120| 0b 00 | .. | data_size: 11 0x121-0x123 (2)
0x00120| 0b 00 | .. | size: 11 0x121-0x123 (2)
0x00120| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x123-0x12e (11)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| uncompressed{}: (png) 0x0-0x103 (259)
0x000|89 50 4e 47 0d 0a 1a 0a |.PNG.... | signature: raw bits (valid) 0x0-0x8 (8)
@ -329,14 +364,16 @@ $ fq -d zip dv test-macos.zip
0x00210| 00 | . | language_encoding: false 0x215.4-0x215.5 (0.1)
0x00210| 00 | . | unused1: 0 0x215.5-0x216 (0.3)
0x00210| 08 00 | .. | compression_method: "deflated" (8) 0x216-0x218 (2)
| | | last_modification_date{}: 0x218-0x21a (2)
0x00210| 81 | . | hours: 16 0x218-0x218.5 (0.5)
0x00210| 81 01 | .. | minutes: 8 0x218.5-0x219.3 (0.6)
0x00210| 01 | . | seconds: 1 0x219.3-0x21a (0.5)
| | | last_modification_time{}: 0x21a-0x21c (2)
0x00210| 73 | s | year: 57 0x21a-0x21a.7 (0.7)
0x00210| 73 53 | sS | month: 10 0x21a.7-0x21b.3 (0.4)
0x00210| 53 | S | day: 19 0x21b.3-0x21c (0.5)
| | | last_modification{}: 0x218-0x21c (4)
0x00210| 81 01 | .. | fat_time: 0x181 0x218-0x21a (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00210| 73 53 | sS | fat_date: 0x5373 0x21a-0x21c (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00210| 00 00 00 00| ....| crc32_uncompressed: 0x0 0x21c-0x220 (4)
0x00220|00 00 00 00 |.... | compressed_size: 0 0x220-0x224 (4)
0x00220| 04 00 00 00 | .... | uncompressed_size: 4 0x224-0x228 (4)
@ -346,13 +383,20 @@ $ fq -d zip dv test-macos.zip
0x00230|2f 61 2f 61 2e 74 78 74 |/a/a.txt |
| | | extra_fields[0:2]: 0x238-0x258 (32)
| | | [0]{}: extra_field 0x238-0x249 (17)
0x00230| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x238-0x23a (2)
0x00230| 0d 00 | .. | data_size: 13 0x23a-0x23c (2)
0x00230| 07 c2 dd 96| ....| data: raw bits 0x23c-0x249 (13)
0x00240|61 32 e0 96 61 c2 dd 96 61 |a2..a...a |
0x00230| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x238-0x23a (2)
0x00230| 0d 00 | .. | size: 13 0x23a-0x23c (2)
| | | flags{}: 0x23c-0x23d (1)
0x00230| 07 | . | unused: 0 0x23c-0x23c.5 (0.5)
0x00230| 07 | . | creation_time_present: true 0x23c.5-0x23c.6 (0.1)
0x00230| 07 | . | access_time_present: true 0x23c.6-0x23c.7 (0.1)
0x00230| 07 | . | modification_time_present: true 0x23c.7-0x23d (0.1)
0x00230| c2 dd 96| ...| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x23d-0x241 (4)
0x00240|61 |a |
0x00240| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0x241-0x245 (4)
0x00240| c2 dd 96 61 | ...a | creation_time: 1637277122 (2021-11-18T23:12:02Z) 0x245-0x249 (4)
| | | [1]{}: extra_field 0x249-0x258 (15)
0x00240| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x249-0x24b (2)
0x00240| 0b 00 | .. | data_size: 11 0x24b-0x24d (2)
0x00240| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x249-0x24b (2)
0x00240| 0b 00 | .. | size: 11 0x24b-0x24d (2)
0x00240| 01 04 f5| ...| data: raw bits 0x24d-0x258 (11)
0x00250|01 00 00 04 14 00 00 00 |........ |
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
@ -385,14 +429,16 @@ $ fq -d zip dv test-macos.zip
0x00270| 00 | . | language_encoding: false 0x277.4-0x277.5 (0.1)
0x00270| 00 | . | unused1: 0 0x277.5-0x278 (0.3)
0x00270| 00 00 | .. | compression_method: "none" (0) 0x278-0x27a (2)
| | | last_modification_date{}: 0x27a-0x27c (2)
0x00270| 73 | s | hours: 14 0x27a-0x27a.5 (0.5)
0x00270| 73 0a | s. | minutes: 24 0x27a.5-0x27b.3 (0.6)
0x00270| 0a | . | seconds: 10 0x27b.3-0x27c (0.5)
| | | last_modification_time{}: 0x27c-0x27e (2)
0x00270| 75 | u | year: 58 0x27c-0x27c.7 (0.7)
0x00270| 75 53 | uS | month: 10 0x27c.7-0x27d.3 (0.4)
0x00270| 53 | S | day: 19 0x27d.3-0x27e (0.5)
| | | last_modification{}: 0x27a-0x27e (4)
0x00270| 73 0a | s. | fat_time: 0xa73 0x27a-0x27c (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00270| 75 53 | uS | fat_date: 0x5375 0x27c-0x27e (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00270| 00 00| ..| crc32_uncompressed: 0x0 0x27e-0x282 (4)
0x00280|00 00 |.. |
0x00280| 00 00 00 00 | .... | compressed_size: 0 0x282-0x286 (4)
@ -408,13 +454,20 @@ $ fq -d zip dv test-macos.zip
0x002a0|2f |/ |
| | | extra_fields[0:2]: 0x2a1-0x2c1 (32)
| | | [0]{}: extra_field 0x2a1-0x2b2 (17)
0x002a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2a1-0x2a3 (2)
0x002a0| 0d 00 | .. | data_size: 13 0x2a3-0x2a5 (2)
0x002a0| 07 9a 90 99 61 9b 90 99 61 9a 90| ....a...a..| data: raw bits 0x2a5-0x2b2 (13)
0x002a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2a1-0x2a3 (2)
0x002a0| 0d 00 | .. | size: 13 0x2a3-0x2a5 (2)
| | | flags{}: 0x2a5-0x2a6 (1)
0x002a0| 07 | . | unused: 0 0x2a5-0x2a5.5 (0.5)
0x002a0| 07 | . | creation_time_present: true 0x2a5.5-0x2a5.6 (0.1)
0x002a0| 07 | . | access_time_present: true 0x2a5.6-0x2a5.7 (0.1)
0x002a0| 07 | . | modification_time_present: true 0x2a5.7-0x2a6 (0.1)
0x002a0| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x2a6-0x2aa (4)
0x002a0| 9b 90 99 61 | ...a | access_time: 1637453979 (2021-11-21T00:19:39Z) 0x2aa-0x2ae (4)
0x002a0| 9a 90| ..| creation_time: 1637453978 (2021-11-21T00:19:38Z) 0x2ae-0x2b2 (4)
0x002b0|99 61 |.a |
| | | [1]{}: extra_field 0x2b2-0x2c1 (15)
0x002b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x2b2-0x2b4 (2)
0x002b0| 0b 00 | .. | data_size: 11 0x2b4-0x2b6 (2)
0x002b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x2b2-0x2b4 (2)
0x002b0| 0b 00 | .. | size: 11 0x2b4-0x2b6 (2)
0x002b0| 01 04 f5 01 00 00 04 14 00 00| ..........| data: raw bits 0x2b6-0x2c1 (11)
0x002c0|00 |. |
| | | file_comment: "" 0x2c1-0x2c1 (0)
@ -437,15 +490,17 @@ $ fq -d zip dv test-macos.zip
0x002c0| 00 | . | language_encoding: false 0x2ca.4-0x2ca.5 (0.1)
0x002c0| 00 | . | unused1: 0 0x2ca.5-0x2cb (0.3)
0x002c0| 00 00 | .. | compression_method: "none" (0) 0x2cb-0x2cd (2)
| | | last_modification_date{}: 0x2cd-0x2cf (2)
0x002c0| 81 | . | hours: 16 0x2cd-0x2cd.5 (0.5)
0x002c0| 81 01 | .. | minutes: 8 0x2cd.5-0x2ce.3 (0.6)
0x002c0| 01 | . | seconds: 1 0x2ce.3-0x2cf (0.5)
| | | last_modification_time{}: 0x2cf-0x2d1 (2)
0x002c0| 73| s| year: 57 0x2cf-0x2cf.7 (0.7)
0x002c0| 73| s| month: 10 0x2cf.7-0x2d0.3 (0.4)
| | | last_modification{}: 0x2cd-0x2d1 (4)
0x002c0| 81 01 | .. | fat_time: 0x181 0x2cd-0x2cf (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x002c0| 73| s| fat_date: 0x5373 0x2cf-0x2d1 (2)
0x002d0|53 |S |
0x002d0|53 |S | day: 19 0x2d0.3-0x2d1 (0.5)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x002d0| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x2d1-0x2d5 (4)
0x002d0| 00 00 00 00 | .... | compressed_size: 0 0x2d5-0x2d9 (4)
0x002d0| 00 00 00 00 | .... | uncompressed_size: 0 0x2d9-0x2dd (4)
@ -461,13 +516,20 @@ $ fq -d zip dv test-macos.zip
0x002f0|65 73 74 2f 61 2f |est/a/ |
| | | extra_fields[0:2]: 0x2f6-0x316 (32)
| | | [0]{}: extra_field 0x2f6-0x307 (17)
0x002f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2f6-0x2f8 (2)
0x002f0| 0d 00 | .. | data_size: 13 0x2f8-0x2fa (2)
0x002f0| 07 c2 dd 96 61 c2| ....a.| data: raw bits 0x2fa-0x307 (13)
0x00300|dd 96 61 c2 dd 96 61 |..a...a |
0x002f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2f6-0x2f8 (2)
0x002f0| 0d 00 | .. | size: 13 0x2f8-0x2fa (2)
| | | flags{}: 0x2fa-0x2fb (1)
0x002f0| 07 | . | unused: 0 0x2fa-0x2fa.5 (0.5)
0x002f0| 07 | . | creation_time_present: true 0x2fa.5-0x2fa.6 (0.1)
0x002f0| 07 | . | access_time_present: true 0x2fa.6-0x2fa.7 (0.1)
0x002f0| 07 | . | modification_time_present: true 0x2fa.7-0x2fb (0.1)
0x002f0| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2fb-0x2ff (4)
0x002f0| c2| .| access_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ff-0x303 (4)
0x00300|dd 96 61 |..a |
0x00300| c2 dd 96 61 | ...a | creation_time: 1637277122 (2021-11-18T23:12:02Z) 0x303-0x307 (4)
| | | [1]{}: extra_field 0x307-0x316 (15)
0x00300| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x307-0x309 (2)
0x00300| 0b 00 | .. | data_size: 11 0x309-0x30b (2)
0x00300| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x307-0x309 (2)
0x00300| 0b 00 | .. | size: 11 0x309-0x30b (2)
0x00300| 01 04 f5 01 00| .....| data: raw bits 0x30b-0x316 (11)
0x00310|00 04 14 00 00 00 |...... |
| | | file_comment: "" 0x316-0x316 (0)
@ -490,14 +552,16 @@ $ fq -d zip dv test-macos.zip
0x00310| 00| .| language_encoding: false 0x31f.4-0x31f.5 (0.1)
0x00310| 00| .| unused1: 0 0x31f.5-0x320 (0.3)
0x00320|08 00 |.. | compression_method: "deflated" (8) 0x320-0x322 (2)
| | | last_modification_date{}: 0x322-0x324 (2)
0x00320| 81 | . | hours: 16 0x322-0x322.5 (0.5)
0x00320| 81 01 | .. | minutes: 8 0x322.5-0x323.3 (0.6)
0x00320| 01 | . | seconds: 1 0x323.3-0x324 (0.5)
| | | last_modification_time{}: 0x324-0x326 (2)
0x00320| 73 | s | year: 57 0x324-0x324.7 (0.7)
0x00320| 73 53 | sS | month: 10 0x324.7-0x325.3 (0.4)
0x00320| 53 | S | day: 19 0x325.3-0x326 (0.5)
| | | last_modification{}: 0x322-0x326 (4)
0x00320| 81 01 | .. | fat_time: 0x181 0x322-0x324 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00320| 73 53 | sS | fat_date: 0x5373 0x324-0x326 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00320| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x326-0x32a (4)
0x00320| 06 00 00 00 | .... | compressed_size: 6 0x32a-0x32e (4)
0x00320| 35 00| 5.| uncompressed_size: 53 0x32e-0x332 (4)
@ -512,13 +576,20 @@ $ fq -d zip dv test-macos.zip
0x00340| 74 65 73 74 2f 61 2e 74 78 74 | test/a.txt | file_name: "test/a.txt" 0x344-0x34e (10)
| | | extra_fields[0:2]: 0x34e-0x36e (32)
| | | [0]{}: extra_field 0x34e-0x35f (17)
0x00340| 55 54| UT| header_id: 0x5455 (extended timestamp) 0x34e-0x350 (2)
0x00350|0d 00 |.. | data_size: 13 0x350-0x352 (2)
0x00350| 07 c2 dd 96 61 32 e0 96 61 c2 dd 96 61 | ....a2..a...a | data: raw bits 0x352-0x35f (13)
0x00340| 55 54| UT| tag: 0x5455 (extended timestamp) 0x34e-0x350 (2)
0x00350|0d 00 |.. | size: 13 0x350-0x352 (2)
| | | flags{}: 0x352-0x353 (1)
0x00350| 07 | . | unused: 0 0x352-0x352.5 (0.5)
0x00350| 07 | . | creation_time_present: true 0x352.5-0x352.6 (0.1)
0x00350| 07 | . | access_time_present: true 0x352.6-0x352.7 (0.1)
0x00350| 07 | . | modification_time_present: true 0x352.7-0x353 (0.1)
0x00350| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x353-0x357 (4)
0x00350| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0x357-0x35b (4)
0x00350| c2 dd 96 61 | ...a | creation_time: 1637277122 (2021-11-18T23:12:02Z) 0x35b-0x35f (4)
| | | [1]{}: extra_field 0x35f-0x36e (15)
0x00350| 75| u| header_id: 0x7875 (UNIX UID/GID) 0x35f-0x361 (2)
0x00350| 75| u| tag: 0x7875 (UNIX UID/GID) 0x35f-0x361 (2)
0x00360|78 |x |
0x00360| 0b 00 | .. | data_size: 11 0x361-0x363 (2)
0x00360| 0b 00 | .. | size: 11 0x361-0x363 (2)
0x00360| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x363-0x36e (11)
| | | file_comment: "" 0x36e-0x36e (0)
| | | [3]{}: central_directory 0x36e-0x3c6 (88)
@ -541,14 +612,16 @@ $ fq -d zip dv test-macos.zip
0x00370| 00 | . | language_encoding: false 0x377.4-0x377.5 (0.1)
0x00370| 00 | . | unused1: 0 0x377.5-0x378 (0.3)
0x00370| 08 00 | .. | compression_method: "deflated" (8) 0x378-0x37a (2)
| | | last_modification_date{}: 0x37a-0x37c (2)
0x00370| 73 | s | hours: 14 0x37a-0x37a.5 (0.5)
0x00370| 73 0a | s. | minutes: 24 0x37a.5-0x37b.3 (0.6)
0x00370| 0a | . | seconds: 10 0x37b.3-0x37c (0.5)
| | | last_modification_time{}: 0x37c-0x37e (2)
0x00370| 75 | u | year: 58 0x37c-0x37c.7 (0.7)
0x00370| 75 53 | uS | month: 10 0x37c.7-0x37d.3 (0.4)
0x00370| 53 | S | day: 19 0x37d.3-0x37e (0.5)
| | | last_modification{}: 0x37a-0x37e (4)
0x00370| 73 0a | s. | fat_time: 0xa73 0x37a-0x37c (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00370| 75 53 | uS | fat_date: 0x5375 0x37c-0x37e (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00370| cd 66| .f| crc32_uncompressed: 0xfb9066cd 0x37e-0x382 (4)
0x00380|90 fb |.. |
0x00380| d0 00 00 00 | .... | compressed_size: 208 0x382-0x386 (4)
@ -564,13 +637,20 @@ $ fq -d zip dv test-macos.zip
0x003a0|2f 62 2e 70 6e 67 |/b.png |
| | | extra_fields[0:2]: 0x3a6-0x3c6 (32)
| | | [0]{}: extra_field 0x3a6-0x3b7 (17)
0x003a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x3a6-0x3a8 (2)
0x003a0| 0d 00 | .. | data_size: 13 0x3a8-0x3aa (2)
0x003a0| 07 9a 90 99 61 9c| ....a.| data: raw bits 0x3aa-0x3b7 (13)
0x003b0|90 99 61 9a 90 99 61 |..a...a |
0x003a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x3a6-0x3a8 (2)
0x003a0| 0d 00 | .. | size: 13 0x3a8-0x3aa (2)
| | | flags{}: 0x3aa-0x3ab (1)
0x003a0| 07 | . | unused: 0 0x3aa-0x3aa.5 (0.5)
0x003a0| 07 | . | creation_time_present: true 0x3aa.5-0x3aa.6 (0.1)
0x003a0| 07 | . | access_time_present: true 0x3aa.6-0x3aa.7 (0.1)
0x003a0| 07 | . | modification_time_present: true 0x3aa.7-0x3ab (0.1)
0x003a0| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x3ab-0x3af (4)
0x003a0| 9c| .| access_time: 1637453980 (2021-11-21T00:19:40Z) 0x3af-0x3b3 (4)
0x003b0|90 99 61 |..a |
0x003b0| 9a 90 99 61 | ...a | creation_time: 1637453978 (2021-11-21T00:19:38Z) 0x3b3-0x3b7 (4)
| | | [1]{}: extra_field 0x3b7-0x3c6 (15)
0x003b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x3b7-0x3b9 (2)
0x003b0| 0b 00 | .. | data_size: 11 0x3b9-0x3bb (2)
0x003b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x3b7-0x3b9 (2)
0x003b0| 0b 00 | .. | size: 11 0x3b9-0x3bb (2)
0x003b0| 01 04 f5 01 00| .....| data: raw bits 0x3bb-0x3c6 (11)
0x003c0|00 04 14 00 00 00 |...... |
| | | file_comment: "" 0x3c6-0x3c6 (0)
@ -593,14 +673,16 @@ $ fq -d zip dv test-macos.zip
0x003c0| 00| .| language_encoding: false 0x3cf.4-0x3cf.5 (0.1)
0x003c0| 00| .| unused1: 0 0x3cf.5-0x3d0 (0.3)
0x003d0|08 00 |.. | compression_method: "deflated" (8) 0x3d0-0x3d2 (2)
| | | last_modification_date{}: 0x3d2-0x3d4 (2)
0x003d0| 81 | . | hours: 16 0x3d2-0x3d2.5 (0.5)
0x003d0| 81 01 | .. | minutes: 8 0x3d2.5-0x3d3.3 (0.6)
0x003d0| 01 | . | seconds: 1 0x3d3.3-0x3d4 (0.5)
| | | last_modification_time{}: 0x3d4-0x3d6 (2)
0x003d0| 73 | s | year: 57 0x3d4-0x3d4.7 (0.7)
0x003d0| 73 53 | sS | month: 10 0x3d4.7-0x3d5.3 (0.4)
0x003d0| 53 | S | day: 19 0x3d5.3-0x3d6 (0.5)
| | | last_modification{}: 0x3d2-0x3d6 (4)
0x003d0| 81 01 | .. | fat_time: 0x181 0x3d2-0x3d4 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x003d0| 73 53 | sS | fat_date: 0x5373 0x3d4-0x3d6 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x003d0| 45 e5 98 ad | E... | crc32_uncompressed: 0xad98e545 0x3d6-0x3da (4)
0x003d0| 06 00 00 00 | .... | compressed_size: 6 0x3da-0x3de (4)
0x003d0| 04 00| ..| uncompressed_size: 4 0x3de-0x3e2 (4)
@ -615,13 +697,20 @@ $ fq -d zip dv test-macos.zip
0x003f0| 74 65 73 74 2f 61 2f 61 2e 74 78 74| test/a/a.txt| file_name: "test/a/a.txt" 0x3f4-0x400 (12)
| | | extra_fields[0:2]: 0x400-0x420 (32)
| | | [0]{}: extra_field 0x400-0x411 (17)
0x00400|55 54 |UT | header_id: 0x5455 (extended timestamp) 0x400-0x402 (2)
0x00400| 0d 00 | .. | data_size: 13 0x402-0x404 (2)
0x00400| 07 c2 dd 96 61 32 e0 96 61 c2 dd 96| ....a2..a...| data: raw bits 0x404-0x411 (13)
0x00400|55 54 |UT | tag: 0x5455 (extended timestamp) 0x400-0x402 (2)
0x00400| 0d 00 | .. | size: 13 0x402-0x404 (2)
| | | flags{}: 0x404-0x405 (1)
0x00400| 07 | . | unused: 0 0x404-0x404.5 (0.5)
0x00400| 07 | . | creation_time_present: true 0x404.5-0x404.6 (0.1)
0x00400| 07 | . | access_time_present: true 0x404.6-0x404.7 (0.1)
0x00400| 07 | . | modification_time_present: true 0x404.7-0x405 (0.1)
0x00400| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x405-0x409 (4)
0x00400| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0x409-0x40d (4)
0x00400| c2 dd 96| ...| creation_time: 1637277122 (2021-11-18T23:12:02Z) 0x40d-0x411 (4)
0x00410|61 |a |
| | | [1]{}: extra_field 0x411-0x420 (15)
0x00410| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x411-0x413 (2)
0x00410| 0b 00 | .. | data_size: 11 0x413-0x415 (2)
0x00410| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x411-0x413 (2)
0x00410| 0b 00 | .. | size: 11 0x413-0x415 (2)
0x00410| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x415-0x420 (11)
| | | file_comment: "" 0x420-0x420 (0)
| | | end_of_central_directory_record{}: 0x420-0x436 (22)

View File

@ -19,14 +19,16 @@ $ fq -d zip dv test0.zip
0x00000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x00000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x00000| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x00000| 73 | s | hours: 14 0xa-0xa.5 (0.5)
0x00000| 73 0a | s. | minutes: 24 0xa.5-0xb.3 (0.6)
0x00000| 0a | . | seconds: 10 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x00000| 75 | u | year: 58 0xc-0xc.7 (0.7)
0x00000| 75 53 | uS | month: 10 0xc.7-0xd.3 (0.4)
0x00000| 53 | S | day: 19 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x00000| 73 0a | s. | fat_time: 0xa73 0xa-0xc (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00000| 75 53 | uS | fat_date: 0x5375 0xc-0xe (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00000| 00 00| ..| crc32_uncompressed: 0x0 0xe-0x12 (4)
0x00010|00 00 |.. |
0x00010| 00 00 00 00 | .... | compressed_size: 0 0x12-0x16 (4)
@ -37,12 +39,18 @@ $ fq -d zip dv test0.zip
0x00020|73 74 2f |st/ |
| | | extra_fields[0:2]: 0x23-0x3f (28)
| | | [0]{}: extra_field 0x23-0x30 (13)
0x00020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | data_size: 9 0x25-0x27 (2)
0x00020| 03 9a 90 99 61 9b 90 99 61| ....a...a| data: raw bits 0x27-0x30 (9)
0x00020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | size: 9 0x25-0x27 (2)
| | | flags{}: 0x27-0x28 (1)
0x00020| 03 | . | unused: 0 0x27-0x27.5 (0.5)
0x00020| 03 | . | creation_time_present: false 0x27.5-0x27.6 (0.1)
0x00020| 03 | . | access_time_present: true 0x27.6-0x27.7 (0.1)
0x00020| 03 | . | modification_time_present: true 0x27.7-0x28 (0.1)
0x00020| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x28-0x2c (4)
0x00020| 9b 90 99 61| ...a| access_time: 1637453979 (2021-11-21T00:19:39Z) 0x2c-0x30 (4)
| | | [1]{}: extra_field 0x30-0x3f (15)
0x00030|75 78 |ux | header_id: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | data_size: 11 0x32-0x34 (2)
0x00030|75 78 |ux | tag: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | size: 11 0x32-0x34 (2)
0x00030| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x34-0x3f (11)
| | | uncompressed: raw bits 0x3f-0x3f (0)
| | | [1]{}: local_file 0x3f-0x80 (65)
@ -64,14 +72,16 @@ $ fq -d zip dv test0.zip
0x00040| 00 | . | language_encoding: false 0x46.4-0x46.5 (0.1)
0x00040| 00 | . | unused1: 0 0x46.5-0x47 (0.3)
0x00040| 00 00 | .. | compression_method: "none" (0) 0x47-0x49 (2)
| | | last_modification_date{}: 0x49-0x4b (2)
0x00040| 81 | . | hours: 16 0x49-0x49.5 (0.5)
0x00040| 81 01 | .. | minutes: 8 0x49.5-0x4a.3 (0.6)
0x00040| 01 | . | seconds: 1 0x4a.3-0x4b (0.5)
| | | last_modification_time{}: 0x4b-0x4d (2)
0x00040| 73 | s | year: 57 0x4b-0x4b.7 (0.7)
0x00040| 73 53 | sS | month: 10 0x4b.7-0x4c.3 (0.4)
0x00040| 53 | S | day: 19 0x4c.3-0x4d (0.5)
| | | last_modification{}: 0x49-0x4d (4)
0x00040| 81 01 | .. | fat_time: 0x181 0x49-0x4b (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00040| 73 53 | sS | fat_date: 0x5373 0x4b-0x4d (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00040| 00 00 00| ...| crc32_uncompressed: 0x0 0x4d-0x51 (4)
0x00050|00 |. |
0x00050| 00 00 00 00 | .... | compressed_size: 0 0x51-0x55 (4)
@ -82,13 +92,19 @@ $ fq -d zip dv test0.zip
0x00060|74 2f 61 2f |t/a/ |
| | | extra_fields[0:2]: 0x64-0x80 (28)
| | | [0]{}: extra_field 0x64-0x71 (13)
0x00060| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x00060| 09 00 | .. | data_size: 9 0x66-0x68 (2)
0x00060| 03 c2 dd 96 61 c2 dd 96| ....a...| data: raw bits 0x68-0x71 (9)
0x00060| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x00060| 09 00 | .. | size: 9 0x66-0x68 (2)
| | | flags{}: 0x68-0x69 (1)
0x00060| 03 | . | unused: 0 0x68-0x68.5 (0.5)
0x00060| 03 | . | creation_time_present: false 0x68.5-0x68.6 (0.1)
0x00060| 03 | . | access_time_present: true 0x68.6-0x68.7 (0.1)
0x00060| 03 | . | modification_time_present: true 0x68.7-0x69 (0.1)
0x00060| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x69-0x6d (4)
0x00060| c2 dd 96| ...| access_time: 1637277122 (2021-11-18T23:12:02Z) 0x6d-0x71 (4)
0x00070|61 |a |
| | | [1]{}: extra_field 0x71-0x80 (15)
0x00070| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x00070| 0b 00 | .. | data_size: 11 0x73-0x75 (2)
0x00070| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x00070| 0b 00 | .. | size: 11 0x73-0x75 (2)
0x00070| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x75-0x80 (11)
| | | uncompressed: raw bits 0x80-0x80 (0)
| | | [2]{}: local_file 0x80-0xca (74)
@ -109,14 +125,16 @@ $ fq -d zip dv test0.zip
0x00080| 00 | . | language_encoding: false 0x87.4-0x87.5 (0.1)
0x00080| 00 | . | unused1: 0 0x87.5-0x88 (0.3)
0x00080| 00 00 | .. | compression_method: "none" (0) 0x88-0x8a (2)
| | | last_modification_date{}: 0x8a-0x8c (2)
0x00080| 81 | . | hours: 16 0x8a-0x8a.5 (0.5)
0x00080| 81 01 | .. | minutes: 8 0x8a.5-0x8b.3 (0.6)
0x00080| 01 | . | seconds: 1 0x8b.3-0x8c (0.5)
| | | last_modification_time{}: 0x8c-0x8e (2)
0x00080| 73 | s | year: 57 0x8c-0x8c.7 (0.7)
0x00080| 73 53 | sS | month: 10 0x8c.7-0x8d.3 (0.4)
0x00080| 53 | S | day: 19 0x8d.3-0x8e (0.5)
| | | last_modification{}: 0x8a-0x8e (4)
0x00080| 81 01 | .. | fat_time: 0x181 0x8a-0x8c (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00080| 73 53 | sS | fat_date: 0x5373 0x8c-0x8e (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00080| 45 e5| E.| crc32_uncompressed: 0xad98e545 0x8e-0x92 (4)
0x00090|98 ad |.. |
0x00090| 04 00 00 00 | .... | compressed_size: 4 0x92-0x96 (4)
@ -127,13 +145,19 @@ $ fq -d zip dv test0.zip
0x000a0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0xaa-0xc6 (28)
| | | [0]{}: extra_field 0xaa-0xb7 (13)
0x000a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x000a0| 09 00 | .. | data_size: 9 0xac-0xae (2)
0x000a0| 03 c2| ..| data: raw bits 0xae-0xb7 (9)
0x000b0|dd 96 61 32 e0 96 61 |..a2..a |
0x000a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x000a0| 09 00 | .. | size: 9 0xac-0xae (2)
| | | flags{}: 0xae-0xaf (1)
0x000a0| 03 | . | unused: 0 0xae-0xae.5 (0.5)
0x000a0| 03 | . | creation_time_present: false 0xae.5-0xae.6 (0.1)
0x000a0| 03 | . | access_time_present: true 0xae.6-0xae.7 (0.1)
0x000a0| 03 | . | modification_time_present: true 0xae.7-0xaf (0.1)
0x000a0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xaf-0xb3 (4)
0x000b0|dd 96 61 |..a |
0x000b0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xb3-0xb7 (4)
| | | [1]{}: extra_field 0xb7-0xc6 (15)
0x000b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x000b0| 0b 00 | .. | data_size: 11 0xb9-0xbb (2)
0x000b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x000b0| 0b 00 | .. | size: 11 0xb9-0xbb (2)
0x000b0| 01 04 f5 01 00| .....| data: raw bits 0xbb-0xc6 (11)
0x000c0|00 04 14 00 00 00 |...... |
0x000c0| 61 61 61 61 | aaaa | uncompressed: raw bits 0xc6-0xca (4)
@ -155,14 +179,16 @@ $ fq -d zip dv test0.zip
0x000d0| 00 | . | language_encoding: false 0xd1.4-0xd1.5 (0.1)
0x000d0| 00 | . | unused1: 0 0xd1.5-0xd2 (0.3)
0x000d0| 08 00 | .. | compression_method: "deflated" (8) 0xd2-0xd4 (2)
| | | last_modification_date{}: 0xd4-0xd6 (2)
0x000d0| 81 | . | hours: 16 0xd4-0xd4.5 (0.5)
0x000d0| 81 01 | .. | minutes: 8 0xd4.5-0xd5.3 (0.6)
0x000d0| 01 | . | seconds: 1 0xd5.3-0xd6 (0.5)
| | | last_modification_time{}: 0xd6-0xd8 (2)
0x000d0| 73 | s | year: 57 0xd6-0xd6.7 (0.7)
0x000d0| 73 53 | sS | month: 10 0xd6.7-0xd7.3 (0.4)
0x000d0| 53 | S | day: 19 0xd7.3-0xd8 (0.5)
| | | last_modification{}: 0xd4-0xd8 (4)
0x000d0| 81 01 | .. | fat_time: 0x181 0xd4-0xd6 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x000d0| 73 53 | sS | fat_date: 0x5373 0xd6-0xd8 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x000d0| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0xd8-0xdc (4)
0x000d0| 06 00 00 00| ....| compressed_size: 6 0xdc-0xe0 (4)
0x000e0|35 00 00 00 |5... | uncompressed_size: 53 0xe0-0xe4 (4)
@ -172,13 +198,19 @@ $ fq -d zip dv test0.zip
0x000f0|78 74 |xt |
| | | extra_fields[0:2]: 0xf2-0x10e (28)
| | | [0]{}: extra_field 0xf2-0xff (13)
0x000f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x000f0| 09 00 | .. | data_size: 9 0xf4-0xf6 (2)
0x000f0| 03 c2 dd 96 61 32 e0 96 61 | ....a2..a | data: raw bits 0xf6-0xff (9)
0x000f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x000f0| 09 00 | .. | size: 9 0xf4-0xf6 (2)
| | | flags{}: 0xf6-0xf7 (1)
0x000f0| 03 | . | unused: 0 0xf6-0xf6.5 (0.5)
0x000f0| 03 | . | creation_time_present: false 0xf6.5-0xf6.6 (0.1)
0x000f0| 03 | . | access_time_present: true 0xf6.6-0xf6.7 (0.1)
0x000f0| 03 | . | modification_time_present: true 0xf6.7-0xf7 (0.1)
0x000f0| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xf7-0xfb (4)
0x000f0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xfb-0xff (4)
| | | [1]{}: extra_field 0xff-0x10e (15)
0x000f0| 75| u| header_id: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x000f0| 75| u| tag: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x00100|78 |x |
0x00100| 0b 00 | .. | data_size: 11 0x101-0x103 (2)
0x00100| 0b 00 | .. | size: 11 0x101-0x103 (2)
0x00100| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x103-0x10e (11)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
0x000|61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61|aaaaaaaaaaaaaaaa| uncompressed: raw bits 0x0-0x35 (53)
@ -203,14 +235,16 @@ $ fq -d zip dv test0.zip
0x00110| 00 | . | language_encoding: false 0x11b.4-0x11b.5 (0.1)
0x00110| 00 | . | unused1: 0 0x11b.5-0x11c (0.3)
0x00110| 08 00 | .. | compression_method: "deflated" (8) 0x11c-0x11e (2)
| | | last_modification_date{}: 0x11e-0x120 (2)
0x00110| 73 | s | hours: 14 0x11e-0x11e.5 (0.5)
0x00110| 73 0a| s.| minutes: 24 0x11e.5-0x11f.3 (0.6)
0x00110| 0a| .| seconds: 10 0x11f.3-0x120 (0.5)
| | | last_modification_time{}: 0x120-0x122 (2)
0x00120|75 |u | year: 58 0x120-0x120.7 (0.7)
0x00120|75 53 |uS | month: 10 0x120.7-0x121.3 (0.4)
0x00120| 53 | S | day: 19 0x121.3-0x122 (0.5)
| | | last_modification{}: 0x11e-0x122 (4)
0x00110| 73 0a| s.| fat_time: 0xa73 0x11e-0x120 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00120|75 53 |uS | fat_date: 0x5375 0x120-0x122 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00120| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x122-0x126 (4)
0x00120| d0 00 00 00 | .... | compressed_size: 208 0x126-0x12a (4)
0x00120| 03 01 00 00 | .... | uncompressed_size: 259 0x12a-0x12e (4)
@ -219,12 +253,18 @@ $ fq -d zip dv test0.zip
0x00130| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x132-0x13c (10)
| | | extra_fields[0:2]: 0x13c-0x158 (28)
| | | [0]{}: extra_field 0x13c-0x149 (13)
0x00130| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x00130| 09 00| ..| data_size: 9 0x13e-0x140 (2)
0x00140|03 9a 90 99 61 9c 90 99 61 |....a...a | data: raw bits 0x140-0x149 (9)
0x00130| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x00130| 09 00| ..| size: 9 0x13e-0x140 (2)
| | | flags{}: 0x140-0x141 (1)
0x00140|03 |. | unused: 0 0x140-0x140.5 (0.5)
0x00140|03 |. | creation_time_present: false 0x140.5-0x140.6 (0.1)
0x00140|03 |. | access_time_present: true 0x140.6-0x140.7 (0.1)
0x00140|03 |. | modification_time_present: true 0x140.7-0x141 (0.1)
0x00140| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x141-0x145 (4)
0x00140| 9c 90 99 61 | ...a | access_time: 1637453980 (2021-11-21T00:19:40Z) 0x145-0x149 (4)
| | | [1]{}: extra_field 0x149-0x158 (15)
0x00140| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x00140| 0b 00 | .. | data_size: 11 0x14b-0x14d (2)
0x00140| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x00140| 0b 00 | .. | size: 11 0x14b-0x14d (2)
0x00140| 01 04 f5| ...| data: raw bits 0x14d-0x158 (11)
0x00150|01 00 00 04 14 00 00 00 |........ |
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| uncompressed{}: (png) 0x0-0x103 (259)
@ -363,14 +403,16 @@ $ fq -d zip dv test0.zip
0x00230| 00 | . | language_encoding: false 0x231.4-0x231.5 (0.1)
0x00230| 00 | . | unused1: 0 0x231.5-0x232 (0.3)
0x00230| 00 00 | .. | compression_method: "none" (0) 0x232-0x234 (2)
| | | last_modification_date{}: 0x234-0x236 (2)
0x00230| 73 | s | hours: 14 0x234-0x234.5 (0.5)
0x00230| 73 0a | s. | minutes: 24 0x234.5-0x235.3 (0.6)
0x00230| 0a | . | seconds: 10 0x235.3-0x236 (0.5)
| | | last_modification_time{}: 0x236-0x238 (2)
0x00230| 75 | u | year: 58 0x236-0x236.7 (0.7)
0x00230| 75 53 | uS | month: 10 0x236.7-0x237.3 (0.4)
0x00230| 53 | S | day: 19 0x237.3-0x238 (0.5)
| | | last_modification{}: 0x234-0x238 (4)
0x00230| 73 0a | s. | fat_time: 0xa73 0x234-0x236 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00230| 75 53 | uS | fat_date: 0x5375 0x236-0x238 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00230| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x238-0x23c (4)
0x00230| 00 00 00 00| ....| compressed_size: 0 0x23c-0x240 (4)
0x00240|00 00 00 00 |.... | uncompressed_size: 0 0x240-0x244 (4)
@ -385,13 +427,17 @@ $ fq -d zip dv test0.zip
0x00250| 74 65 73 74 2f | test/ | file_name: "test/" 0x256-0x25b (5)
| | | extra_fields[0:2]: 0x25b-0x273 (24)
| | | [0]{}: extra_field 0x25b-0x264 (9)
0x00250| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x00250| 05 00 | .. | data_size: 5 0x25d-0x25f (2)
0x00250| 03| .| data: raw bits 0x25f-0x264 (5)
0x00260|9a 90 99 61 |...a |
0x00250| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x00250| 05 00 | .. | size: 5 0x25d-0x25f (2)
| | | flags{}: 0x25f-0x260 (1)
0x00250| 03| .| unused: 0 0x25f-0x25f.5 (0.5)
0x00250| 03| .| creation_time_present: false 0x25f.5-0x25f.6 (0.1)
0x00250| 03| .| access_time_present: true 0x25f.6-0x25f.7 (0.1)
0x00250| 03| .| modification_time_present: true 0x25f.7-0x260 (0.1)
0x00260|9a 90 99 61 |...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x260-0x264 (4)
| | | [1]{}: extra_field 0x264-0x273 (15)
0x00260| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x00260| 0b 00 | .. | data_size: 11 0x266-0x268 (2)
0x00260| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x00260| 0b 00 | .. | size: 11 0x266-0x268 (2)
0x00260| 01 04 f5 01 00 00 04 14| ........| data: raw bits 0x268-0x273 (11)
0x00270|00 00 00 |... |
| | | file_comment: "" 0x273-0x273 (0)
@ -414,15 +460,17 @@ $ fq -d zip dv test0.zip
0x00270| 00 | . | language_encoding: false 0x27c.4-0x27c.5 (0.1)
0x00270| 00 | . | unused1: 0 0x27c.5-0x27d (0.3)
0x00270| 00 00 | .. | compression_method: "none" (0) 0x27d-0x27f (2)
| | | last_modification_date{}: 0x27f-0x281 (2)
0x00270| 81| .| hours: 16 0x27f-0x27f.5 (0.5)
0x00270| 81| .| minutes: 8 0x27f.5-0x280.3 (0.6)
| | | last_modification{}: 0x27f-0x283 (4)
0x00270| 81| .| fat_time: 0x181 0x27f-0x281 (2)
0x00280|01 |. |
0x00280|01 |. | seconds: 1 0x280.3-0x281 (0.5)
| | | last_modification_time{}: 0x281-0x283 (2)
0x00280| 73 | s | year: 57 0x281-0x281.7 (0.7)
0x00280| 73 53 | sS | month: 10 0x281.7-0x282.3 (0.4)
0x00280| 53 | S | day: 19 0x282.3-0x283 (0.5)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00280| 73 53 | sS | fat_date: 0x5373 0x281-0x283 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00280| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x283-0x287 (4)
0x00280| 00 00 00 00 | .... | compressed_size: 0 0x287-0x28b (4)
0x00280| 00 00 00 00 | .... | uncompressed_size: 0 0x28b-0x28f (4)
@ -438,13 +486,18 @@ $ fq -d zip dv test0.zip
0x002a0| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x2a1-0x2a8 (7)
| | | extra_fields[0:2]: 0x2a8-0x2c0 (24)
| | | [0]{}: extra_field 0x2a8-0x2b1 (9)
0x002a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x002a0| 05 00 | .. | data_size: 5 0x2aa-0x2ac (2)
0x002a0| 03 c2 dd 96| ....| data: raw bits 0x2ac-0x2b1 (5)
0x002a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x002a0| 05 00 | .. | size: 5 0x2aa-0x2ac (2)
| | | flags{}: 0x2ac-0x2ad (1)
0x002a0| 03 | . | unused: 0 0x2ac-0x2ac.5 (0.5)
0x002a0| 03 | . | creation_time_present: false 0x2ac.5-0x2ac.6 (0.1)
0x002a0| 03 | . | access_time_present: true 0x2ac.6-0x2ac.7 (0.1)
0x002a0| 03 | . | modification_time_present: true 0x2ac.7-0x2ad (0.1)
0x002a0| c2 dd 96| ...| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ad-0x2b1 (4)
0x002b0|61 |a |
| | | [1]{}: extra_field 0x2b1-0x2c0 (15)
0x002b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x002b0| 0b 00 | .. | data_size: 11 0x2b3-0x2b5 (2)
0x002b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x002b0| 0b 00 | .. | size: 11 0x2b3-0x2b5 (2)
0x002b0| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x2b5-0x2c0 (11)
| | | file_comment: "" 0x2c0-0x2c0 (0)
| | | [2]{}: central_directory 0x2c0-0x312 (82)
@ -466,14 +519,16 @@ $ fq -d zip dv test0.zip
0x002c0| 00 | . | language_encoding: false 0x2c9.4-0x2c9.5 (0.1)
0x002c0| 00 | . | unused1: 0 0x2c9.5-0x2ca (0.3)
0x002c0| 00 00 | .. | compression_method: "none" (0) 0x2ca-0x2cc (2)
| | | last_modification_date{}: 0x2cc-0x2ce (2)
0x002c0| 81 | . | hours: 16 0x2cc-0x2cc.5 (0.5)
0x002c0| 81 01 | .. | minutes: 8 0x2cc.5-0x2cd.3 (0.6)
0x002c0| 01 | . | seconds: 1 0x2cd.3-0x2ce (0.5)
| | | last_modification_time{}: 0x2ce-0x2d0 (2)
0x002c0| 73 | s | year: 57 0x2ce-0x2ce.7 (0.7)
0x002c0| 73 53| sS| month: 10 0x2ce.7-0x2cf.3 (0.4)
0x002c0| 53| S| day: 19 0x2cf.3-0x2d0 (0.5)
| | | last_modification{}: 0x2cc-0x2d0 (4)
0x002c0| 81 01 | .. | fat_time: 0x181 0x2cc-0x2ce (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x002c0| 73 53| sS| fat_date: 0x5373 0x2ce-0x2d0 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x002d0|45 e5 98 ad |E... | crc32_uncompressed: 0xad98e545 0x2d0-0x2d4 (4)
0x002d0| 04 00 00 00 | .... | compressed_size: 4 0x2d4-0x2d8 (4)
0x002d0| 04 00 00 00 | .... | uncompressed_size: 4 0x2d8-0x2dc (4)
@ -488,13 +543,18 @@ $ fq -d zip dv test0.zip
0x002f0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0x2fa-0x312 (24)
| | | [0]{}: extra_field 0x2fa-0x303 (9)
0x002f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x002f0| 05 00 | .. | data_size: 5 0x2fc-0x2fe (2)
0x002f0| 03 c2| ..| data: raw bits 0x2fe-0x303 (5)
0x002f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x002f0| 05 00 | .. | size: 5 0x2fc-0x2fe (2)
| | | flags{}: 0x2fe-0x2ff (1)
0x002f0| 03 | . | unused: 0 0x2fe-0x2fe.5 (0.5)
0x002f0| 03 | . | creation_time_present: false 0x2fe.5-0x2fe.6 (0.1)
0x002f0| 03 | . | access_time_present: true 0x2fe.6-0x2fe.7 (0.1)
0x002f0| 03 | . | modification_time_present: true 0x2fe.7-0x2ff (0.1)
0x002f0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ff-0x303 (4)
0x00300|dd 96 61 |..a |
| | | [1]{}: extra_field 0x303-0x312 (15)
0x00300| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x00300| 0b 00 | .. | data_size: 11 0x305-0x307 (2)
0x00300| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x00300| 0b 00 | .. | size: 11 0x305-0x307 (2)
0x00300| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x307-0x312 (11)
0x00310|00 00 |.. |
| | | file_comment: "" 0x312-0x312 (0)
@ -517,14 +577,16 @@ $ fq -d zip dv test0.zip
0x00310| 00 | . | language_encoding: false 0x31b.4-0x31b.5 (0.1)
0x00310| 00 | . | unused1: 0 0x31b.5-0x31c (0.3)
0x00310| 08 00 | .. | compression_method: "deflated" (8) 0x31c-0x31e (2)
| | | last_modification_date{}: 0x31e-0x320 (2)
0x00310| 81 | . | hours: 16 0x31e-0x31e.5 (0.5)
0x00310| 81 01| ..| minutes: 8 0x31e.5-0x31f.3 (0.6)
0x00310| 01| .| seconds: 1 0x31f.3-0x320 (0.5)
| | | last_modification_time{}: 0x320-0x322 (2)
0x00320|73 |s | year: 57 0x320-0x320.7 (0.7)
0x00320|73 53 |sS | month: 10 0x320.7-0x321.3 (0.4)
0x00320| 53 | S | day: 19 0x321.3-0x322 (0.5)
| | | last_modification{}: 0x31e-0x322 (4)
0x00310| 81 01| ..| fat_time: 0x181 0x31e-0x320 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00320|73 53 |sS | fat_date: 0x5373 0x320-0x322 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00320| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x322-0x326 (4)
0x00320| 06 00 00 00 | .... | compressed_size: 6 0x326-0x32a (4)
0x00320| 35 00 00 00 | 5... | uncompressed_size: 53 0x32a-0x32e (4)
@ -538,13 +600,18 @@ $ fq -d zip dv test0.zip
0x00340|74 65 73 74 2f 61 2e 74 78 74 |test/a.txt | file_name: "test/a.txt" 0x340-0x34a (10)
| | | extra_fields[0:2]: 0x34a-0x362 (24)
| | | [0]{}: extra_field 0x34a-0x353 (9)
0x00340| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x00340| 05 00 | .. | data_size: 5 0x34c-0x34e (2)
0x00340| 03 c2| ..| data: raw bits 0x34e-0x353 (5)
0x00340| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x00340| 05 00 | .. | size: 5 0x34c-0x34e (2)
| | | flags{}: 0x34e-0x34f (1)
0x00340| 03 | . | unused: 0 0x34e-0x34e.5 (0.5)
0x00340| 03 | . | creation_time_present: false 0x34e.5-0x34e.6 (0.1)
0x00340| 03 | . | access_time_present: true 0x34e.6-0x34e.7 (0.1)
0x00340| 03 | . | modification_time_present: true 0x34e.7-0x34f (0.1)
0x00340| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x34f-0x353 (4)
0x00350|dd 96 61 |..a |
| | | [1]{}: extra_field 0x353-0x362 (15)
0x00350| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x00350| 0b 00 | .. | data_size: 11 0x355-0x357 (2)
0x00350| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x00350| 0b 00 | .. | size: 11 0x355-0x357 (2)
0x00350| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x357-0x362 (11)
0x00360|00 00 |.. |
| | | file_comment: "" 0x362-0x362 (0)
@ -567,14 +634,16 @@ $ fq -d zip dv test0.zip
0x00360| 00 | . | language_encoding: false 0x36b.4-0x36b.5 (0.1)
0x00360| 00 | . | unused1: 0 0x36b.5-0x36c (0.3)
0x00360| 08 00 | .. | compression_method: "deflated" (8) 0x36c-0x36e (2)
| | | last_modification_date{}: 0x36e-0x370 (2)
0x00360| 73 | s | hours: 14 0x36e-0x36e.5 (0.5)
0x00360| 73 0a| s.| minutes: 24 0x36e.5-0x36f.3 (0.6)
0x00360| 0a| .| seconds: 10 0x36f.3-0x370 (0.5)
| | | last_modification_time{}: 0x370-0x372 (2)
0x00370|75 |u | year: 58 0x370-0x370.7 (0.7)
0x00370|75 53 |uS | month: 10 0x370.7-0x371.3 (0.4)
0x00370| 53 | S | day: 19 0x371.3-0x372 (0.5)
| | | last_modification{}: 0x36e-0x372 (4)
0x00360| 73 0a| s.| fat_time: 0xa73 0x36e-0x370 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00370|75 53 |uS | fat_date: 0x5375 0x370-0x372 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00370| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x372-0x376 (4)
0x00370| d0 00 00 00 | .... | compressed_size: 208 0x376-0x37a (4)
0x00370| 03 01 00 00 | .... | uncompressed_size: 259 0x37a-0x37e (4)
@ -588,13 +657,18 @@ $ fq -d zip dv test0.zip
0x00390|74 65 73 74 2f 62 2e 70 6e 67 |test/b.png | file_name: "test/b.png" 0x390-0x39a (10)
| | | extra_fields[0:2]: 0x39a-0x3b2 (24)
| | | [0]{}: extra_field 0x39a-0x3a3 (9)
0x00390| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x00390| 05 00 | .. | data_size: 5 0x39c-0x39e (2)
0x00390| 03 9a| ..| data: raw bits 0x39e-0x3a3 (5)
0x00390| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x00390| 05 00 | .. | size: 5 0x39c-0x39e (2)
| | | flags{}: 0x39e-0x39f (1)
0x00390| 03 | . | unused: 0 0x39e-0x39e.5 (0.5)
0x00390| 03 | . | creation_time_present: false 0x39e.5-0x39e.6 (0.1)
0x00390| 03 | . | access_time_present: true 0x39e.6-0x39e.7 (0.1)
0x00390| 03 | . | modification_time_present: true 0x39e.7-0x39f (0.1)
0x00390| 9a| .| modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x39f-0x3a3 (4)
0x003a0|90 99 61 |..a |
| | | [1]{}: extra_field 0x3a3-0x3b2 (15)
0x003a0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x003a0| 0b 00 | .. | data_size: 11 0x3a5-0x3a7 (2)
0x003a0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x003a0| 0b 00 | .. | size: 11 0x3a5-0x3a7 (2)
0x003a0| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x3a7-0x3b2 (11)
0x003b0|00 00 |.. |
| | | file_comment: "" 0x3b2-0x3b2 (0)

View File

@ -20,14 +20,16 @@ $ fq -d zip dv test64.zip
0x00000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x00000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x00000| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x00000| 6a | j | hours: 13 0xa-0xa.5 (0.5)
0x00000| 6a 96 | j. | minutes: 20 0xa.5-0xb.3 (0.6)
0x00000| 96 | . | seconds: 22 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x00000| 2c | , | year: 22 0xc-0xc.7 (0.7)
0x00000| 2c 54 | ,T | month: 2 0xc.7-0xd.3 (0.4)
0x00000| 54 | T | day: 20 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x00000| 6a 96 | j. | fat_time: 0x966a 0xa-0xc (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00000| 2c 54 | ,T | fat_date: 0x542c 0xc-0xe (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00000| 00 00| ..| crc32_uncompressed: 0x0 0xe-0x12 (4)
0x00010|00 00 |.. |
0x00010| ff ff ff ff | .... | compressed_size: 4294967295 0x12-0x16 (4)
@ -38,17 +40,23 @@ $ fq -d zip dv test64.zip
0x00020|73 74 2f |st/ |
| | | extra_fields[0:3]: 0x23-0x53 (48)
| | | [0]{}: extra_field 0x23-0x30 (13)
0x00020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | data_size: 9 0x25-0x27 (2)
0x00020| 03 17 15 df 61 5d 57 05 62| ....a]W.b| data: raw bits 0x27-0x30 (9)
0x00020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | size: 9 0x25-0x27 (2)
| | | flags{}: 0x27-0x28 (1)
0x00020| 03 | . | unused: 0 0x27-0x27.5 (0.5)
0x00020| 03 | . | creation_time_present: false 0x27.5-0x27.6 (0.1)
0x00020| 03 | . | access_time_present: true 0x27.6-0x27.7 (0.1)
0x00020| 03 | . | modification_time_present: true 0x27.7-0x28 (0.1)
0x00020| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x28-0x2c (4)
0x00020| 5d 57 05 62| ]W.b| access_time: 1644517213 (2022-02-10T18:20:13Z) 0x2c-0x30 (4)
| | | [1]{}: extra_field 0x30-0x3f (15)
0x00030|75 78 |ux | header_id: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | data_size: 11 0x32-0x34 (2)
0x00030|75 78 |ux | tag: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | size: 11 0x32-0x34 (2)
0x00030| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x34-0x3f (11)
| | | [2]{}: extra_field 0x3f-0x53 (20)
0x00030| 01| .| header_id: 0x1 (ZIP64 extended information extra field) 0x3f-0x41 (2)
0x00030| 01| .| tag: 0x1 (ZIP64 extended information extra field) 0x3f-0x41 (2)
0x00040|00 |. |
0x00040| 10 00 | .. | data_size: 16 0x41-0x43 (2)
0x00040| 10 00 | .. | size: 16 0x41-0x43 (2)
0x00040| 00 00 00 00 00 00 00 00 | ........ | uncompressed_size: 0 0x43-0x4b (8)
0x00040| 00 00 00 00 00| .....| compressed_size: 0 0x4b-0x53 (8)
0x00050|00 00 00 |... |
@ -71,15 +79,17 @@ $ fq -d zip dv test64.zip
0x00050| 00 | . | language_encoding: false 0x5a.4-0x5a.5 (0.1)
0x00050| 00 | . | unused1: 0 0x5a.5-0x5b (0.3)
0x00050| 00 00 | .. | compression_method: "none" (0) 0x5b-0x5d (2)
| | | last_modification_date{}: 0x5d-0x5f (2)
0x00050| 6a | j | hours: 13 0x5d-0x5d.5 (0.5)
0x00050| 6a 96 | j. | minutes: 20 0x5d.5-0x5e.3 (0.6)
0x00050| 96 | . | seconds: 22 0x5e.3-0x5f (0.5)
| | | last_modification_time{}: 0x5f-0x61 (2)
0x00050| 2c| ,| year: 22 0x5f-0x5f.7 (0.7)
0x00050| 2c| ,| month: 2 0x5f.7-0x60.3 (0.4)
| | | last_modification{}: 0x5d-0x61 (4)
0x00050| 6a 96 | j. | fat_time: 0x966a 0x5d-0x5f (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00050| 2c| ,| fat_date: 0x542c 0x5f-0x61 (2)
0x00060|54 |T |
0x00060|54 |T | day: 20 0x60.3-0x61 (0.5)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00060| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x61-0x65 (4)
0x00060| ff ff ff ff | .... | compressed_size: 4294967295 0x65-0x69 (4)
0x00060| ff ff ff ff | .... | uncompressed_size: 4294967295 0x69-0x6d (4)
@ -89,18 +99,24 @@ $ fq -d zip dv test64.zip
0x00070| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x71-0x78 (7)
| | | extra_fields[0:3]: 0x78-0xa8 (48)
| | | [0]{}: extra_field 0x78-0x85 (13)
0x00070| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x78-0x7a (2)
0x00070| 09 00 | .. | data_size: 9 0x7a-0x7c (2)
0x00070| 03 17 15 df| ....| data: raw bits 0x7c-0x85 (9)
0x00080|61 19 15 df 61 |a...a |
0x00070| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x78-0x7a (2)
0x00070| 09 00 | .. | size: 9 0x7a-0x7c (2)
| | | flags{}: 0x7c-0x7d (1)
0x00070| 03 | . | unused: 0 0x7c-0x7c.5 (0.5)
0x00070| 03 | . | creation_time_present: false 0x7c.5-0x7c.6 (0.1)
0x00070| 03 | . | access_time_present: true 0x7c.6-0x7c.7 (0.1)
0x00070| 03 | . | modification_time_present: true 0x7c.7-0x7d (0.1)
0x00070| 17 15 df| ...| modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x7d-0x81 (4)
0x00080|61 |a |
0x00080| 19 15 df 61 | ...a | access_time: 1642009881 (2022-01-12T17:51:21Z) 0x81-0x85 (4)
| | | [1]{}: extra_field 0x85-0x94 (15)
0x00080| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x85-0x87 (2)
0x00080| 0b 00 | .. | data_size: 11 0x87-0x89 (2)
0x00080| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x85-0x87 (2)
0x00080| 0b 00 | .. | size: 11 0x87-0x89 (2)
0x00080| 01 04 f5 01 00 00 04| .......| data: raw bits 0x89-0x94 (11)
0x00090|14 00 00 00 |.... |
| | | [2]{}: extra_field 0x94-0xa8 (20)
0x00090| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x94-0x96 (2)
0x00090| 10 00 | .. | data_size: 16 0x96-0x98 (2)
0x00090| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x94-0x96 (2)
0x00090| 10 00 | .. | size: 16 0x96-0x98 (2)
0x00090| 00 00 00 00 00 00 00 00| ........| uncompressed_size: 0 0x98-0xa0 (8)
0x000a0|00 00 00 00 00 00 00 00 |........ | compressed_size: 0 0xa0-0xa8 (8)
| | | uncompressed: raw bits 0xa8-0xa8 (0)
@ -122,14 +138,16 @@ $ fq -d zip dv test64.zip
0x000a0| 00| .| language_encoding: false 0xaf.4-0xaf.5 (0.1)
0x000a0| 00| .| unused1: 0 0xaf.5-0xb0 (0.3)
0x000b0|00 00 |.. | compression_method: "none" (0) 0xb0-0xb2 (2)
| | | last_modification_date{}: 0xb2-0xb4 (2)
0x000b0| 6a | j | hours: 13 0xb2-0xb2.5 (0.5)
0x000b0| 6a 96 | j. | minutes: 20 0xb2.5-0xb3.3 (0.6)
0x000b0| 96 | . | seconds: 22 0xb3.3-0xb4 (0.5)
| | | last_modification_time{}: 0xb4-0xb6 (2)
0x000b0| 2c | , | year: 22 0xb4-0xb4.7 (0.7)
0x000b0| 2c 54 | ,T | month: 2 0xb4.7-0xb5.3 (0.4)
0x000b0| 54 | T | day: 20 0xb5.3-0xb6 (0.5)
| | | last_modification{}: 0xb2-0xb6 (4)
0x000b0| 6a 96 | j. | fat_time: 0x966a 0xb2-0xb4 (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x000b0| 2c 54 | ,T | fat_date: 0x542c 0xb4-0xb6 (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x000b0| 45 e5 98 ad | E... | crc32_uncompressed: 0xad98e545 0xb6-0xba (4)
0x000b0| ff ff ff ff | .... | compressed_size: 4294967295 0xba-0xbe (4)
0x000b0| ff ff| ..| uncompressed_size: 4294967295 0xbe-0xc2 (4)
@ -140,17 +158,23 @@ $ fq -d zip dv test64.zip
0x000d0|78 74 |xt |
| | | extra_fields[0:3]: 0xd2-0x102 (48)
| | | [0]{}: extra_field 0xd2-0xdf (13)
0x000d0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xd2-0xd4 (2)
0x000d0| 09 00 | .. | data_size: 9 0xd4-0xd6 (2)
0x000d0| 03 17 15 df 61 30 15 df 61 | ....a0..a | data: raw bits 0xd6-0xdf (9)
0x000d0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xd2-0xd4 (2)
0x000d0| 09 00 | .. | size: 9 0xd4-0xd6 (2)
| | | flags{}: 0xd6-0xd7 (1)
0x000d0| 03 | . | unused: 0 0xd6-0xd6.5 (0.5)
0x000d0| 03 | . | creation_time_present: false 0xd6.5-0xd6.6 (0.1)
0x000d0| 03 | . | access_time_present: true 0xd6.6-0xd6.7 (0.1)
0x000d0| 03 | . | modification_time_present: true 0xd6.7-0xd7 (0.1)
0x000d0| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0xd7-0xdb (4)
0x000d0| 30 15 df 61 | 0..a | access_time: 1642009904 (2022-01-12T17:51:44Z) 0xdb-0xdf (4)
| | | [1]{}: extra_field 0xdf-0xee (15)
0x000d0| 75| u| header_id: 0x7875 (UNIX UID/GID) 0xdf-0xe1 (2)
0x000d0| 75| u| tag: 0x7875 (UNIX UID/GID) 0xdf-0xe1 (2)
0x000e0|78 |x |
0x000e0| 0b 00 | .. | data_size: 11 0xe1-0xe3 (2)
0x000e0| 0b 00 | .. | size: 11 0xe1-0xe3 (2)
0x000e0| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0xe3-0xee (11)
| | | [2]{}: extra_field 0xee-0x102 (20)
0x000e0| 01 00| ..| header_id: 0x1 (ZIP64 extended information extra field) 0xee-0xf0 (2)
0x000f0|10 00 |.. | data_size: 16 0xf0-0xf2 (2)
0x000e0| 01 00| ..| tag: 0x1 (ZIP64 extended information extra field) 0xee-0xf0 (2)
0x000f0|10 00 |.. | size: 16 0xf0-0xf2 (2)
0x000f0| 04 00 00 00 00 00 00 00 | ........ | uncompressed_size: 4 0xf2-0xfa (8)
0x000f0| 04 00 00 00 00 00| ......| compressed_size: 4 0xfa-0x102 (8)
0x00100|00 00 |.. |
@ -173,14 +197,16 @@ $ fq -d zip dv test64.zip
0x00100| 00 | . | language_encoding: false 0x10d.4-0x10d.5 (0.1)
0x00100| 00 | . | unused1: 0 0x10d.5-0x10e (0.3)
0x00100| 08 00| ..| compression_method: "deflated" (8) 0x10e-0x110 (2)
| | | last_modification_date{}: 0x110-0x112 (2)
0x00110|6a |j | hours: 13 0x110-0x110.5 (0.5)
0x00110|6a 96 |j. | minutes: 20 0x110.5-0x111.3 (0.6)
0x00110| 96 | . | seconds: 22 0x111.3-0x112 (0.5)
| | | last_modification_time{}: 0x112-0x114 (2)
0x00110| 2c | , | year: 22 0x112-0x112.7 (0.7)
0x00110| 2c 54 | ,T | month: 2 0x112.7-0x113.3 (0.4)
0x00110| 54 | T | day: 20 0x113.3-0x114 (0.5)
| | | last_modification{}: 0x110-0x114 (4)
0x00110|6a 96 |j. | fat_time: 0x966a 0x110-0x112 (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00110| 2c 54 | ,T | fat_date: 0x542c 0x112-0x114 (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00110| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x114-0x118 (4)
0x00110| ff ff ff ff | .... | compressed_size: 4294967295 0x118-0x11c (4)
0x00110| ff ff ff ff| ....| uncompressed_size: 4294967295 0x11c-0x120 (4)
@ -189,17 +215,23 @@ $ fq -d zip dv test64.zip
0x00120| 74 65 73 74 2f 61 2e 74 78 74 | test/a.txt | file_name: "test/a.txt" 0x124-0x12e (10)
| | | extra_fields[0:3]: 0x12e-0x15e (48)
| | | [0]{}: extra_field 0x12e-0x13b (13)
0x00120| 55 54| UT| header_id: 0x5455 (extended timestamp) 0x12e-0x130 (2)
0x00130|09 00 |.. | data_size: 9 0x130-0x132 (2)
0x00130| 03 17 15 df 61 2f 15 df 61 | ....a/..a | data: raw bits 0x132-0x13b (9)
0x00120| 55 54| UT| tag: 0x5455 (extended timestamp) 0x12e-0x130 (2)
0x00130|09 00 |.. | size: 9 0x130-0x132 (2)
| | | flags{}: 0x132-0x133 (1)
0x00130| 03 | . | unused: 0 0x132-0x132.5 (0.5)
0x00130| 03 | . | creation_time_present: false 0x132.5-0x132.6 (0.1)
0x00130| 03 | . | access_time_present: true 0x132.6-0x132.7 (0.1)
0x00130| 03 | . | modification_time_present: true 0x132.7-0x133 (0.1)
0x00130| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x133-0x137 (4)
0x00130| 2f 15 df 61 | /..a | access_time: 1642009903 (2022-01-12T17:51:43Z) 0x137-0x13b (4)
| | | [1]{}: extra_field 0x13b-0x14a (15)
0x00130| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x13b-0x13d (2)
0x00130| 0b 00 | .. | data_size: 11 0x13d-0x13f (2)
0x00130| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x13b-0x13d (2)
0x00130| 0b 00 | .. | size: 11 0x13d-0x13f (2)
0x00130| 01| .| data: raw bits 0x13f-0x14a (11)
0x00140|04 f5 01 00 00 04 14 00 00 00 |.......... |
| | | [2]{}: extra_field 0x14a-0x15e (20)
0x00140| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x14a-0x14c (2)
0x00140| 10 00 | .. | data_size: 16 0x14c-0x14e (2)
0x00140| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x14a-0x14c (2)
0x00140| 10 00 | .. | size: 16 0x14c-0x14e (2)
0x00140| 35 00| 5.| uncompressed_size: 53 0x14e-0x156 (8)
0x00150|00 00 00 00 00 00 |...... |
0x00150| 06 00 00 00 00 00 00 00 | ........ | compressed_size: 6 0x156-0x15e (8)
@ -226,14 +258,16 @@ $ fq -d zip dv test64.zip
0x00160| 00 | . | language_encoding: false 0x16b.4-0x16b.5 (0.1)
0x00160| 00 | . | unused1: 0 0x16b.5-0x16c (0.3)
0x00160| 08 00 | .. | compression_method: "deflated" (8) 0x16c-0x16e (2)
| | | last_modification_date{}: 0x16e-0x170 (2)
0x00160| 6a | j | hours: 13 0x16e-0x16e.5 (0.5)
0x00160| 6a 96| j.| minutes: 20 0x16e.5-0x16f.3 (0.6)
0x00160| 96| .| seconds: 22 0x16f.3-0x170 (0.5)
| | | last_modification_time{}: 0x170-0x172 (2)
0x00170|2c |, | year: 22 0x170-0x170.7 (0.7)
0x00170|2c 54 |,T | month: 2 0x170.7-0x171.3 (0.4)
0x00170| 54 | T | day: 20 0x171.3-0x172 (0.5)
| | | last_modification{}: 0x16e-0x172 (4)
0x00160| 6a 96| j.| fat_time: 0x966a 0x16e-0x170 (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00170|2c 54 |,T | fat_date: 0x542c 0x170-0x172 (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00170| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x172-0x176 (4)
0x00170| ff ff ff ff | .... | compressed_size: 4294967295 0x176-0x17a (4)
0x00170| ff ff ff ff | .... | uncompressed_size: 4294967295 0x17a-0x17e (4)
@ -242,17 +276,23 @@ $ fq -d zip dv test64.zip
0x00180| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x182-0x18c (10)
| | | extra_fields[0:3]: 0x18c-0x1bc (48)
| | | [0]{}: extra_field 0x18c-0x199 (13)
0x00180| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x18c-0x18e (2)
0x00180| 09 00| ..| data_size: 9 0x18e-0x190 (2)
0x00190|03 17 15 df 61 30 15 df 61 |....a0..a | data: raw bits 0x190-0x199 (9)
0x00180| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x18c-0x18e (2)
0x00180| 09 00| ..| size: 9 0x18e-0x190 (2)
| | | flags{}: 0x190-0x191 (1)
0x00190|03 |. | unused: 0 0x190-0x190.5 (0.5)
0x00190|03 |. | creation_time_present: false 0x190.5-0x190.6 (0.1)
0x00190|03 |. | access_time_present: true 0x190.6-0x190.7 (0.1)
0x00190|03 |. | modification_time_present: true 0x190.7-0x191 (0.1)
0x00190| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x191-0x195 (4)
0x00190| 30 15 df 61 | 0..a | access_time: 1642009904 (2022-01-12T17:51:44Z) 0x195-0x199 (4)
| | | [1]{}: extra_field 0x199-0x1a8 (15)
0x00190| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x199-0x19b (2)
0x00190| 0b 00 | .. | data_size: 11 0x19b-0x19d (2)
0x00190| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x199-0x19b (2)
0x00190| 0b 00 | .. | size: 11 0x19b-0x19d (2)
0x00190| 01 04 f5| ...| data: raw bits 0x19d-0x1a8 (11)
0x001a0|01 00 00 04 14 00 00 00 |........ |
| | | [2]{}: extra_field 0x1a8-0x1bc (20)
0x001a0| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x1a8-0x1aa (2)
0x001a0| 10 00 | .. | data_size: 16 0x1aa-0x1ac (2)
0x001a0| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x1a8-0x1aa (2)
0x001a0| 10 00 | .. | size: 16 0x1aa-0x1ac (2)
0x001a0| 03 01 00 00| ....| uncompressed_size: 259 0x1ac-0x1b4 (8)
0x001b0|00 00 00 00 |.... |
0x001b0| d0 00 00 00 00 00 00 00 | ........ | compressed_size: 208 0x1b4-0x1bc (8)
@ -392,14 +432,16 @@ $ fq -d zip dv test64.zip
0x00290| 00 | . | language_encoding: false 0x295.4-0x295.5 (0.1)
0x00290| 00 | . | unused1: 0 0x295.5-0x296 (0.3)
0x00290| 00 00 | .. | compression_method: "none" (0) 0x296-0x298 (2)
| | | last_modification_date{}: 0x298-0x29a (2)
0x00290| 6a | j | hours: 13 0x298-0x298.5 (0.5)
0x00290| 6a 96 | j. | minutes: 20 0x298.5-0x299.3 (0.6)
0x00290| 96 | . | seconds: 22 0x299.3-0x29a (0.5)
| | | last_modification_time{}: 0x29a-0x29c (2)
0x00290| 2c | , | year: 22 0x29a-0x29a.7 (0.7)
0x00290| 2c 54 | ,T | month: 2 0x29a.7-0x29b.3 (0.4)
0x00290| 54 | T | day: 20 0x29b.3-0x29c (0.5)
| | | last_modification{}: 0x298-0x29c (4)
0x00290| 6a 96 | j. | fat_time: 0x966a 0x298-0x29a (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00290| 2c 54 | ,T | fat_date: 0x542c 0x29a-0x29c (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00290| 00 00 00 00| ....| crc32_uncompressed: 0x0 0x29c-0x2a0 (4)
0x002a0|00 00 00 00 |.... | compressed_size: 0 0x2a0-0x2a4 (4)
0x002a0| ff ff ff ff | .... | uncompressed_size: 4294967295 0x2a4-0x2a8 (4)
@ -413,18 +455,23 @@ $ fq -d zip dv test64.zip
0x002b0| 74 65 73 74 2f | test/ | file_name: "test/" 0x2ba-0x2bf (5)
| | | extra_fields[0:3]: 0x2bf-0x2e3 (36)
| | | [0]{}: extra_field 0x2bf-0x2c8 (9)
0x002b0| 55| U| header_id: 0x5455 (extended timestamp) 0x2bf-0x2c1 (2)
0x002b0| 55| U| tag: 0x5455 (extended timestamp) 0x2bf-0x2c1 (2)
0x002c0|54 |T |
0x002c0| 05 00 | .. | data_size: 5 0x2c1-0x2c3 (2)
0x002c0| 03 17 15 df 61 | ....a | data: raw bits 0x2c3-0x2c8 (5)
0x002c0| 05 00 | .. | size: 5 0x2c1-0x2c3 (2)
| | | flags{}: 0x2c3-0x2c4 (1)
0x002c0| 03 | . | unused: 0 0x2c3-0x2c3.5 (0.5)
0x002c0| 03 | . | creation_time_present: false 0x2c3.5-0x2c3.6 (0.1)
0x002c0| 03 | . | access_time_present: true 0x2c3.6-0x2c3.7 (0.1)
0x002c0| 03 | . | modification_time_present: true 0x2c3.7-0x2c4 (0.1)
0x002c0| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x2c4-0x2c8 (4)
| | | [1]{}: extra_field 0x2c8-0x2d7 (15)
0x002c0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x2c8-0x2ca (2)
0x002c0| 0b 00 | .. | data_size: 11 0x2ca-0x2cc (2)
0x002c0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x2c8-0x2ca (2)
0x002c0| 0b 00 | .. | size: 11 0x2ca-0x2cc (2)
0x002c0| 01 04 f5 01| ....| data: raw bits 0x2cc-0x2d7 (11)
0x002d0|00 00 04 14 00 00 00 |....... |
| | | [2]{}: extra_field 0x2d7-0x2e3 (12)
0x002d0| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x2d7-0x2d9 (2)
0x002d0| 08 00 | .. | data_size: 8 0x2d9-0x2db (2)
0x002d0| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x2d7-0x2d9 (2)
0x002d0| 08 00 | .. | size: 8 0x2d9-0x2db (2)
0x002d0| 00 00 00 00 00| .....| uncompressed_size: 0 0x2db-0x2e3 (8)
0x002e0|00 00 00 |... |
| | | file_comment: "" 0x2e3-0x2e3 (0)
@ -447,15 +494,17 @@ $ fq -d zip dv test64.zip
0x002e0| 00 | . | language_encoding: false 0x2ec.4-0x2ec.5 (0.1)
0x002e0| 00 | . | unused1: 0 0x2ec.5-0x2ed (0.3)
0x002e0| 00 00 | .. | compression_method: "none" (0) 0x2ed-0x2ef (2)
| | | last_modification_date{}: 0x2ef-0x2f1 (2)
0x002e0| 6a| j| hours: 13 0x2ef-0x2ef.5 (0.5)
0x002e0| 6a| j| minutes: 20 0x2ef.5-0x2f0.3 (0.6)
| | | last_modification{}: 0x2ef-0x2f3 (4)
0x002e0| 6a| j| fat_time: 0x966a 0x2ef-0x2f1 (2)
0x002f0|96 |. |
0x002f0|96 |. | seconds: 22 0x2f0.3-0x2f1 (0.5)
| | | last_modification_time{}: 0x2f1-0x2f3 (2)
0x002f0| 2c | , | year: 22 0x2f1-0x2f1.7 (0.7)
0x002f0| 2c 54 | ,T | month: 2 0x2f1.7-0x2f2.3 (0.4)
0x002f0| 54 | T | day: 20 0x2f2.3-0x2f3 (0.5)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x002f0| 2c 54 | ,T | fat_date: 0x542c 0x2f1-0x2f3 (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x002f0| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x2f3-0x2f7 (4)
0x002f0| 00 00 00 00 | .... | compressed_size: 0 0x2f7-0x2fb (4)
0x002f0| ff ff ff ff | .... | uncompressed_size: 4294967295 0x2fb-0x2ff (4)
@ -471,17 +520,22 @@ $ fq -d zip dv test64.zip
0x00310| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x311-0x318 (7)
| | | extra_fields[0:3]: 0x318-0x33c (36)
| | | [0]{}: extra_field 0x318-0x321 (9)
0x00310| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x318-0x31a (2)
0x00310| 05 00 | .. | data_size: 5 0x31a-0x31c (2)
0x00310| 03 17 15 df| ....| data: raw bits 0x31c-0x321 (5)
0x00310| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x318-0x31a (2)
0x00310| 05 00 | .. | size: 5 0x31a-0x31c (2)
| | | flags{}: 0x31c-0x31d (1)
0x00310| 03 | . | unused: 0 0x31c-0x31c.5 (0.5)
0x00310| 03 | . | creation_time_present: false 0x31c.5-0x31c.6 (0.1)
0x00310| 03 | . | access_time_present: true 0x31c.6-0x31c.7 (0.1)
0x00310| 03 | . | modification_time_present: true 0x31c.7-0x31d (0.1)
0x00310| 17 15 df| ...| modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x31d-0x321 (4)
0x00320|61 |a |
| | | [1]{}: extra_field 0x321-0x330 (15)
0x00320| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x321-0x323 (2)
0x00320| 0b 00 | .. | data_size: 11 0x323-0x325 (2)
0x00320| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x321-0x323 (2)
0x00320| 0b 00 | .. | size: 11 0x323-0x325 (2)
0x00320| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x325-0x330 (11)
| | | [2]{}: extra_field 0x330-0x33c (12)
0x00330|01 00 |.. | header_id: 0x1 (ZIP64 extended information extra field) 0x330-0x332 (2)
0x00330| 08 00 | .. | data_size: 8 0x332-0x334 (2)
0x00330|01 00 |.. | tag: 0x1 (ZIP64 extended information extra field) 0x330-0x332 (2)
0x00330| 08 00 | .. | size: 8 0x332-0x334 (2)
0x00330| 00 00 00 00 00 00 00 00 | ........ | uncompressed_size: 0 0x334-0x33c (8)
| | | file_comment: "" 0x33c-0x33c (0)
| | | [2]{}: central_directory 0x33c-0x39a (94)
@ -503,14 +557,16 @@ $ fq -d zip dv test64.zip
0x00340| 00 | . | language_encoding: false 0x345.4-0x345.5 (0.1)
0x00340| 00 | . | unused1: 0 0x345.5-0x346 (0.3)
0x00340| 00 00 | .. | compression_method: "none" (0) 0x346-0x348 (2)
| | | last_modification_date{}: 0x348-0x34a (2)
0x00340| 6a | j | hours: 13 0x348-0x348.5 (0.5)
0x00340| 6a 96 | j. | minutes: 20 0x348.5-0x349.3 (0.6)
0x00340| 96 | . | seconds: 22 0x349.3-0x34a (0.5)
| | | last_modification_time{}: 0x34a-0x34c (2)
0x00340| 2c | , | year: 22 0x34a-0x34a.7 (0.7)
0x00340| 2c 54 | ,T | month: 2 0x34a.7-0x34b.3 (0.4)
0x00340| 54 | T | day: 20 0x34b.3-0x34c (0.5)
| | | last_modification{}: 0x348-0x34c (4)
0x00340| 6a 96 | j. | fat_time: 0x966a 0x348-0x34a (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00340| 2c 54 | ,T | fat_date: 0x542c 0x34a-0x34c (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00340| 45 e5 98 ad| E...| crc32_uncompressed: 0xad98e545 0x34c-0x350 (4)
0x00350|04 00 00 00 |.... | compressed_size: 4 0x350-0x354 (4)
0x00350| ff ff ff ff | .... | uncompressed_size: 4294967295 0x354-0x358 (4)
@ -525,17 +581,22 @@ $ fq -d zip dv test64.zip
0x00370|2f 61 2e 74 78 74 |/a.txt |
| | | extra_fields[0:3]: 0x376-0x39a (36)
| | | [0]{}: extra_field 0x376-0x37f (9)
0x00370| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x376-0x378 (2)
0x00370| 05 00 | .. | data_size: 5 0x378-0x37a (2)
0x00370| 03 17 15 df 61 | ....a | data: raw bits 0x37a-0x37f (5)
0x00370| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x376-0x378 (2)
0x00370| 05 00 | .. | size: 5 0x378-0x37a (2)
| | | flags{}: 0x37a-0x37b (1)
0x00370| 03 | . | unused: 0 0x37a-0x37a.5 (0.5)
0x00370| 03 | . | creation_time_present: false 0x37a.5-0x37a.6 (0.1)
0x00370| 03 | . | access_time_present: true 0x37a.6-0x37a.7 (0.1)
0x00370| 03 | . | modification_time_present: true 0x37a.7-0x37b (0.1)
0x00370| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x37b-0x37f (4)
| | | [1]{}: extra_field 0x37f-0x38e (15)
0x00370| 75| u| header_id: 0x7875 (UNIX UID/GID) 0x37f-0x381 (2)
0x00370| 75| u| tag: 0x7875 (UNIX UID/GID) 0x37f-0x381 (2)
0x00380|78 |x |
0x00380| 0b 00 | .. | data_size: 11 0x381-0x383 (2)
0x00380| 0b 00 | .. | size: 11 0x381-0x383 (2)
0x00380| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x383-0x38e (11)
| | | [2]{}: extra_field 0x38e-0x39a (12)
0x00380| 01 00| ..| header_id: 0x1 (ZIP64 extended information extra field) 0x38e-0x390 (2)
0x00390|08 00 |.. | data_size: 8 0x390-0x392 (2)
0x00380| 01 00| ..| tag: 0x1 (ZIP64 extended information extra field) 0x38e-0x390 (2)
0x00390|08 00 |.. | size: 8 0x390-0x392 (2)
0x00390| 04 00 00 00 00 00 00 00 | ........ | uncompressed_size: 4 0x392-0x39a (8)
| | | file_comment: "" 0x39a-0x39a (0)
| | | [3]{}: central_directory 0x39a-0x3f6 (92)
@ -557,14 +618,16 @@ $ fq -d zip dv test64.zip
0x003a0| 00 | . | language_encoding: false 0x3a3.4-0x3a3.5 (0.1)
0x003a0| 00 | . | unused1: 0 0x3a3.5-0x3a4 (0.3)
0x003a0| 08 00 | .. | compression_method: "deflated" (8) 0x3a4-0x3a6 (2)
| | | last_modification_date{}: 0x3a6-0x3a8 (2)
0x003a0| 6a | j | hours: 13 0x3a6-0x3a6.5 (0.5)
0x003a0| 6a 96 | j. | minutes: 20 0x3a6.5-0x3a7.3 (0.6)
0x003a0| 96 | . | seconds: 22 0x3a7.3-0x3a8 (0.5)
| | | last_modification_time{}: 0x3a8-0x3aa (2)
0x003a0| 2c | , | year: 22 0x3a8-0x3a8.7 (0.7)
0x003a0| 2c 54 | ,T | month: 2 0x3a8.7-0x3a9.3 (0.4)
0x003a0| 54 | T | day: 20 0x3a9.3-0x3aa (0.5)
| | | last_modification{}: 0x3a6-0x3aa (4)
0x003a0| 6a 96 | j. | fat_time: 0x966a 0x3a6-0x3a8 (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x003a0| 2c 54 | ,T | fat_date: 0x542c 0x3a8-0x3aa (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x003a0| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x3aa-0x3ae (4)
0x003a0| 06 00| ..| compressed_size: 6 0x3ae-0x3b2 (4)
0x003b0|00 00 |.. |
@ -580,17 +643,22 @@ $ fq -d zip dv test64.zip
0x003d0|78 74 |xt |
| | | extra_fields[0:3]: 0x3d2-0x3f6 (36)
| | | [0]{}: extra_field 0x3d2-0x3db (9)
0x003d0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x3d2-0x3d4 (2)
0x003d0| 05 00 | .. | data_size: 5 0x3d4-0x3d6 (2)
0x003d0| 03 17 15 df 61 | ....a | data: raw bits 0x3d6-0x3db (5)
0x003d0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x3d2-0x3d4 (2)
0x003d0| 05 00 | .. | size: 5 0x3d4-0x3d6 (2)
| | | flags{}: 0x3d6-0x3d7 (1)
0x003d0| 03 | . | unused: 0 0x3d6-0x3d6.5 (0.5)
0x003d0| 03 | . | creation_time_present: false 0x3d6.5-0x3d6.6 (0.1)
0x003d0| 03 | . | access_time_present: true 0x3d6.6-0x3d6.7 (0.1)
0x003d0| 03 | . | modification_time_present: true 0x3d6.7-0x3d7 (0.1)
0x003d0| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x3d7-0x3db (4)
| | | [1]{}: extra_field 0x3db-0x3ea (15)
0x003d0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x3db-0x3dd (2)
0x003d0| 0b 00 | .. | data_size: 11 0x3dd-0x3df (2)
0x003d0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x3db-0x3dd (2)
0x003d0| 0b 00 | .. | size: 11 0x3dd-0x3df (2)
0x003d0| 01| .| data: raw bits 0x3df-0x3ea (11)
0x003e0|04 f5 01 00 00 04 14 00 00 00 |.......... |
| | | [2]{}: extra_field 0x3ea-0x3f6 (12)
0x003e0| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x3ea-0x3ec (2)
0x003e0| 08 00 | .. | data_size: 8 0x3ec-0x3ee (2)
0x003e0| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x3ea-0x3ec (2)
0x003e0| 08 00 | .. | size: 8 0x3ec-0x3ee (2)
0x003e0| 35 00| 5.| uncompressed_size: 53 0x3ee-0x3f6 (8)
0x003f0|00 00 00 00 00 00 |...... |
| | | file_comment: "" 0x3f6-0x3f6 (0)
@ -613,14 +681,16 @@ $ fq -d zip dv test64.zip
0x003f0| 00| .| language_encoding: false 0x3ff.4-0x3ff.5 (0.1)
0x003f0| 00| .| unused1: 0 0x3ff.5-0x400 (0.3)
0x00400|08 00 |.. | compression_method: "deflated" (8) 0x400-0x402 (2)
| | | last_modification_date{}: 0x402-0x404 (2)
0x00400| 6a | j | hours: 13 0x402-0x402.5 (0.5)
0x00400| 6a 96 | j. | minutes: 20 0x402.5-0x403.3 (0.6)
0x00400| 96 | . | seconds: 22 0x403.3-0x404 (0.5)
| | | last_modification_time{}: 0x404-0x406 (2)
0x00400| 2c | , | year: 22 0x404-0x404.7 (0.7)
0x00400| 2c 54 | ,T | month: 2 0x404.7-0x405.3 (0.4)
0x00400| 54 | T | day: 20 0x405.3-0x406 (0.5)
| | | last_modification{}: 0x402-0x406 (4)
0x00400| 6a 96 | j. | fat_time: 0x966a 0x402-0x404 (2)
| | | second: 20 (10)
| | | minute: 51
| | | hour: 18
0x00400| 2c 54 | ,T | fat_date: 0x542c 0x404-0x406 (2)
| | | day: 12
| | | month: 1
| | | year: 2022 (42)
| | | unix_guess: 1642013480 (2022-01-12T18:51:20)
0x00400| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x406-0x40a (4)
0x00400| d0 00 00 00 | .... | compressed_size: 208 0x40a-0x40e (4)
0x00400| ff ff| ..| uncompressed_size: 4294967295 0x40e-0x412 (4)
@ -635,17 +705,22 @@ $ fq -d zip dv test64.zip
0x00420| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x424-0x42e (10)
| | | extra_fields[0:3]: 0x42e-0x452 (36)
| | | [0]{}: extra_field 0x42e-0x437 (9)
0x00420| 55 54| UT| header_id: 0x5455 (extended timestamp) 0x42e-0x430 (2)
0x00430|05 00 |.. | data_size: 5 0x430-0x432 (2)
0x00430| 03 17 15 df 61 | ....a | data: raw bits 0x432-0x437 (5)
0x00420| 55 54| UT| tag: 0x5455 (extended timestamp) 0x42e-0x430 (2)
0x00430|05 00 |.. | size: 5 0x430-0x432 (2)
| | | flags{}: 0x432-0x433 (1)
0x00430| 03 | . | unused: 0 0x432-0x432.5 (0.5)
0x00430| 03 | . | creation_time_present: false 0x432.5-0x432.6 (0.1)
0x00430| 03 | . | access_time_present: true 0x432.6-0x432.7 (0.1)
0x00430| 03 | . | modification_time_present: true 0x432.7-0x433 (0.1)
0x00430| 17 15 df 61 | ...a | modification_time: 1642009879 (2022-01-12T17:51:19Z) 0x433-0x437 (4)
| | | [1]{}: extra_field 0x437-0x446 (15)
0x00430| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x437-0x439 (2)
0x00430| 0b 00 | .. | data_size: 11 0x439-0x43b (2)
0x00430| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x437-0x439 (2)
0x00430| 0b 00 | .. | size: 11 0x439-0x43b (2)
0x00430| 01 04 f5 01 00| .....| data: raw bits 0x43b-0x446 (11)
0x00440|00 04 14 00 00 00 |...... |
| | | [2]{}: extra_field 0x446-0x452 (12)
0x00440| 01 00 | .. | header_id: 0x1 (ZIP64 extended information extra field) 0x446-0x448 (2)
0x00440| 08 00 | .. | data_size: 8 0x448-0x44a (2)
0x00440| 01 00 | .. | tag: 0x1 (ZIP64 extended information extra field) 0x446-0x448 (2)
0x00440| 08 00 | .. | size: 8 0x448-0x44a (2)
0x00440| 03 01 00 00 00 00| ......| uncompressed_size: 259 0x44a-0x452 (8)
0x00450|00 00 |.. |
| | | file_comment: "" 0x452-0x452 (0)
@ -662,6 +737,7 @@ $ fq -d zip dv test64.zip
0x00470| c6 01 00 00 00 00| ......| size_of_central_directory: 454 0x47a-0x482 (8)
0x00480|00 00 |.. |
0x00480| 8c 02 00 00 00 00 00 00 | ........ | offset_of_start_of_central_directory: 652 0x482-0x48a (8)
| | | extensible_data[0:0]: 0x48a-0x48a (0)
| | | end_of_central_directory_locator{}: 0x48a-0x49e (20)
0x00480| 50 4b 06 07 | PK.. | signature: raw bits (valid) 0x48a-0x48e (4)
0x00480| 00 00| ..| disk_nr: 0 0x48e-0x492 (4)

View File

@ -19,14 +19,16 @@ $ fq -d zip dv test9.zip
0x00000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x00000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x00000| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x00000| 73 | s | hours: 14 0xa-0xa.5 (0.5)
0x00000| 73 0a | s. | minutes: 24 0xa.5-0xb.3 (0.6)
0x00000| 0a | . | seconds: 10 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x00000| 75 | u | year: 58 0xc-0xc.7 (0.7)
0x00000| 75 53 | uS | month: 10 0xc.7-0xd.3 (0.4)
0x00000| 53 | S | day: 19 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x00000| 73 0a | s. | fat_time: 0xa73 0xa-0xc (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00000| 75 53 | uS | fat_date: 0x5375 0xc-0xe (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00000| 00 00| ..| crc32_uncompressed: 0x0 0xe-0x12 (4)
0x00010|00 00 |.. |
0x00010| 00 00 00 00 | .... | compressed_size: 0 0x12-0x16 (4)
@ -37,12 +39,18 @@ $ fq -d zip dv test9.zip
0x00020|73 74 2f |st/ |
| | | extra_fields[0:2]: 0x23-0x3f (28)
| | | [0]{}: extra_field 0x23-0x30 (13)
0x00020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | data_size: 9 0x25-0x27 (2)
0x00020| 03 9a 90 99 61 9b 90 99 61| ....a...a| data: raw bits 0x27-0x30 (9)
0x00020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x00020| 09 00 | .. | size: 9 0x25-0x27 (2)
| | | flags{}: 0x27-0x28 (1)
0x00020| 03 | . | unused: 0 0x27-0x27.5 (0.5)
0x00020| 03 | . | creation_time_present: false 0x27.5-0x27.6 (0.1)
0x00020| 03 | . | access_time_present: true 0x27.6-0x27.7 (0.1)
0x00020| 03 | . | modification_time_present: true 0x27.7-0x28 (0.1)
0x00020| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x28-0x2c (4)
0x00020| 9b 90 99 61| ...a| access_time: 1637453979 (2021-11-21T00:19:39Z) 0x2c-0x30 (4)
| | | [1]{}: extra_field 0x30-0x3f (15)
0x00030|75 78 |ux | header_id: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | data_size: 11 0x32-0x34 (2)
0x00030|75 78 |ux | tag: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x00030| 0b 00 | .. | size: 11 0x32-0x34 (2)
0x00030| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x34-0x3f (11)
| | | uncompressed: raw bits 0x3f-0x3f (0)
| | | [1]{}: local_file 0x3f-0x80 (65)
@ -64,14 +72,16 @@ $ fq -d zip dv test9.zip
0x00040| 00 | . | language_encoding: false 0x46.4-0x46.5 (0.1)
0x00040| 00 | . | unused1: 0 0x46.5-0x47 (0.3)
0x00040| 00 00 | .. | compression_method: "none" (0) 0x47-0x49 (2)
| | | last_modification_date{}: 0x49-0x4b (2)
0x00040| 81 | . | hours: 16 0x49-0x49.5 (0.5)
0x00040| 81 01 | .. | minutes: 8 0x49.5-0x4a.3 (0.6)
0x00040| 01 | . | seconds: 1 0x4a.3-0x4b (0.5)
| | | last_modification_time{}: 0x4b-0x4d (2)
0x00040| 73 | s | year: 57 0x4b-0x4b.7 (0.7)
0x00040| 73 53 | sS | month: 10 0x4b.7-0x4c.3 (0.4)
0x00040| 53 | S | day: 19 0x4c.3-0x4d (0.5)
| | | last_modification{}: 0x49-0x4d (4)
0x00040| 81 01 | .. | fat_time: 0x181 0x49-0x4b (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00040| 73 53 | sS | fat_date: 0x5373 0x4b-0x4d (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00040| 00 00 00| ...| crc32_uncompressed: 0x0 0x4d-0x51 (4)
0x00050|00 |. |
0x00050| 00 00 00 00 | .... | compressed_size: 0 0x51-0x55 (4)
@ -82,13 +92,19 @@ $ fq -d zip dv test9.zip
0x00060|74 2f 61 2f |t/a/ |
| | | extra_fields[0:2]: 0x64-0x80 (28)
| | | [0]{}: extra_field 0x64-0x71 (13)
0x00060| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x00060| 09 00 | .. | data_size: 9 0x66-0x68 (2)
0x00060| 03 c2 dd 96 61 c2 dd 96| ....a...| data: raw bits 0x68-0x71 (9)
0x00060| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x00060| 09 00 | .. | size: 9 0x66-0x68 (2)
| | | flags{}: 0x68-0x69 (1)
0x00060| 03 | . | unused: 0 0x68-0x68.5 (0.5)
0x00060| 03 | . | creation_time_present: false 0x68.5-0x68.6 (0.1)
0x00060| 03 | . | access_time_present: true 0x68.6-0x68.7 (0.1)
0x00060| 03 | . | modification_time_present: true 0x68.7-0x69 (0.1)
0x00060| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x69-0x6d (4)
0x00060| c2 dd 96| ...| access_time: 1637277122 (2021-11-18T23:12:02Z) 0x6d-0x71 (4)
0x00070|61 |a |
| | | [1]{}: extra_field 0x71-0x80 (15)
0x00070| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x00070| 0b 00 | .. | data_size: 11 0x73-0x75 (2)
0x00070| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x00070| 0b 00 | .. | size: 11 0x73-0x75 (2)
0x00070| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x75-0x80 (11)
| | | uncompressed: raw bits 0x80-0x80 (0)
| | | [2]{}: local_file 0x80-0xca (74)
@ -109,14 +125,16 @@ $ fq -d zip dv test9.zip
0x00080| 00 | . | language_encoding: false 0x87.4-0x87.5 (0.1)
0x00080| 00 | . | unused1: 0 0x87.5-0x88 (0.3)
0x00080| 00 00 | .. | compression_method: "none" (0) 0x88-0x8a (2)
| | | last_modification_date{}: 0x8a-0x8c (2)
0x00080| 81 | . | hours: 16 0x8a-0x8a.5 (0.5)
0x00080| 81 01 | .. | minutes: 8 0x8a.5-0x8b.3 (0.6)
0x00080| 01 | . | seconds: 1 0x8b.3-0x8c (0.5)
| | | last_modification_time{}: 0x8c-0x8e (2)
0x00080| 73 | s | year: 57 0x8c-0x8c.7 (0.7)
0x00080| 73 53 | sS | month: 10 0x8c.7-0x8d.3 (0.4)
0x00080| 53 | S | day: 19 0x8d.3-0x8e (0.5)
| | | last_modification{}: 0x8a-0x8e (4)
0x00080| 81 01 | .. | fat_time: 0x181 0x8a-0x8c (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00080| 73 53 | sS | fat_date: 0x5373 0x8c-0x8e (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00080| 45 e5| E.| crc32_uncompressed: 0xad98e545 0x8e-0x92 (4)
0x00090|98 ad |.. |
0x00090| 04 00 00 00 | .... | compressed_size: 4 0x92-0x96 (4)
@ -127,13 +145,19 @@ $ fq -d zip dv test9.zip
0x000a0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0xaa-0xc6 (28)
| | | [0]{}: extra_field 0xaa-0xb7 (13)
0x000a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x000a0| 09 00 | .. | data_size: 9 0xac-0xae (2)
0x000a0| 03 c2| ..| data: raw bits 0xae-0xb7 (9)
0x000b0|dd 96 61 32 e0 96 61 |..a2..a |
0x000a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x000a0| 09 00 | .. | size: 9 0xac-0xae (2)
| | | flags{}: 0xae-0xaf (1)
0x000a0| 03 | . | unused: 0 0xae-0xae.5 (0.5)
0x000a0| 03 | . | creation_time_present: false 0xae.5-0xae.6 (0.1)
0x000a0| 03 | . | access_time_present: true 0xae.6-0xae.7 (0.1)
0x000a0| 03 | . | modification_time_present: true 0xae.7-0xaf (0.1)
0x000a0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xaf-0xb3 (4)
0x000b0|dd 96 61 |..a |
0x000b0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xb3-0xb7 (4)
| | | [1]{}: extra_field 0xb7-0xc6 (15)
0x000b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x000b0| 0b 00 | .. | data_size: 11 0xb9-0xbb (2)
0x000b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x000b0| 0b 00 | .. | size: 11 0xb9-0xbb (2)
0x000b0| 01 04 f5 01 00| .....| data: raw bits 0xbb-0xc6 (11)
0x000c0|00 04 14 00 00 00 |...... |
0x000c0| 61 61 61 61 | aaaa | uncompressed: raw bits 0xc6-0xca (4)
@ -155,14 +179,16 @@ $ fq -d zip dv test9.zip
0x000d0| 00 | . | language_encoding: false 0xd1.4-0xd1.5 (0.1)
0x000d0| 00 | . | unused1: 0 0xd1.5-0xd2 (0.3)
0x000d0| 08 00 | .. | compression_method: "deflated" (8) 0xd2-0xd4 (2)
| | | last_modification_date{}: 0xd4-0xd6 (2)
0x000d0| 81 | . | hours: 16 0xd4-0xd4.5 (0.5)
0x000d0| 81 01 | .. | minutes: 8 0xd4.5-0xd5.3 (0.6)
0x000d0| 01 | . | seconds: 1 0xd5.3-0xd6 (0.5)
| | | last_modification_time{}: 0xd6-0xd8 (2)
0x000d0| 73 | s | year: 57 0xd6-0xd6.7 (0.7)
0x000d0| 73 53 | sS | month: 10 0xd6.7-0xd7.3 (0.4)
0x000d0| 53 | S | day: 19 0xd7.3-0xd8 (0.5)
| | | last_modification{}: 0xd4-0xd8 (4)
0x000d0| 81 01 | .. | fat_time: 0x181 0xd4-0xd6 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x000d0| 73 53 | sS | fat_date: 0x5373 0xd6-0xd8 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x000d0| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0xd8-0xdc (4)
0x000d0| 06 00 00 00| ....| compressed_size: 6 0xdc-0xe0 (4)
0x000e0|35 00 00 00 |5... | uncompressed_size: 53 0xe0-0xe4 (4)
@ -172,13 +198,19 @@ $ fq -d zip dv test9.zip
0x000f0|78 74 |xt |
| | | extra_fields[0:2]: 0xf2-0x10e (28)
| | | [0]{}: extra_field 0xf2-0xff (13)
0x000f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x000f0| 09 00 | .. | data_size: 9 0xf4-0xf6 (2)
0x000f0| 03 c2 dd 96 61 32 e0 96 61 | ....a2..a | data: raw bits 0xf6-0xff (9)
0x000f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x000f0| 09 00 | .. | size: 9 0xf4-0xf6 (2)
| | | flags{}: 0xf6-0xf7 (1)
0x000f0| 03 | . | unused: 0 0xf6-0xf6.5 (0.5)
0x000f0| 03 | . | creation_time_present: false 0xf6.5-0xf6.6 (0.1)
0x000f0| 03 | . | access_time_present: true 0xf6.6-0xf6.7 (0.1)
0x000f0| 03 | . | modification_time_present: true 0xf6.7-0xf7 (0.1)
0x000f0| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xf7-0xfb (4)
0x000f0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xfb-0xff (4)
| | | [1]{}: extra_field 0xff-0x10e (15)
0x000f0| 75| u| header_id: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x000f0| 75| u| tag: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x00100|78 |x |
0x00100| 0b 00 | .. | data_size: 11 0x101-0x103 (2)
0x00100| 0b 00 | .. | size: 11 0x101-0x103 (2)
0x00100| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x103-0x10e (11)
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef|
0x000|61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61|aaaaaaaaaaaaaaaa| uncompressed: raw bits 0x0-0x35 (53)
@ -203,14 +235,16 @@ $ fq -d zip dv test9.zip
0x00110| 00 | . | language_encoding: false 0x11b.4-0x11b.5 (0.1)
0x00110| 00 | . | unused1: 0 0x11b.5-0x11c (0.3)
0x00110| 08 00 | .. | compression_method: "deflated" (8) 0x11c-0x11e (2)
| | | last_modification_date{}: 0x11e-0x120 (2)
0x00110| 73 | s | hours: 14 0x11e-0x11e.5 (0.5)
0x00110| 73 0a| s.| minutes: 24 0x11e.5-0x11f.3 (0.6)
0x00110| 0a| .| seconds: 10 0x11f.3-0x120 (0.5)
| | | last_modification_time{}: 0x120-0x122 (2)
0x00120|75 |u | year: 58 0x120-0x120.7 (0.7)
0x00120|75 53 |uS | month: 10 0x120.7-0x121.3 (0.4)
0x00120| 53 | S | day: 19 0x121.3-0x122 (0.5)
| | | last_modification{}: 0x11e-0x122 (4)
0x00110| 73 0a| s.| fat_time: 0xa73 0x11e-0x120 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00120|75 53 |uS | fat_date: 0x5375 0x120-0x122 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00120| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x122-0x126 (4)
0x00120| d0 00 00 00 | .... | compressed_size: 208 0x126-0x12a (4)
0x00120| 03 01 00 00 | .... | uncompressed_size: 259 0x12a-0x12e (4)
@ -219,12 +253,18 @@ $ fq -d zip dv test9.zip
0x00130| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x132-0x13c (10)
| | | extra_fields[0:2]: 0x13c-0x158 (28)
| | | [0]{}: extra_field 0x13c-0x149 (13)
0x00130| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x00130| 09 00| ..| data_size: 9 0x13e-0x140 (2)
0x00140|03 9a 90 99 61 9c 90 99 61 |....a...a | data: raw bits 0x140-0x149 (9)
0x00130| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x00130| 09 00| ..| size: 9 0x13e-0x140 (2)
| | | flags{}: 0x140-0x141 (1)
0x00140|03 |. | unused: 0 0x140-0x140.5 (0.5)
0x00140|03 |. | creation_time_present: false 0x140.5-0x140.6 (0.1)
0x00140|03 |. | access_time_present: true 0x140.6-0x140.7 (0.1)
0x00140|03 |. | modification_time_present: true 0x140.7-0x141 (0.1)
0x00140| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x141-0x145 (4)
0x00140| 9c 90 99 61 | ...a | access_time: 1637453980 (2021-11-21T00:19:40Z) 0x145-0x149 (4)
| | | [1]{}: extra_field 0x149-0x158 (15)
0x00140| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x00140| 0b 00 | .. | data_size: 11 0x14b-0x14d (2)
0x00140| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x00140| 0b 00 | .. | size: 11 0x14b-0x14d (2)
0x00140| 01 04 f5| ...| data: raw bits 0x14d-0x158 (11)
0x00150|01 00 00 04 14 00 00 00 |........ |
|00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f|0123456789abcdef| uncompressed{}: (png) 0x0-0x103 (259)
@ -363,14 +403,16 @@ $ fq -d zip dv test9.zip
0x00230| 00 | . | language_encoding: false 0x231.4-0x231.5 (0.1)
0x00230| 00 | . | unused1: 0 0x231.5-0x232 (0.3)
0x00230| 00 00 | .. | compression_method: "none" (0) 0x232-0x234 (2)
| | | last_modification_date{}: 0x234-0x236 (2)
0x00230| 73 | s | hours: 14 0x234-0x234.5 (0.5)
0x00230| 73 0a | s. | minutes: 24 0x234.5-0x235.3 (0.6)
0x00230| 0a | . | seconds: 10 0x235.3-0x236 (0.5)
| | | last_modification_time{}: 0x236-0x238 (2)
0x00230| 75 | u | year: 58 0x236-0x236.7 (0.7)
0x00230| 75 53 | uS | month: 10 0x236.7-0x237.3 (0.4)
0x00230| 53 | S | day: 19 0x237.3-0x238 (0.5)
| | | last_modification{}: 0x234-0x238 (4)
0x00230| 73 0a | s. | fat_time: 0xa73 0x234-0x236 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00230| 75 53 | uS | fat_date: 0x5375 0x236-0x238 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00230| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x238-0x23c (4)
0x00230| 00 00 00 00| ....| compressed_size: 0 0x23c-0x240 (4)
0x00240|00 00 00 00 |.... | uncompressed_size: 0 0x240-0x244 (4)
@ -385,13 +427,17 @@ $ fq -d zip dv test9.zip
0x00250| 74 65 73 74 2f | test/ | file_name: "test/" 0x256-0x25b (5)
| | | extra_fields[0:2]: 0x25b-0x273 (24)
| | | [0]{}: extra_field 0x25b-0x264 (9)
0x00250| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x00250| 05 00 | .. | data_size: 5 0x25d-0x25f (2)
0x00250| 03| .| data: raw bits 0x25f-0x264 (5)
0x00260|9a 90 99 61 |...a |
0x00250| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x00250| 05 00 | .. | size: 5 0x25d-0x25f (2)
| | | flags{}: 0x25f-0x260 (1)
0x00250| 03| .| unused: 0 0x25f-0x25f.5 (0.5)
0x00250| 03| .| creation_time_present: false 0x25f.5-0x25f.6 (0.1)
0x00250| 03| .| access_time_present: true 0x25f.6-0x25f.7 (0.1)
0x00250| 03| .| modification_time_present: true 0x25f.7-0x260 (0.1)
0x00260|9a 90 99 61 |...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x260-0x264 (4)
| | | [1]{}: extra_field 0x264-0x273 (15)
0x00260| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x00260| 0b 00 | .. | data_size: 11 0x266-0x268 (2)
0x00260| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x00260| 0b 00 | .. | size: 11 0x266-0x268 (2)
0x00260| 01 04 f5 01 00 00 04 14| ........| data: raw bits 0x268-0x273 (11)
0x00270|00 00 00 |... |
| | | file_comment: "" 0x273-0x273 (0)
@ -414,15 +460,17 @@ $ fq -d zip dv test9.zip
0x00270| 00 | . | language_encoding: false 0x27c.4-0x27c.5 (0.1)
0x00270| 00 | . | unused1: 0 0x27c.5-0x27d (0.3)
0x00270| 00 00 | .. | compression_method: "none" (0) 0x27d-0x27f (2)
| | | last_modification_date{}: 0x27f-0x281 (2)
0x00270| 81| .| hours: 16 0x27f-0x27f.5 (0.5)
0x00270| 81| .| minutes: 8 0x27f.5-0x280.3 (0.6)
| | | last_modification{}: 0x27f-0x283 (4)
0x00270| 81| .| fat_time: 0x181 0x27f-0x281 (2)
0x00280|01 |. |
0x00280|01 |. | seconds: 1 0x280.3-0x281 (0.5)
| | | last_modification_time{}: 0x281-0x283 (2)
0x00280| 73 | s | year: 57 0x281-0x281.7 (0.7)
0x00280| 73 53 | sS | month: 10 0x281.7-0x282.3 (0.4)
0x00280| 53 | S | day: 19 0x282.3-0x283 (0.5)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00280| 73 53 | sS | fat_date: 0x5373 0x281-0x283 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00280| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x283-0x287 (4)
0x00280| 00 00 00 00 | .... | compressed_size: 0 0x287-0x28b (4)
0x00280| 00 00 00 00 | .... | uncompressed_size: 0 0x28b-0x28f (4)
@ -438,13 +486,18 @@ $ fq -d zip dv test9.zip
0x002a0| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x2a1-0x2a8 (7)
| | | extra_fields[0:2]: 0x2a8-0x2c0 (24)
| | | [0]{}: extra_field 0x2a8-0x2b1 (9)
0x002a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x002a0| 05 00 | .. | data_size: 5 0x2aa-0x2ac (2)
0x002a0| 03 c2 dd 96| ....| data: raw bits 0x2ac-0x2b1 (5)
0x002a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x002a0| 05 00 | .. | size: 5 0x2aa-0x2ac (2)
| | | flags{}: 0x2ac-0x2ad (1)
0x002a0| 03 | . | unused: 0 0x2ac-0x2ac.5 (0.5)
0x002a0| 03 | . | creation_time_present: false 0x2ac.5-0x2ac.6 (0.1)
0x002a0| 03 | . | access_time_present: true 0x2ac.6-0x2ac.7 (0.1)
0x002a0| 03 | . | modification_time_present: true 0x2ac.7-0x2ad (0.1)
0x002a0| c2 dd 96| ...| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ad-0x2b1 (4)
0x002b0|61 |a |
| | | [1]{}: extra_field 0x2b1-0x2c0 (15)
0x002b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x002b0| 0b 00 | .. | data_size: 11 0x2b3-0x2b5 (2)
0x002b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x002b0| 0b 00 | .. | size: 11 0x2b3-0x2b5 (2)
0x002b0| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x2b5-0x2c0 (11)
| | | file_comment: "" 0x2c0-0x2c0 (0)
| | | [2]{}: central_directory 0x2c0-0x312 (82)
@ -466,14 +519,16 @@ $ fq -d zip dv test9.zip
0x002c0| 00 | . | language_encoding: false 0x2c9.4-0x2c9.5 (0.1)
0x002c0| 00 | . | unused1: 0 0x2c9.5-0x2ca (0.3)
0x002c0| 00 00 | .. | compression_method: "none" (0) 0x2ca-0x2cc (2)
| | | last_modification_date{}: 0x2cc-0x2ce (2)
0x002c0| 81 | . | hours: 16 0x2cc-0x2cc.5 (0.5)
0x002c0| 81 01 | .. | minutes: 8 0x2cc.5-0x2cd.3 (0.6)
0x002c0| 01 | . | seconds: 1 0x2cd.3-0x2ce (0.5)
| | | last_modification_time{}: 0x2ce-0x2d0 (2)
0x002c0| 73 | s | year: 57 0x2ce-0x2ce.7 (0.7)
0x002c0| 73 53| sS| month: 10 0x2ce.7-0x2cf.3 (0.4)
0x002c0| 53| S| day: 19 0x2cf.3-0x2d0 (0.5)
| | | last_modification{}: 0x2cc-0x2d0 (4)
0x002c0| 81 01 | .. | fat_time: 0x181 0x2cc-0x2ce (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x002c0| 73 53| sS| fat_date: 0x5373 0x2ce-0x2d0 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x002d0|45 e5 98 ad |E... | crc32_uncompressed: 0xad98e545 0x2d0-0x2d4 (4)
0x002d0| 04 00 00 00 | .... | compressed_size: 4 0x2d4-0x2d8 (4)
0x002d0| 04 00 00 00 | .... | uncompressed_size: 4 0x2d8-0x2dc (4)
@ -488,13 +543,18 @@ $ fq -d zip dv test9.zip
0x002f0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0x2fa-0x312 (24)
| | | [0]{}: extra_field 0x2fa-0x303 (9)
0x002f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x002f0| 05 00 | .. | data_size: 5 0x2fc-0x2fe (2)
0x002f0| 03 c2| ..| data: raw bits 0x2fe-0x303 (5)
0x002f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x002f0| 05 00 | .. | size: 5 0x2fc-0x2fe (2)
| | | flags{}: 0x2fe-0x2ff (1)
0x002f0| 03 | . | unused: 0 0x2fe-0x2fe.5 (0.5)
0x002f0| 03 | . | creation_time_present: false 0x2fe.5-0x2fe.6 (0.1)
0x002f0| 03 | . | access_time_present: true 0x2fe.6-0x2fe.7 (0.1)
0x002f0| 03 | . | modification_time_present: true 0x2fe.7-0x2ff (0.1)
0x002f0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ff-0x303 (4)
0x00300|dd 96 61 |..a |
| | | [1]{}: extra_field 0x303-0x312 (15)
0x00300| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x00300| 0b 00 | .. | data_size: 11 0x305-0x307 (2)
0x00300| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x00300| 0b 00 | .. | size: 11 0x305-0x307 (2)
0x00300| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x307-0x312 (11)
0x00310|00 00 |.. |
| | | file_comment: "" 0x312-0x312 (0)
@ -517,14 +577,16 @@ $ fq -d zip dv test9.zip
0x00310| 00 | . | language_encoding: false 0x31b.4-0x31b.5 (0.1)
0x00310| 00 | . | unused1: 0 0x31b.5-0x31c (0.3)
0x00310| 08 00 | .. | compression_method: "deflated" (8) 0x31c-0x31e (2)
| | | last_modification_date{}: 0x31e-0x320 (2)
0x00310| 81 | . | hours: 16 0x31e-0x31e.5 (0.5)
0x00310| 81 01| ..| minutes: 8 0x31e.5-0x31f.3 (0.6)
0x00310| 01| .| seconds: 1 0x31f.3-0x320 (0.5)
| | | last_modification_time{}: 0x320-0x322 (2)
0x00320|73 |s | year: 57 0x320-0x320.7 (0.7)
0x00320|73 53 |sS | month: 10 0x320.7-0x321.3 (0.4)
0x00320| 53 | S | day: 19 0x321.3-0x322 (0.5)
| | | last_modification{}: 0x31e-0x322 (4)
0x00310| 81 01| ..| fat_time: 0x181 0x31e-0x320 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x00320|73 53 |sS | fat_date: 0x5373 0x320-0x322 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x00320| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x322-0x326 (4)
0x00320| 06 00 00 00 | .... | compressed_size: 6 0x326-0x32a (4)
0x00320| 35 00 00 00 | 5... | uncompressed_size: 53 0x32a-0x32e (4)
@ -538,13 +600,18 @@ $ fq -d zip dv test9.zip
0x00340|74 65 73 74 2f 61 2e 74 78 74 |test/a.txt | file_name: "test/a.txt" 0x340-0x34a (10)
| | | extra_fields[0:2]: 0x34a-0x362 (24)
| | | [0]{}: extra_field 0x34a-0x353 (9)
0x00340| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x00340| 05 00 | .. | data_size: 5 0x34c-0x34e (2)
0x00340| 03 c2| ..| data: raw bits 0x34e-0x353 (5)
0x00340| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x00340| 05 00 | .. | size: 5 0x34c-0x34e (2)
| | | flags{}: 0x34e-0x34f (1)
0x00340| 03 | . | unused: 0 0x34e-0x34e.5 (0.5)
0x00340| 03 | . | creation_time_present: false 0x34e.5-0x34e.6 (0.1)
0x00340| 03 | . | access_time_present: true 0x34e.6-0x34e.7 (0.1)
0x00340| 03 | . | modification_time_present: true 0x34e.7-0x34f (0.1)
0x00340| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x34f-0x353 (4)
0x00350|dd 96 61 |..a |
| | | [1]{}: extra_field 0x353-0x362 (15)
0x00350| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x00350| 0b 00 | .. | data_size: 11 0x355-0x357 (2)
0x00350| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x00350| 0b 00 | .. | size: 11 0x355-0x357 (2)
0x00350| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x357-0x362 (11)
0x00360|00 00 |.. |
| | | file_comment: "" 0x362-0x362 (0)
@ -567,14 +634,16 @@ $ fq -d zip dv test9.zip
0x00360| 00 | . | language_encoding: false 0x36b.4-0x36b.5 (0.1)
0x00360| 00 | . | unused1: 0 0x36b.5-0x36c (0.3)
0x00360| 08 00 | .. | compression_method: "deflated" (8) 0x36c-0x36e (2)
| | | last_modification_date{}: 0x36e-0x370 (2)
0x00360| 73 | s | hours: 14 0x36e-0x36e.5 (0.5)
0x00360| 73 0a| s.| minutes: 24 0x36e.5-0x36f.3 (0.6)
0x00360| 0a| .| seconds: 10 0x36f.3-0x370 (0.5)
| | | last_modification_time{}: 0x370-0x372 (2)
0x00370|75 |u | year: 58 0x370-0x370.7 (0.7)
0x00370|75 53 |uS | month: 10 0x370.7-0x371.3 (0.4)
0x00370| 53 | S | day: 19 0x371.3-0x372 (0.5)
| | | last_modification{}: 0x36e-0x372 (4)
0x00360| 73 0a| s.| fat_time: 0xa73 0x36e-0x370 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x00370|75 53 |uS | fat_date: 0x5375 0x370-0x372 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x00370| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x372-0x376 (4)
0x00370| d0 00 00 00 | .... | compressed_size: 208 0x376-0x37a (4)
0x00370| 03 01 00 00 | .... | uncompressed_size: 259 0x37a-0x37e (4)
@ -588,13 +657,18 @@ $ fq -d zip dv test9.zip
0x00390|74 65 73 74 2f 62 2e 70 6e 67 |test/b.png | file_name: "test/b.png" 0x390-0x39a (10)
| | | extra_fields[0:2]: 0x39a-0x3b2 (24)
| | | [0]{}: extra_field 0x39a-0x3a3 (9)
0x00390| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x00390| 05 00 | .. | data_size: 5 0x39c-0x39e (2)
0x00390| 03 9a| ..| data: raw bits 0x39e-0x3a3 (5)
0x00390| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x00390| 05 00 | .. | size: 5 0x39c-0x39e (2)
| | | flags{}: 0x39e-0x39f (1)
0x00390| 03 | . | unused: 0 0x39e-0x39e.5 (0.5)
0x00390| 03 | . | creation_time_present: false 0x39e.5-0x39e.6 (0.1)
0x00390| 03 | . | access_time_present: true 0x39e.6-0x39e.7 (0.1)
0x00390| 03 | . | modification_time_present: true 0x39e.7-0x39f (0.1)
0x00390| 9a| .| modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x39f-0x3a3 (4)
0x003a0|90 99 61 |..a |
| | | [1]{}: extra_field 0x3a3-0x3b2 (15)
0x003a0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x003a0| 0b 00 | .. | data_size: 11 0x3a5-0x3a7 (2)
0x003a0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x003a0| 0b 00 | .. | size: 11 0x3a5-0x3a7 (2)
0x003a0| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x3a7-0x3b2 (11)
0x003b0|00 00 |.. |
| | | file_comment: "" 0x3b2-0x3b2 (0)

View File

@ -19,14 +19,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x000| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x000| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x000| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x000| 73 | s | hours: 14 0xa-0xa.5 (0.5)
0x000| 73 0a | s. | minutes: 24 0xa.5-0xb.3 (0.6)
0x000| 0a | . | seconds: 10 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x000| 75 | u | year: 58 0xc-0xc.7 (0.7)
0x000| 75 53 | uS | month: 10 0xc.7-0xd.3 (0.4)
0x000| 53 | S | day: 19 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x000| 73 0a | s. | fat_time: 0xa73 0xa-0xc (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x000| 75 53 | uS | fat_date: 0x5375 0xc-0xe (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x000| 00 00| ..| crc32_uncompressed: 0x0 0xe-0x12 (4)
0x010|00 00 |.. |
0x010| 00 00 00 00 | .... | compressed_size: 0 0x12-0x16 (4)
@ -37,12 +39,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x020|73 74 2f |st/ |
| | | extra_fields[0:2]: 0x23-0x3f (28)
| | | [0]{}: extra_field 0x23-0x30 (13)
0x020| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x020| 09 00 | .. | data_size: 9 0x25-0x27 (2)
0x020| 03 9a 90 99 61 9b 90 99 61| ....a...a| data: raw bits 0x27-0x30 (9)
0x020| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x23-0x25 (2)
0x020| 09 00 | .. | size: 9 0x25-0x27 (2)
| | | flags{}: 0x27-0x28 (1)
0x020| 03 | . | unused: 0 0x27-0x27.5 (0.5)
0x020| 03 | . | creation_time_present: false 0x27.5-0x27.6 (0.1)
0x020| 03 | . | access_time_present: true 0x27.6-0x27.7 (0.1)
0x020| 03 | . | modification_time_present: true 0x27.7-0x28 (0.1)
0x020| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x28-0x2c (4)
0x020| 9b 90 99 61| ...a| access_time: 1637453979 (2021-11-21T00:19:39Z) 0x2c-0x30 (4)
| | | [1]{}: extra_field 0x30-0x3f (15)
0x030|75 78 |ux | header_id: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x030| 0b 00 | .. | data_size: 11 0x32-0x34 (2)
0x030|75 78 |ux | tag: 0x7875 (UNIX UID/GID) 0x30-0x32 (2)
0x030| 0b 00 | .. | size: 11 0x32-0x34 (2)
0x030| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x34-0x3f (11)
| | | uncompressed: raw bits 0x3f-0x3f (0)
| | | [1]{}: local_file 0x3f-0x80 (65)
@ -64,14 +72,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x040| 00 | . | language_encoding: false 0x46.4-0x46.5 (0.1)
0x040| 00 | . | unused1: 0 0x46.5-0x47 (0.3)
0x040| 00 00 | .. | compression_method: "none" (0) 0x47-0x49 (2)
| | | last_modification_date{}: 0x49-0x4b (2)
0x040| 81 | . | hours: 16 0x49-0x49.5 (0.5)
0x040| 81 01 | .. | minutes: 8 0x49.5-0x4a.3 (0.6)
0x040| 01 | . | seconds: 1 0x4a.3-0x4b (0.5)
| | | last_modification_time{}: 0x4b-0x4d (2)
0x040| 73 | s | year: 57 0x4b-0x4b.7 (0.7)
0x040| 73 53 | sS | month: 10 0x4b.7-0x4c.3 (0.4)
0x040| 53 | S | day: 19 0x4c.3-0x4d (0.5)
| | | last_modification{}: 0x49-0x4d (4)
0x040| 81 01 | .. | fat_time: 0x181 0x49-0x4b (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x040| 73 53 | sS | fat_date: 0x5373 0x4b-0x4d (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x040| 00 00 00| ...| crc32_uncompressed: 0x0 0x4d-0x51 (4)
0x050|00 |. |
0x050| 00 00 00 00 | .... | compressed_size: 0 0x51-0x55 (4)
@ -82,13 +92,19 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x060|74 2f 61 2f |t/a/ |
| | | extra_fields[0:2]: 0x64-0x80 (28)
| | | [0]{}: extra_field 0x64-0x71 (13)
0x060| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x060| 09 00 | .. | data_size: 9 0x66-0x68 (2)
0x060| 03 c2 dd 96 61 c2 dd 96| ....a...| data: raw bits 0x68-0x71 (9)
0x060| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x64-0x66 (2)
0x060| 09 00 | .. | size: 9 0x66-0x68 (2)
| | | flags{}: 0x68-0x69 (1)
0x060| 03 | . | unused: 0 0x68-0x68.5 (0.5)
0x060| 03 | . | creation_time_present: false 0x68.5-0x68.6 (0.1)
0x060| 03 | . | access_time_present: true 0x68.6-0x68.7 (0.1)
0x060| 03 | . | modification_time_present: true 0x68.7-0x69 (0.1)
0x060| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x69-0x6d (4)
0x060| c2 dd 96| ...| access_time: 1637277122 (2021-11-18T23:12:02Z) 0x6d-0x71 (4)
0x070|61 |a |
| | | [1]{}: extra_field 0x71-0x80 (15)
0x070| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x070| 0b 00 | .. | data_size: 11 0x73-0x75 (2)
0x070| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x71-0x73 (2)
0x070| 0b 00 | .. | size: 11 0x73-0x75 (2)
0x070| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x75-0x80 (11)
| | | uncompressed: raw bits 0x80-0x80 (0)
| | | [2]{}: local_file 0x80-0xca (74)
@ -109,14 +125,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x080| 00 | . | language_encoding: false 0x87.4-0x87.5 (0.1)
0x080| 00 | . | unused1: 0 0x87.5-0x88 (0.3)
0x080| 00 00 | .. | compression_method: "none" (0) 0x88-0x8a (2)
| | | last_modification_date{}: 0x8a-0x8c (2)
0x080| 81 | . | hours: 16 0x8a-0x8a.5 (0.5)
0x080| 81 01 | .. | minutes: 8 0x8a.5-0x8b.3 (0.6)
0x080| 01 | . | seconds: 1 0x8b.3-0x8c (0.5)
| | | last_modification_time{}: 0x8c-0x8e (2)
0x080| 73 | s | year: 57 0x8c-0x8c.7 (0.7)
0x080| 73 53 | sS | month: 10 0x8c.7-0x8d.3 (0.4)
0x080| 53 | S | day: 19 0x8d.3-0x8e (0.5)
| | | last_modification{}: 0x8a-0x8e (4)
0x080| 81 01 | .. | fat_time: 0x181 0x8a-0x8c (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x080| 73 53 | sS | fat_date: 0x5373 0x8c-0x8e (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x080| 45 e5| E.| crc32_uncompressed: 0xad98e545 0x8e-0x92 (4)
0x090|98 ad |.. |
0x090| 04 00 00 00 | .... | compressed_size: 4 0x92-0x96 (4)
@ -127,13 +145,19 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x0a0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0xaa-0xc6 (28)
| | | [0]{}: extra_field 0xaa-0xb7 (13)
0x0a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x0a0| 09 00 | .. | data_size: 9 0xac-0xae (2)
0x0a0| 03 c2| ..| data: raw bits 0xae-0xb7 (9)
0x0b0|dd 96 61 32 e0 96 61 |..a2..a |
0x0a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xaa-0xac (2)
0x0a0| 09 00 | .. | size: 9 0xac-0xae (2)
| | | flags{}: 0xae-0xaf (1)
0x0a0| 03 | . | unused: 0 0xae-0xae.5 (0.5)
0x0a0| 03 | . | creation_time_present: false 0xae.5-0xae.6 (0.1)
0x0a0| 03 | . | access_time_present: true 0xae.6-0xae.7 (0.1)
0x0a0| 03 | . | modification_time_present: true 0xae.7-0xaf (0.1)
0x0a0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xaf-0xb3 (4)
0x0b0|dd 96 61 |..a |
0x0b0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xb3-0xb7 (4)
| | | [1]{}: extra_field 0xb7-0xc6 (15)
0x0b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x0b0| 0b 00 | .. | data_size: 11 0xb9-0xbb (2)
0x0b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0xb7-0xb9 (2)
0x0b0| 0b 00 | .. | size: 11 0xb9-0xbb (2)
0x0b0| 01 04 f5 01 00| .....| data: raw bits 0xbb-0xc6 (11)
0x0c0|00 04 14 00 00 00 |...... |
0x0c0| 61 61 61 61 | aaaa | uncompressed: raw bits 0xc6-0xca (4)
@ -155,14 +179,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x0d0| 00 | . | language_encoding: false 0xd1.4-0xd1.5 (0.1)
0x0d0| 00 | . | unused1: 0 0xd1.5-0xd2 (0.3)
0x0d0| 08 00 | .. | compression_method: "deflated" (8) 0xd2-0xd4 (2)
| | | last_modification_date{}: 0xd4-0xd6 (2)
0x0d0| 81 | . | hours: 16 0xd4-0xd4.5 (0.5)
0x0d0| 81 01 | .. | minutes: 8 0xd4.5-0xd5.3 (0.6)
0x0d0| 01 | . | seconds: 1 0xd5.3-0xd6 (0.5)
| | | last_modification_time{}: 0xd6-0xd8 (2)
0x0d0| 73 | s | year: 57 0xd6-0xd6.7 (0.7)
0x0d0| 73 53 | sS | month: 10 0xd6.7-0xd7.3 (0.4)
0x0d0| 53 | S | day: 19 0xd7.3-0xd8 (0.5)
| | | last_modification{}: 0xd4-0xd8 (4)
0x0d0| 81 01 | .. | fat_time: 0x181 0xd4-0xd6 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x0d0| 73 53 | sS | fat_date: 0x5373 0xd6-0xd8 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x0d0| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0xd8-0xdc (4)
0x0d0| 06 00 00 00| ....| compressed_size: 6 0xdc-0xe0 (4)
0x0e0|35 00 00 00 |5... | uncompressed_size: 53 0xe0-0xe4 (4)
@ -172,13 +198,19 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x0f0|78 74 |xt |
| | | extra_fields[0:2]: 0xf2-0x10e (28)
| | | [0]{}: extra_field 0xf2-0xff (13)
0x0f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x0f0| 09 00 | .. | data_size: 9 0xf4-0xf6 (2)
0x0f0| 03 c2 dd 96 61 32 e0 96 61 | ....a2..a | data: raw bits 0xf6-0xff (9)
0x0f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0xf2-0xf4 (2)
0x0f0| 09 00 | .. | size: 9 0xf4-0xf6 (2)
| | | flags{}: 0xf6-0xf7 (1)
0x0f0| 03 | . | unused: 0 0xf6-0xf6.5 (0.5)
0x0f0| 03 | . | creation_time_present: false 0xf6.5-0xf6.6 (0.1)
0x0f0| 03 | . | access_time_present: true 0xf6.6-0xf6.7 (0.1)
0x0f0| 03 | . | modification_time_present: true 0xf6.7-0xf7 (0.1)
0x0f0| c2 dd 96 61 | ...a | modification_time: 1637277122 (2021-11-18T23:12:02Z) 0xf7-0xfb (4)
0x0f0| 32 e0 96 61 | 2..a | access_time: 1637277746 (2021-11-18T23:22:26Z) 0xfb-0xff (4)
| | | [1]{}: extra_field 0xff-0x10e (15)
0x0f0| 75| u| header_id: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x0f0| 75| u| tag: 0x7875 (UNIX UID/GID) 0xff-0x101 (2)
0x100|78 |x |
0x100| 0b 00 | .. | data_size: 11 0x101-0x103 (2)
0x100| 0b 00 | .. | size: 11 0x101-0x103 (2)
0x100| 01 04 f5 01 00 00 04 14 00 00 00 | ........... | data: raw bits 0x103-0x10e (11)
0x100| 4b 4c| KL| compressed: raw bits 0x10e-0x114 (6)
0x110|24 03 00 00 |$... |
@ -200,14 +232,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x110| 00 | . | language_encoding: false 0x11b.4-0x11b.5 (0.1)
0x110| 00 | . | unused1: 0 0x11b.5-0x11c (0.3)
0x110| 08 00 | .. | compression_method: "deflated" (8) 0x11c-0x11e (2)
| | | last_modification_date{}: 0x11e-0x120 (2)
0x110| 73 | s | hours: 14 0x11e-0x11e.5 (0.5)
0x110| 73 0a| s.| minutes: 24 0x11e.5-0x11f.3 (0.6)
0x110| 0a| .| seconds: 10 0x11f.3-0x120 (0.5)
| | | last_modification_time{}: 0x120-0x122 (2)
0x120|75 |u | year: 58 0x120-0x120.7 (0.7)
0x120|75 53 |uS | month: 10 0x120.7-0x121.3 (0.4)
0x120| 53 | S | day: 19 0x121.3-0x122 (0.5)
| | | last_modification{}: 0x11e-0x122 (4)
0x110| 73 0a| s.| fat_time: 0xa73 0x11e-0x120 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x120|75 53 |uS | fat_date: 0x5375 0x120-0x122 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x120| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x122-0x126 (4)
0x120| d0 00 00 00 | .... | compressed_size: 208 0x126-0x12a (4)
0x120| 03 01 00 00 | .... | uncompressed_size: 259 0x12a-0x12e (4)
@ -216,12 +250,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x130| 74 65 73 74 2f 62 2e 70 6e 67 | test/b.png | file_name: "test/b.png" 0x132-0x13c (10)
| | | extra_fields[0:2]: 0x13c-0x158 (28)
| | | [0]{}: extra_field 0x13c-0x149 (13)
0x130| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x130| 09 00| ..| data_size: 9 0x13e-0x140 (2)
0x140|03 9a 90 99 61 9c 90 99 61 |....a...a | data: raw bits 0x140-0x149 (9)
0x130| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x13c-0x13e (2)
0x130| 09 00| ..| size: 9 0x13e-0x140 (2)
| | | flags{}: 0x140-0x141 (1)
0x140|03 |. | unused: 0 0x140-0x140.5 (0.5)
0x140|03 |. | creation_time_present: false 0x140.5-0x140.6 (0.1)
0x140|03 |. | access_time_present: true 0x140.6-0x140.7 (0.1)
0x140|03 |. | modification_time_present: true 0x140.7-0x141 (0.1)
0x140| 9a 90 99 61 | ...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x141-0x145 (4)
0x140| 9c 90 99 61 | ...a | access_time: 1637453980 (2021-11-21T00:19:40Z) 0x145-0x149 (4)
| | | [1]{}: extra_field 0x149-0x158 (15)
0x140| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x140| 0b 00 | .. | data_size: 11 0x14b-0x14d (2)
0x140| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x149-0x14b (2)
0x140| 0b 00 | .. | size: 11 0x14b-0x14d (2)
0x140| 01 04 f5| ...| data: raw bits 0x14d-0x158 (11)
0x150|01 00 00 04 14 00 00 00 |........ |
0x150| eb 0c f0 73 e7 e5 92 e2| ...s....| compressed: raw bits 0x158-0x228 (208)
@ -247,14 +287,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x230| 00 | . | language_encoding: false 0x231.4-0x231.5 (0.1)
0x230| 00 | . | unused1: 0 0x231.5-0x232 (0.3)
0x230| 00 00 | .. | compression_method: "none" (0) 0x232-0x234 (2)
| | | last_modification_date{}: 0x234-0x236 (2)
0x230| 73 | s | hours: 14 0x234-0x234.5 (0.5)
0x230| 73 0a | s. | minutes: 24 0x234.5-0x235.3 (0.6)
0x230| 0a | . | seconds: 10 0x235.3-0x236 (0.5)
| | | last_modification_time{}: 0x236-0x238 (2)
0x230| 75 | u | year: 58 0x236-0x236.7 (0.7)
0x230| 75 53 | uS | month: 10 0x236.7-0x237.3 (0.4)
0x230| 53 | S | day: 19 0x237.3-0x238 (0.5)
| | | last_modification{}: 0x234-0x238 (4)
0x230| 73 0a | s. | fat_time: 0xa73 0x234-0x236 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x230| 75 53 | uS | fat_date: 0x5375 0x236-0x238 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x230| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x238-0x23c (4)
0x230| 00 00 00 00| ....| compressed_size: 0 0x23c-0x240 (4)
0x240|00 00 00 00 |.... | uncompressed_size: 0 0x240-0x244 (4)
@ -269,13 +311,17 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x250| 74 65 73 74 2f | test/ | file_name: "test/" 0x256-0x25b (5)
| | | extra_fields[0:2]: 0x25b-0x273 (24)
| | | [0]{}: extra_field 0x25b-0x264 (9)
0x250| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x250| 05 00 | .. | data_size: 5 0x25d-0x25f (2)
0x250| 03| .| data: raw bits 0x25f-0x264 (5)
0x260|9a 90 99 61 |...a |
0x250| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x25b-0x25d (2)
0x250| 05 00 | .. | size: 5 0x25d-0x25f (2)
| | | flags{}: 0x25f-0x260 (1)
0x250| 03| .| unused: 0 0x25f-0x25f.5 (0.5)
0x250| 03| .| creation_time_present: false 0x25f.5-0x25f.6 (0.1)
0x250| 03| .| access_time_present: true 0x25f.6-0x25f.7 (0.1)
0x250| 03| .| modification_time_present: true 0x25f.7-0x260 (0.1)
0x260|9a 90 99 61 |...a | modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x260-0x264 (4)
| | | [1]{}: extra_field 0x264-0x273 (15)
0x260| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x260| 0b 00 | .. | data_size: 11 0x266-0x268 (2)
0x260| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x264-0x266 (2)
0x260| 0b 00 | .. | size: 11 0x266-0x268 (2)
0x260| 01 04 f5 01 00 00 04 14| ........| data: raw bits 0x268-0x273 (11)
0x270|00 00 00 |... |
| | | file_comment: "" 0x273-0x273 (0)
@ -298,15 +344,17 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x270| 00 | . | language_encoding: false 0x27c.4-0x27c.5 (0.1)
0x270| 00 | . | unused1: 0 0x27c.5-0x27d (0.3)
0x270| 00 00 | .. | compression_method: "none" (0) 0x27d-0x27f (2)
| | | last_modification_date{}: 0x27f-0x281 (2)
0x270| 81| .| hours: 16 0x27f-0x27f.5 (0.5)
0x270| 81| .| minutes: 8 0x27f.5-0x280.3 (0.6)
| | | last_modification{}: 0x27f-0x283 (4)
0x270| 81| .| fat_time: 0x181 0x27f-0x281 (2)
0x280|01 |. |
0x280|01 |. | seconds: 1 0x280.3-0x281 (0.5)
| | | last_modification_time{}: 0x281-0x283 (2)
0x280| 73 | s | year: 57 0x281-0x281.7 (0.7)
0x280| 73 53 | sS | month: 10 0x281.7-0x282.3 (0.4)
0x280| 53 | S | day: 19 0x282.3-0x283 (0.5)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x280| 73 53 | sS | fat_date: 0x5373 0x281-0x283 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x280| 00 00 00 00 | .... | crc32_uncompressed: 0x0 0x283-0x287 (4)
0x280| 00 00 00 00 | .... | compressed_size: 0 0x287-0x28b (4)
0x280| 00 00 00 00 | .... | uncompressed_size: 0 0x28b-0x28f (4)
@ -322,13 +370,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x2a0| 74 65 73 74 2f 61 2f | test/a/ | file_name: "test/a/" 0x2a1-0x2a8 (7)
| | | extra_fields[0:2]: 0x2a8-0x2c0 (24)
| | | [0]{}: extra_field 0x2a8-0x2b1 (9)
0x2a0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x2a0| 05 00 | .. | data_size: 5 0x2aa-0x2ac (2)
0x2a0| 03 c2 dd 96| ....| data: raw bits 0x2ac-0x2b1 (5)
0x2a0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2a8-0x2aa (2)
0x2a0| 05 00 | .. | size: 5 0x2aa-0x2ac (2)
| | | flags{}: 0x2ac-0x2ad (1)
0x2a0| 03 | . | unused: 0 0x2ac-0x2ac.5 (0.5)
0x2a0| 03 | . | creation_time_present: false 0x2ac.5-0x2ac.6 (0.1)
0x2a0| 03 | . | access_time_present: true 0x2ac.6-0x2ac.7 (0.1)
0x2a0| 03 | . | modification_time_present: true 0x2ac.7-0x2ad (0.1)
0x2a0| c2 dd 96| ...| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ad-0x2b1 (4)
0x2b0|61 |a |
| | | [1]{}: extra_field 0x2b1-0x2c0 (15)
0x2b0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x2b0| 0b 00 | .. | data_size: 11 0x2b3-0x2b5 (2)
0x2b0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x2b1-0x2b3 (2)
0x2b0| 0b 00 | .. | size: 11 0x2b3-0x2b5 (2)
0x2b0| 01 04 f5 01 00 00 04 14 00 00 00| ...........| data: raw bits 0x2b5-0x2c0 (11)
| | | file_comment: "" 0x2c0-0x2c0 (0)
| | | [2]{}: central_directory 0x2c0-0x312 (82)
@ -350,14 +403,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x2c0| 00 | . | language_encoding: false 0x2c9.4-0x2c9.5 (0.1)
0x2c0| 00 | . | unused1: 0 0x2c9.5-0x2ca (0.3)
0x2c0| 00 00 | .. | compression_method: "none" (0) 0x2ca-0x2cc (2)
| | | last_modification_date{}: 0x2cc-0x2ce (2)
0x2c0| 81 | . | hours: 16 0x2cc-0x2cc.5 (0.5)
0x2c0| 81 01 | .. | minutes: 8 0x2cc.5-0x2cd.3 (0.6)
0x2c0| 01 | . | seconds: 1 0x2cd.3-0x2ce (0.5)
| | | last_modification_time{}: 0x2ce-0x2d0 (2)
0x2c0| 73 | s | year: 57 0x2ce-0x2ce.7 (0.7)
0x2c0| 73 53| sS| month: 10 0x2ce.7-0x2cf.3 (0.4)
0x2c0| 53| S| day: 19 0x2cf.3-0x2d0 (0.5)
| | | last_modification{}: 0x2cc-0x2d0 (4)
0x2c0| 81 01 | .. | fat_time: 0x181 0x2cc-0x2ce (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x2c0| 73 53| sS| fat_date: 0x5373 0x2ce-0x2d0 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x2d0|45 e5 98 ad |E... | crc32_uncompressed: 0xad98e545 0x2d0-0x2d4 (4)
0x2d0| 04 00 00 00 | .... | compressed_size: 4 0x2d4-0x2d8 (4)
0x2d0| 04 00 00 00 | .... | uncompressed_size: 4 0x2d8-0x2dc (4)
@ -372,13 +427,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x2f0|73 74 2f 61 2f 61 2e 74 78 74 |st/a/a.txt |
| | | extra_fields[0:2]: 0x2fa-0x312 (24)
| | | [0]{}: extra_field 0x2fa-0x303 (9)
0x2f0| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x2f0| 05 00 | .. | data_size: 5 0x2fc-0x2fe (2)
0x2f0| 03 c2| ..| data: raw bits 0x2fe-0x303 (5)
0x2f0| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x2fa-0x2fc (2)
0x2f0| 05 00 | .. | size: 5 0x2fc-0x2fe (2)
| | | flags{}: 0x2fe-0x2ff (1)
0x2f0| 03 | . | unused: 0 0x2fe-0x2fe.5 (0.5)
0x2f0| 03 | . | creation_time_present: false 0x2fe.5-0x2fe.6 (0.1)
0x2f0| 03 | . | access_time_present: true 0x2fe.6-0x2fe.7 (0.1)
0x2f0| 03 | . | modification_time_present: true 0x2fe.7-0x2ff (0.1)
0x2f0| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x2ff-0x303 (4)
0x300|dd 96 61 |..a |
| | | [1]{}: extra_field 0x303-0x312 (15)
0x300| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x300| 0b 00 | .. | data_size: 11 0x305-0x307 (2)
0x300| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x303-0x305 (2)
0x300| 0b 00 | .. | size: 11 0x305-0x307 (2)
0x300| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x307-0x312 (11)
0x310|00 00 |.. |
| | | file_comment: "" 0x312-0x312 (0)
@ -401,14 +461,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x310| 00 | . | language_encoding: false 0x31b.4-0x31b.5 (0.1)
0x310| 00 | . | unused1: 0 0x31b.5-0x31c (0.3)
0x310| 08 00 | .. | compression_method: "deflated" (8) 0x31c-0x31e (2)
| | | last_modification_date{}: 0x31e-0x320 (2)
0x310| 81 | . | hours: 16 0x31e-0x31e.5 (0.5)
0x310| 81 01| ..| minutes: 8 0x31e.5-0x31f.3 (0.6)
0x310| 01| .| seconds: 1 0x31f.3-0x320 (0.5)
| | | last_modification_time{}: 0x320-0x322 (2)
0x320|73 |s | year: 57 0x320-0x320.7 (0.7)
0x320|73 53 |sS | month: 10 0x320.7-0x321.3 (0.4)
0x320| 53 | S | day: 19 0x321.3-0x322 (0.5)
| | | last_modification{}: 0x31e-0x322 (4)
0x310| 81 01| ..| fat_time: 0x181 0x31e-0x320 (2)
| | | second: 2 (1)
| | | minute: 12
| | | hour: 0
0x320|73 53 |sS | fat_date: 0x5373 0x320-0x322 (2)
| | | day: 19
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637280722 (2021-11-19T00:12:02)
0x320| 2c 89 b3 aa | ,... | crc32_uncompressed: 0xaab3892c 0x322-0x326 (4)
0x320| 06 00 00 00 | .... | compressed_size: 6 0x326-0x32a (4)
0x320| 35 00 00 00 | 5... | uncompressed_size: 53 0x32a-0x32e (4)
@ -422,13 +484,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x340|74 65 73 74 2f 61 2e 74 78 74 |test/a.txt | file_name: "test/a.txt" 0x340-0x34a (10)
| | | extra_fields[0:2]: 0x34a-0x362 (24)
| | | [0]{}: extra_field 0x34a-0x353 (9)
0x340| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x340| 05 00 | .. | data_size: 5 0x34c-0x34e (2)
0x340| 03 c2| ..| data: raw bits 0x34e-0x353 (5)
0x340| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x34a-0x34c (2)
0x340| 05 00 | .. | size: 5 0x34c-0x34e (2)
| | | flags{}: 0x34e-0x34f (1)
0x340| 03 | . | unused: 0 0x34e-0x34e.5 (0.5)
0x340| 03 | . | creation_time_present: false 0x34e.5-0x34e.6 (0.1)
0x340| 03 | . | access_time_present: true 0x34e.6-0x34e.7 (0.1)
0x340| 03 | . | modification_time_present: true 0x34e.7-0x34f (0.1)
0x340| c2| .| modification_time: 1637277122 (2021-11-18T23:12:02Z) 0x34f-0x353 (4)
0x350|dd 96 61 |..a |
| | | [1]{}: extra_field 0x353-0x362 (15)
0x350| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x350| 0b 00 | .. | data_size: 11 0x355-0x357 (2)
0x350| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x353-0x355 (2)
0x350| 0b 00 | .. | size: 11 0x355-0x357 (2)
0x350| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x357-0x362 (11)
0x360|00 00 |.. |
| | | file_comment: "" 0x362-0x362 (0)
@ -451,14 +518,16 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x360| 00 | . | language_encoding: false 0x36b.4-0x36b.5 (0.1)
0x360| 00 | . | unused1: 0 0x36b.5-0x36c (0.3)
0x360| 08 00 | .. | compression_method: "deflated" (8) 0x36c-0x36e (2)
| | | last_modification_date{}: 0x36e-0x370 (2)
0x360| 73 | s | hours: 14 0x36e-0x36e.5 (0.5)
0x360| 73 0a| s.| minutes: 24 0x36e.5-0x36f.3 (0.6)
0x360| 0a| .| seconds: 10 0x36f.3-0x370 (0.5)
| | | last_modification_time{}: 0x370-0x372 (2)
0x370|75 |u | year: 58 0x370-0x370.7 (0.7)
0x370|75 53 |uS | month: 10 0x370.7-0x371.3 (0.4)
0x370| 53 | S | day: 19 0x371.3-0x372 (0.5)
| | | last_modification{}: 0x36e-0x372 (4)
0x360| 73 0a| s.| fat_time: 0xa73 0x36e-0x370 (2)
| | | second: 38 (19)
| | | minute: 19
| | | hour: 1
0x370|75 53 |uS | fat_date: 0x5375 0x370-0x372 (2)
| | | day: 21
| | | month: 11
| | | year: 2021 (41)
| | | unix_guess: 1637457578 (2021-11-21T01:19:38)
0x370| cd 66 90 fb | .f.. | crc32_uncompressed: 0xfb9066cd 0x372-0x376 (4)
0x370| d0 00 00 00 | .... | compressed_size: 208 0x376-0x37a (4)
0x370| 03 01 00 00 | .... | uncompressed_size: 259 0x37a-0x37e (4)
@ -472,13 +541,18 @@ $ fq -d zip -o uncompress=false dv test9.zip
0x390|74 65 73 74 2f 62 2e 70 6e 67 |test/b.png | file_name: "test/b.png" 0x390-0x39a (10)
| | | extra_fields[0:2]: 0x39a-0x3b2 (24)
| | | [0]{}: extra_field 0x39a-0x3a3 (9)
0x390| 55 54 | UT | header_id: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x390| 05 00 | .. | data_size: 5 0x39c-0x39e (2)
0x390| 03 9a| ..| data: raw bits 0x39e-0x3a3 (5)
0x390| 55 54 | UT | tag: 0x5455 (extended timestamp) 0x39a-0x39c (2)
0x390| 05 00 | .. | size: 5 0x39c-0x39e (2)
| | | flags{}: 0x39e-0x39f (1)
0x390| 03 | . | unused: 0 0x39e-0x39e.5 (0.5)
0x390| 03 | . | creation_time_present: false 0x39e.5-0x39e.6 (0.1)
0x390| 03 | . | access_time_present: true 0x39e.6-0x39e.7 (0.1)
0x390| 03 | . | modification_time_present: true 0x39e.7-0x39f (0.1)
0x390| 9a| .| modification_time: 1637453978 (2021-11-21T00:19:38Z) 0x39f-0x3a3 (4)
0x3a0|90 99 61 |..a |
| | | [1]{}: extra_field 0x3a3-0x3b2 (15)
0x3a0| 75 78 | ux | header_id: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x3a0| 0b 00 | .. | data_size: 11 0x3a5-0x3a7 (2)
0x3a0| 75 78 | ux | tag: 0x7875 (UNIX UID/GID) 0x3a3-0x3a5 (2)
0x3a0| 0b 00 | .. | size: 11 0x3a5-0x3a7 (2)
0x3a0| 01 04 f5 01 00 00 04 14 00| .........| data: raw bits 0x3a7-0x3b2 (11)
0x3b0|00 00 |.. |
| | | file_comment: "" 0x3b2-0x3b2 (0)

View File

@ -20,14 +20,16 @@ $ fq dv zip64-offset-not-ffffffff.zip
0x00| 00 | . | language_encoding: false 0x7.4-0x7.5 (0.1)
0x00| 00 | . | unused1: 0 0x7.5-0x8 (0.3)
0x00| 00 00 | .. | compression_method: "none" (0) 0x8-0xa (2)
| | | last_modification_date{}: 0xa-0xc (2)
0x00| 4f | O | hours: 9 0xa-0xa.5 (0.5)
0x00| 4f 72 | Or | minutes: 59 0xa.5-0xb.3 (0.6)
0x00| 72 | r | seconds: 18 0xb.3-0xc (0.5)
| | | last_modification_time{}: 0xc-0xe (2)
0x00| 5b | [ | year: 45 0xc-0xc.7 (0.7)
0x00| 5b 40 | [@ | month: 10 0xc.7-0xd.3 (0.4)
0x00| 40 | @ | day: 0 0xd.3-0xe (0.5)
| | | last_modification{}: 0xa-0xe (4)
0x00| 4f 72 | Or | fat_time: 0x724f 0xa-0xc (2)
| | | second: 30 (15)
| | | minute: 18
| | | hour: 14
0x00| 5b 40 | [@ | fat_date: 0x405b 0xc-0xe (2)
| | | day: 27
| | | month: 2
| | | year: 2012 (32)
| | | unix_guess: 1330352310 (2012-02-27T14:18:30)
0x00| 07 a1| ..| crc32_uncompressed: 0xddeaa107 0xe-0x12 (4)
0x10|ea dd |.. |
0x10| ff ff ff ff | .... | compressed_size: 4294967295 0x12-0x16 (4)
@ -37,9 +39,9 @@ $ fq dv zip64-offset-not-ffffffff.zip
0x10| 2d | - | file_name: "-" 0x1e-0x1f (1)
| | | extra_fields[0:1]: 0x1f-0x33 (20)
| | | [0]{}: extra_field 0x1f-0x33 (20)
0x10| 01| .| header_id: 0x1 (ZIP64 extended information extra field) 0x1f-0x21 (2)
0x10| 01| .| tag: 0x1 (ZIP64 extended information extra field) 0x1f-0x21 (2)
0x20|00 |. |
0x20| 10 00 | .. | data_size: 16 0x21-0x23 (2)
0x20| 10 00 | .. | size: 16 0x21-0x23 (2)
0x20| 02 00 00 00 00 00 00 00 | ........ | uncompressed_size: 2 0x23-0x2b (8)
0x20| 02 00 00 00 00| .....| compressed_size: 2 0x2b-0x33 (8)
0x30|00 00 00 |... |
@ -65,14 +67,16 @@ $ fq dv zip64-offset-not-ffffffff.zip
0x30| 00 | . | unused1: 0 0x3e.5-0x3f (0.3)
0x30| 00| .| compression_method: "none" (0) 0x3f-0x41 (2)
0x40|00 |. |
| | | last_modification_date{}: 0x41-0x43 (2)
0x40| 4f | O | hours: 9 0x41-0x41.5 (0.5)
0x40| 4f 72 | Or | minutes: 59 0x41.5-0x42.3 (0.6)
0x40| 72 | r | seconds: 18 0x42.3-0x43 (0.5)
| | | last_modification_time{}: 0x43-0x45 (2)
0x40| 5b | [ | year: 45 0x43-0x43.7 (0.7)
0x40| 5b 40 | [@ | month: 10 0x43.7-0x44.3 (0.4)
0x40| 40 | @ | day: 0 0x44.3-0x45 (0.5)
| | | last_modification{}: 0x41-0x45 (4)
0x40| 4f 72 | Or | fat_time: 0x724f 0x41-0x43 (2)
| | | second: 30 (15)
| | | minute: 18
| | | hour: 14
0x40| 5b 40 | [@ | fat_date: 0x405b 0x43-0x45 (2)
| | | day: 27
| | | month: 2
| | | year: 2012 (32)
| | | unix_guess: 1330352310 (2012-02-27T14:18:30)
0x40| 07 a1 ea dd | .... | crc32_uncompressed: 0xddeaa107 0x45-0x49 (4)
0x40| 02 00 00 00 | .... | compressed_size: 2 0x49-0x4d (4)
0x40| 02 00 00| ...| uncompressed_size: 2 0x4d-0x51 (4)
@ -101,6 +105,7 @@ $ fq dv zip64-offset-not-ffffffff.zip
0x80| 2f 00 00 00| /...| size_of_central_directory: 47 0x8c-0x94 (8)
0x90|00 00 00 00 |.... |
0x90| 35 00 00 00 00 00 00 00 | 5....... | offset_of_start_of_central_directory: 53 0x94-0x9c (8)
| | | extensible_data[0:0]: 0x9c-0x9c (0)
| | | end_of_central_directory_locator{}: 0x9c-0xb0 (20)
0x90| 50 4b 06 07| PK..| signature: raw bits (valid) 0x9c-0xa0 (4)
0xa0|00 00 00 00 |.... | disk_nr: 0 0xa0-0xa4 (4)

View File

@ -8,6 +8,7 @@ import (
"compress/flate"
"embed"
"io"
"time"
"github.com/wader/fq/format"
"github.com/wader/fq/pkg/decode"
@ -85,62 +86,190 @@ var (
)
const (
headerIDZip64ExtendedInformation = 0x001
headerTagZip64ExtendedInformation = 0x001
headerTagExtendedTimestamp = 0x5455
)
var headerIDMap = scalar.UintMapDescription{
headerIDZip64ExtendedInformation: "ZIP64 extended information extra field",
0x0007: "AV Info",
0x0009: "OS/2 extended attributes",
0x000a: "NTFS (Win9x/WinNT FileTimes)",
0x000c: "OpenVMS",
0x000d: "Unix",
0x000f: "Patch Descriptor",
0x0014: "PKCS#7 Store for X.509 Certificates",
0x0015: "X.509 Certificate ID and Signature for individual file",
0x0016: "X.509 Certificate ID for Central Directory",
0x0065: "IBM S/390 attributes - uncompressed",
0x0066: "IBM S/390 attributes - compressed",
0x07c8: "Info-ZIP Macintosh (old, J. Lee)",
0x2605: "ZipIt Macintosh (first version)",
0x2705: "ZipIt Macintosh v 1.3.5 and newer (w/o full filename)",
0x334d: "Info-ZIP Macintosh (new, D. Haase's 'Mac3' field )",
0x4154: "Tandem NSK",
0x4341: "Acorn/SparkFS (David Pilling)",
0x4453: "Windows NT security descriptor (binary ACL)",
0x4704: "VM/CMS",
0x470f: "MVS",
var headerTagMap = scalar.UintMapDescription{
headerTagZip64ExtendedInformation: "ZIP64 extended information extra field",
0x0007: "AV Info",
0x0009: "OS/2 extended attributes",
0x000a: "NTFS (Win9x/WinNT FileTimes)",
0x000c: "OpenVMS",
0x000d: "Unix",
0x000f: "Patch Descriptor",
0x0014: "PKCS#7 Store for X.509 Certificates",
0x0015: "X.509 Certificate ID and Signature for individual file",
0x0016: "X.509 Certificate ID for Central Directory",
0x0065: "IBM S/390 attributes - uncompressed",
0x0066: "IBM S/390 attributes - compressed",
0x07c8: "Info-ZIP Macintosh (old, J. Lee)",
0x2605: "ZipIt Macintosh (first version)",
0x2705: "ZipIt Macintosh v 1.3.5 and newer (w/o full filename)",
0x334d: "Info-ZIP Macintosh (new, D. Haase's 'Mac3' field )",
0x4154: "Tandem NSK",
0x4341: "Acorn/SparkFS (David Pilling)",
0x4453: "Windows NT security descriptor (binary ACL)",
0x4704: "VM/CMS",
0x470f: "MVS",
// "inofficial" in original table
//nolint:misspell
0x4854: "Theos, old inofficial port",
0x4b46: "FWKCS MD5 (see below)",
0x4c41: "OS/2 access control list (text ACL)",
0x4d49: "Info-ZIP OpenVMS (obsolete)",
0x4d63: "Macintosh SmartZIP, by Macro Bambini",
0x4f4c: "Xceed original location extra field",
0x5356: "AOS/VS (binary ACL)",
0x5455: "extended timestamp",
0x5855: "Info-ZIP Unix (original; also OS/2, NT, etc.)",
0x554e: "Xceed unicode extra field",
0x6542: "BeOS (BeBox, PowerMac, etc.)",
0x6854: "Theos",
0x756e: "ASi Unix",
0x7855: "Info-ZIP Unix (new)",
0x7875: "UNIX UID/GID",
0xfb4a: "SMS/QDOS",
0x4854: "Theos, old inofficial port",
0x4b46: "FWKCS MD5 (see below)",
0x4c41: "OS/2 access control list (text ACL)",
0x4d49: "Info-ZIP OpenVMS (obsolete)",
0x4d63: "Macintosh SmartZIP, by Macro Bambini",
0x4f4c: "Xceed original location extra field",
0x5356: "AOS/VS (binary ACL)",
headerTagExtendedTimestamp: "extended timestamp",
0x5855: "Info-ZIP Unix (original; also OS/2, NT, etc.)",
0x554e: "Xceed unicode extra field",
0x6542: "BeOS (BeBox, PowerMac, etc.)",
0x6854: "Theos",
0x756e: "ASi Unix",
0x7855: "Info-ZIP Unix (new)",
0x7875: "UNIX UID/GID",
0xfb4a: "SMS/QDOS",
}
// "MS-DOS uses year values relative to 1980 and 2 second precision."
func fieldMSDOSTime(d *decode.D) {
d.FieldU5("hours")
d.FieldU6("minutes")
d.FieldU5("seconds")
// https://learn.microsoft.com/en-gb/windows/win32/api/winbase/nf-winbase-dosdatetimetofiletime?redirectedfrom=MSDN
// https://formats.kaitai.io/dos_datetime/
// Note all of this is a mess because time/date is stored in bit ranges inside 16 LE numbers
// TODO: maybe can be cleaned up if bit-endian decoding is added?
func fieldMSDOSTime(d *decode.D) (int, int, int) {
fatTime := d.FieldU16("fat_time", scalar.UintHex)
// second/2 b5
// minute b6
// hour b5
second := (fatTime >> 0) & 0b1_1111
minute := (fatTime >> 5) & 0b11_1111
hour := (fatTime >> (5 + 6)) & 0b1_1111
d.FieldValueUint("second", second, scalar.UintFn(func(s scalar.Uint) (scalar.Uint, error) {
s.Sym = s.Actual * 2
return s, nil
}))
d.FieldValueUint("minute", minute)
d.FieldValueUint("hour", hour)
return int(second), int(minute), int(hour)
}
func fieldMSDOSDate(d *decode.D) {
d.FieldU7("year")
d.FieldU4("month")
d.FieldU5("day")
func fieldMSDOSDate(d *decode.D) (int, int, int) {
fatDate := d.FieldU16("fat_date", scalar.UintHex)
// day b5
// month b4
// day b7
day := (fatDate >> 0) & 0b1_1111
month := (fatDate >> 5) & 0b1111
year := (fatDate >> (5 + 4)) & 0b111_1111
d.FieldValueUint("day", day)
d.FieldValueUint("month", month)
d.FieldValueUint("year", year, scalar.UintFn(func(s scalar.Uint) (scalar.Uint, error) {
s.Sym = s.Actual + 1980
return s, nil
}))
return int(day), int(month), int(year)
}
// time.RFC3339 but no timezone
const rfc3339Local = "2006-01-02T15:04:05"
func fieldTimeDate(d *decode.D) {
var second, minute, hour int
var day, month, year int
second, minute, hour = fieldMSDOSTime(d)
day, month, year = fieldMSDOSDate(d)
t := time.Date(1980+year, time.Month(month), day, hour, minute, second*2, 0, time.UTC)
d.FieldValueUint("unix_guess", uint64(t.Unix()),
scalar.UintActualUnixTimeDescription(time.Second, rfc3339Local))
}
func fieldExtendedTimestamp(d *decode.D) {
modificationTimePresent := false
accessTimePresent := false
creationTimePresent := false
d.FieldStruct("flags", func(d *decode.D) {
d.FieldU5("unused")
creationTimePresent = d.FieldBool("creation_time_present")
accessTimePresent = d.FieldBool("access_time_present")
modificationTimePresent = d.FieldBool("modification_time_present")
})
// Spec says this but seem like flags and size is not in sync sometimes?
// ex: flags is 0x03 but size is 5
// > TSize should equal (1 + 4*(number of set bits in Flags))
if modificationTimePresent && !d.End() {
d.FieldU32("modification_time", scalar.UintActualUnixTimeDescription(time.Second, time.RFC3339))
}
if accessTimePresent && !d.End() {
d.FieldU32("access_time", scalar.UintActualUnixTimeDescription(time.Second, time.RFC3339))
}
if creationTimePresent && !d.End() {
d.FieldU32("creation_time", scalar.UintActualUnixTimeDescription(time.Second, time.RFC3339))
}
}
type zip64ExtendedInformation struct {
uncompressedSize uint64
uncompressedSizePresent bool
compressedSize uint64
compressedSizePresent bool
localFileOffset uint64
localFileOffsetPresent bool
diskNumberWhereFileStarts uint64
diskNumberWhereFileStartsPresent bool
}
func fieldTagZip64ExtendedInformation(d *decode.D) zip64ExtendedInformation {
zi := zip64ExtendedInformation{}
zi.uncompressedSize = d.FieldU64("uncompressed_size")
zi.uncompressedSizePresent = true
// TODO: spec says these should be here but real zip64 seems to not have them? optional?
if !d.End() {
zi.compressedSize = d.FieldU64("compressed_size")
zi.compressedSizePresent = true
}
if !d.End() {
zi.localFileOffset = d.FieldU64("relative_offset_of_local_file_header")
zi.localFileOffsetPresent = true
}
if !d.End() {
zi.diskNumberWhereFileStarts = d.FieldU32("disk_number_where_file_starts")
zi.diskNumberWhereFileStartsPresent = true
}
return zi
}
type extraFields struct {
zip64ExtendedInformation zip64ExtendedInformation
zip64ExtendedInformationPresent bool
}
func fieldsExtraFields(d *decode.D) extraFields {
ef := extraFields{}
for !d.End() {
d.FieldStruct("extra_field", func(d *decode.D) {
tag := d.FieldU16("tag", headerTagMap, scalar.UintHex)
size := d.FieldU16("size")
d.FramedFn(int64(size)*8, func(d *decode.D) {
switch tag {
case headerTagZip64ExtendedInformation:
ef.zip64ExtendedInformation = fieldTagZip64ExtendedInformation(d)
ef.zip64ExtendedInformationPresent = true
case headerTagExtendedTimestamp:
fieldExtendedTimestamp(d)
default:
d.FieldRawLen("data", int64(size)*8)
}
})
})
}
return ef
}
func zipDecode(d *decode.D) any {
@ -206,13 +335,15 @@ func zipDecode(d *decode.D) any {
offsetCD = d.FieldU64("offset_of_start_of_central_directory")
const sizeOfFixedFields = 44
d.FramedFn(int64(sizeEOCD-sizeOfFixedFields)*8, func(d *decode.D) {
for !d.End() {
d.FieldStruct("extra_field", func(d *decode.D) {
d.FieldU16("header_id", headerIDMap, scalar.UintHex)
dataSize := d.FieldU32("data_size")
d.FieldRawLen("data", int64(dataSize)*8)
})
}
d.FieldArray("extensible_data", func(d *decode.D) {
for !d.End() {
d.FieldStruct("extensible_data", func(d *decode.D) {
d.FieldU16("tag", headerTagMap, scalar.UintHex)
dataSize := d.FieldU32("size")
d.FieldRawLen("data", int64(dataSize)*8)
})
}
})
})
})
}
@ -245,8 +376,7 @@ func zipDecode(d *decode.D) any {
d.FieldU3("unused1")
})
d.FieldU16("compression_method", compressionMethodMap)
d.FieldStruct("last_modification_date", fieldMSDOSTime)
d.FieldStruct("last_modification_time", fieldMSDOSDate)
d.FieldStruct("last_modification", fieldTimeDate)
d.FieldU32("crc32_uncompressed", scalar.UintHex)
d.FieldU32("compressed_size")
d.FieldU32("uncompressed_size")
@ -260,29 +390,10 @@ func zipDecode(d *decode.D) any {
d.FieldUTF8("file_name", int(fileNameLength))
d.FieldArray("extra_fields", func(d *decode.D) {
d.FramedFn(int64(extraFieldLength)*8, func(d *decode.D) {
for !d.End() {
d.FieldStruct("extra_field", func(d *decode.D) {
headerID := d.FieldU16("header_id", headerIDMap, scalar.UintHex)
dataSize := d.FieldU16("data_size")
d.FramedFn(int64(dataSize)*8, func(d *decode.D) {
switch headerID {
case headerIDZip64ExtendedInformation:
d.FieldU64("uncompressed_size")
// TODO: spec says these should be here but real zip64 seems to not have them? optional?
if !d.End() {
d.FieldU64("compressed_size")
}
if !d.End() {
localFileOffset = d.FieldU64("relative_offset_of_local_file_header")
}
if !d.End() {
d.FieldU32("disk_number_where_file_starts")
}
default:
d.FieldRawLen("data", int64(dataSize)*8)
}
})
})
ef := fieldsExtraFields(d)
if ef.zip64ExtendedInformationPresent &&
ef.zip64ExtendedInformation.localFileOffsetPresent {
localFileOffset = ef.zip64ExtendedInformation.localFileOffset
}
})
})
@ -321,8 +432,7 @@ func zipDecode(d *decode.D) any {
d.FieldU3("unused1")
})
compressionMethod := d.FieldU16("compression_method", compressionMethodMap)
d.FieldStruct("last_modification_date", fieldMSDOSTime)
d.FieldStruct("last_modification_time", fieldMSDOSDate)
d.FieldStruct("last_modification", fieldTimeDate)
d.FieldU32("crc32_uncompressed", scalar.UintHex)
compressedSizeBytes := d.FieldU32("compressed_size")
d.FieldU32("uncompressed_size")
@ -331,23 +441,10 @@ func zipDecode(d *decode.D) any {
d.FieldUTF8("file_name", int(fileNameLength))
d.FieldArray("extra_fields", func(d *decode.D) {
d.FramedFn(int64(extraFieldLength)*8, func(d *decode.D) {
for !d.End() {
d.FieldStruct("extra_field", func(d *decode.D) {
headerID := d.FieldU16("header_id", headerIDMap, scalar.UintHex)
dataSize := d.FieldU16("data_size")
d.FramedFn(int64(dataSize)*8, func(d *decode.D) {
switch headerID {
case headerIDZip64ExtendedInformation:
d.FieldU64("uncompressed_size")
// TODO: spec says these should be here but real zip64 seems to not have them? optional?
if !d.End() {
compressedSizeBytes = d.FieldU64("compressed_size")
}
default:
d.FieldRawLen("data", int64(dataSize)*8)
}
})
})
ef := fieldsExtraFields(d)
if ef.zip64ExtendedInformationPresent &&
ef.zip64ExtendedInformation.compressedSizePresent {
compressedSizeBytes = ef.zip64ExtendedInformation.compressedSize
}
})
})

View File

@ -1,5 +1,11 @@
Supports ZIP64.
## Timestamp and time zones
The timestamp accessed via `.local_files[].last_modification` is encoded in ZIP files using [MS-DOS representation](https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime) which lacks a known time zone. Probably the local time/date was used at creation. The `unix_guess` field in `last_modification` is a guess assuming the local time zone was UTC at creation.
### References
- https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
- https://opensource.apple.com/source/zip/zip-6/unzip/unzip/proginfo/extra.fld
- https://formats.kaitai.io/dos_datetime/
- https://learn.microsoft.com/en-us/windows/win32/api/oleauto/nf-oleauto-dosdatetimetovarianttime