{"id":20269024,"url":"https://github.com/patatetom/fakezip","last_synced_at":"2026-06-11T14:31:39.631Z","repository":{"id":256781105,"uuid":"532975352","full_name":"patatetom/fakezip","owner":"patatetom","description":"fakezip allows you to disguise a ZIP archive as a GIF image, while keeping its readability.","archived":false,"fork":false,"pushed_at":"2022-09-05T19:29:22.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T23:11:19.355Z","etag":null,"topics":["disguise","fake","python","python3","zip"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patatetom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-05T16:19:22.000Z","updated_at":"2022-09-05T19:34:37.000Z","dependencies_parsed_at":"2024-09-13T02:51:44.539Z","dependency_job_id":"0e494f67-1ad1-4ec6-9712-f1cf8b2146a0","html_url":"https://github.com/patatetom/fakezip","commit_stats":null,"previous_names":["patatetom/fakezip"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/patatetom/fakezip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patatetom%2Ffakezip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patatetom%2Ffakezip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patatetom%2Ffakezip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patatetom%2Ffakezip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patatetom","download_url":"https://codeload.github.com/patatetom/fakezip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patatetom%2Ffakezip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34204177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["disguise","fake","python","python3","zip"],"created_at":"2024-11-14T12:22:45.179Z","updated_at":"2026-06-11T14:31:39.611Z","avatar_url":"https://github.com/patatetom.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fakezip\n\nDespite the arrival of new compression formats such as 7Z, XZ or ZSTD, ZIP remains a very popular compression format.\nThe transfer of a ZIP file can sometimes be forbidden for security reasons by the service used, in particular with password-protected archive.\nThe Python script `fakezip` allows you to disguise a ZIP archive as a GIF image, while keeping its readability.\nIt prepend a GIF header to the archive and rewrite its central directory by modifying the registered offsets.\n\n\n\n## Usage\n\n```\npython fakezip myzipfile\n```\n\n\u003e Under Linux, `fakezip` can be made executable and installed in one of the folders of the `PATH`.\n\u003e In this case, the command will simply be `fakezip myzipfile`\n\n\n\n## Examples\n\n### Standard ZIP\n\n```\n$ zip -r9 test.zip fakezip/\n  adding: fakezip/ (stored 0%)\n  adding: fakezip/header.gif (deflated 17%)\n  adding: fakezip/ZIP.internal.layout.svg (deflated 79%)\n  adding: fakezip/fakezip (deflated 57%)\n```\n```\n$ ls -lgG test.zip\n-rw-rw-r-- 1 17117 sept.  5 20:53 test.zip\n\n$ zip -Tv test.zip\nArchive:  test.zip\n    testing: fakezip/                 OK\n    testing: fakezip/header.gif       OK\n    testing: fakezip/ZIP.internal.layout.svg   OK\n    testing: fakezip/fakezip          OK\nNo errors detected in compressed data of test.zip.\ntest of test.zip OK\n\n$file test.zip\ntest.zip: Zip archive data, at least v1.0 to extract\n```\n```\n$ fakezip test.zip\n```\n```\n$ ls -lgG test.zip\n-rw-rw-r-- 1 17181 sept.  5 20:23 test.zip\n\n$ zip -Tv test.zip\nArchive:  test.zip\nfaked zip by fakezip\n    testing: fakezip/                 OK\n    testing: fakezip/header.gif       OK\n    testing: fakezip/ZIP.internal.layout.svg   OK\n    testing: fakezip/fakezip          OK\nNo errors detected in compressed data of test.zip.\ntest of test.zip OK\n\n$ file test.zip\ntest.zip: GIF image data, version 89a, 1 x 1\n```\n\n### Encrypted and commented ZIP\n\n```\n$ zip -zer9 test.zip fakezip/\nEnter password: \nVerify password: \n  adding: fakezip/ (stored 0%)\n  adding: fakezip/header.gif (deflated 17%)\n  adding: fakezip/ZIP.internal.layout.svg (deflated 79%)\n  adding: fakezip/fakezip (deflated 57%)\nenter new zip file comment (end with .):\nzip file comment            \n.\n```\n```\n$ fakezip test.zip\n```\n```\n$ zip -Tv test.zip\nArchive:  test.zip\nzip file comment (faked zip by fakezip)\n    testing: fakezip/                 OK\n[test.zip] fakezip/header.gif password: \n    testing: fakezip/header.gif       OK\n    testing: fakezip/ZIP.internal.layout.svg   OK\n    testing: fakezip/fakezip          OK\nNo errors detected in compressed data of test.zip.\ntest of test.zip OK\n\n$ file test.zip\ntest.zip: GIF image data, version 89a, 1 x 1\n```\n\n\n\n## ZIP file format\n\n**Local file header**\n|      | Bytes | Description                                                      |\n|-----:|-------|------------------------------------------------------------------|\n| 0    | 4     | Local file header signature **0x04034b50** (or \"PK\\0x03\\0x04\")   |\n| 4    | 2     | Version needed to extract (minimum)                              |\n| 6    | 2     | General purpose bit flag                                         |\n| 8    | 2     | Compression method; e.g. none = 0, DEFLATE = 8 (or \"\\0x08\\0x00\") |\n| 10   | 2     | File last modification time                                      |\n| 12   | 2     | File last modification date                                      |\n| 14   | 4     | CRC-32 of uncompressed data                                      |\n| 18   | 4     | Compressed size (or 0xffffffff for ZIP64)                        |\n| 22   | 4     | Uncompressed size (or 0xffffffff for ZIP64)                      |\n| 26   | 2     | File name length (n)                                             |\n| 28   | 2     | Extra field length (m)                                           |\n| 30   | n     | File name                                                        |\n| 30+n | m     | Extra field                                                      |\n\n**Central directory file header**\n| Offset | Bytes | Description                                                              |\n|--------|-------|--------------------------------------------------------------------------|\n| 0      | 4     | Central directory file header signature **0x02014b50** (or PK\\0x01\\0x02) |\n| 4      | 2     | Version made by                                                          |\n| 6      | 2     | Version needed to extract (minimum)                                      |\n| 8      | 2     | General purpose bit flag                                                 |\n| 10     | 2     | Compression method                                                       |\n| 12     | 2     | File last modification time                                              |\n| 14     | 2     | File last modification date                                              |\n| 16     | 4     | CRC-32 of uncompressed data                                              |\n| 20     | 4     | Compressed size (or 0xffffffff for ZIP64)                                |\n| 24     | 4     | Uncompressed size (or 0xffffffff for ZIP64)                              |\n| 28     | 2     | File name length (n)                                                     |\n| 30     | 2     | Extra field length (m)                                                   |\n| 32     | 2     | File comment length (k)                                                  |\n| 34     | 2     | Disk number where file starts                                            |\n| 36     | 2     | Internal file attributes                                                 |\n| 38     | 4     | External file attributes                                                 |\n| 42     | 4     | Relative offset of local file header¹                                    |\n| 46     | n     | File name                                                                |\n| 46+n   | m     | Extra field                                                              |\n| 46+n+m | k     | File comment                                                             |\n\n¹ _This is the number of bytes between the start of the first disk on which the file occurs, and the start of the local file header. This allows software reading the central directory to locate the position of the file inside the ZIP file._\n\n**End of central directory record**\n| Offset | Bytes | Description                                                                                  |\n|--------|-------|----------------------------------------------------------------------------------------------|\n| 0      | 4     | End of central directory signature **0x06054b50** (or PK\\0x05\\0x06)                          |\n| 4      | 2     | Number of this disk (or 0xffff for ZIP64)                                                    |\n| 6      | 2     | Disk where central directory starts (or 0xffff for ZIP64)                                    |\n| 8      | 2     | Number of central directory records on this disk (or 0xffff for ZIP64)                       |\n| 10     | 2     | Total number of central directory records (or 0xffff for ZIP64)                              |\n| 12     | 4     | Size of central directory (bytes) (or 0xffffffff for ZIP64)                                  |\n| 16     | 4     | Offset of start of central directory, relative to start of archive (or 0xffffffff for ZIP64) |\n| 20     | 2     | Comment length (n)                                                                           |\n| 22     | n     | Comment                                                                                      |\n\n(from [Wikipedia](https://en.wikipedia.org/wiki/ZIP_(file_format)))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatatetom%2Ffakezip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatatetom%2Ffakezip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatatetom%2Ffakezip/lists"}