ملف مضغوط (ZIP)
ZIP هو تنسيق ملفات أرشيفية يدعم ضغط البيانات دون فقدانها . قد يحتوي ملف ZIP على ملف واحد أو أكثر، أو مجلدات، قد تكون مضغوطة. يسمح تنسيق ملف ZIP باستخدام عدد من خوارزميات الضغط ، إلا أن DEFLATE هو الأكثر شيوعًا.
تم ابتكار هذا التنسيق في الأصل عام ١٩٨٩، وطُبِّق لأول مرة في أداة PKZIP التابعة لشركة PKWARE ، [ ٢ ] كبديل لتنسيق ضغط ARC السابق الذي ابتكره توم هندرسون. وسرعان ما حظي تنسيق ZIP بدعم العديد من البرامج الأخرى إلى جانب PKZIP. يدعم نظام التشغيل الرئيسي (مثل أندرويد ، وكروم أو إس ، وآي أو إس ، ولينكس ، وماك أو إس ، وويندوز ) تنسيق ZIP بشكل أصلي، وهو مُدمج عادةً في تطبيق إدارة الملفات الخاص بنظام التشغيل.
تستخدم ملفات ZIP عادةً امتدادات الملفات .zip أو .ZIP ونوع الوسائط MIME . [ 1 ] يُستخدم ZIP كصيغة ملف أساسية في العديد من البرامج، عادةً تحت اسم مختلف. عند تصفح نظام الملفات عبر واجهة المستخدم، تظهر أيقونات رسومية تمثل ملفات ZIP غالبًا على شكل مستند أو عنصر آخر يتميز بسحاب .application/zip
تاريخ
صُمم تنسيق ملفات ZIP بواسطة فيل كاتز من شركة PKWARE، وغاري كونواي من شركة Infinity Design Concepts. وجاء ابتكار هذا التنسيق بعد أن رفعت شركة Systems Enhancement Associates (SEA) دعوى قضائية ضد PKWARE، مدعيةً أن منتجات الأرشفة الخاصة بها، المسماة PKARC، مشتقة من نظام الأرشفة ARC التابع لشركة SEA. [ 3 ] واقترح روبرت ماهوني، صديق كاتز، اسم "zip" (بمعنى "التحرك بسرعة عالية"). [ 4 ] وكان هدفهم الإيحاء بأن منتجهم سيكون أسرع من ARC وتنسيقات الضغط الأخرى في ذلك الوقت. [ 4 ] نُشرت أول نسخة معروفة من مواصفات تنسيق ملفات ZIP كجزء من حزمة PKZIP 0.9 ضمن الملف APPNOTE.TXT عام 1989. وبفضل توزيع تنسيق ملفات ZIP ضمن ملف APPNOTE.TXT، انتشر التوافق مع هذا التنسيق على نطاق واسع على الإنترنت خلال تسعينيات القرن الماضي. [ 5 ]
أصدرت شركتا PKWARE و Infinity Design Concepts بيانًا صحفيًا مشتركًا في 14 فبراير 1989، أعلنتا فيه عن إتاحة صيغة ملفات .ZIP للاستخدام العام . [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ]
سجل الإصدارات
يحتوي تنسيق ملف ZIP على رقم إصدار خاص به، لا يتطابق بالضرورة مع أرقام إصدارات أداة PKZIP، خاصةً مع الإصدار 6 أو أحدث. وقد أضافت PKWARE في أوقات مختلفة ميزات أولية تُمكّن منتجات PKZIP من استخراج الملفات المضغوطة باستخدام ميزات متقدمة، ولكن منتجات PKZIP التي تُنشئ هذه الملفات لا تُتاح إلا في الإصدار الرئيسي التالي. وتدعم الشركات والمؤسسات الأخرى مواصفات PKWARE بوتيرة خاصة بها.
تُعرف مواصفات تنسيق ملفات ZIP رسميًا باسم "APPNOTE - مواصفات تنسيق ملفات ZIP"، وهي منشورة على موقع PKWARE.com منذ أواخر التسعينيات. [ 11 ] لم تُنشر بعض إصدارات هذه المواصفات. وقد نشرت PKWARE مواصفات بعض الميزات، مثل ضغط BZIP2 ومواصفات التشفير القوي وغيرها، بعد بضع سنوات من إنشائها. وتم تغيير رابط المواصفات على موقع PKWARE الإلكتروني عدة مرات.
ملخص لأهم التطورات في مختلف إصدارات برنامج PKWARE و/أو مواصفاته:
- 2.0: (1993) [ 1 ] يمكن ضغط إدخالات الملفات باستخدام DEFLATE واستخدام تشفير PKWARE التقليدي (ZipCrypto).
- 2.1: (1996) دعم ضغط Deflate64 (كما ورد في ملاحظة التطبيق 6.1.0 المنشورة لاحقًا). [ 12 ] قد لا تكون ملاحظة التطبيق قد نُشرت للإصدار 2.1.
- 2.5: ضغط PKWARE DCL Implode. [ 12 ] قد لا تكون ملاحظة التطبيق قد نُشرت للإصدار 2.5.
- 2.5: دعم ضغط Deflate64 (كما ورد في أدلة المستخدم اللاحقة، على سبيل المثال في عام 2004.) [ 13 ]
- 4.0: (2000) دعم ضغط Deflate64 (وفقًا للمعلومات التي قدمها جيم بيترسون، كبير العلماء في شركة PKWARE، إلى مكتبة الكونغرس؛ و APPNOTE 4.0). [ 14 ] [ 15 ]
- 4.5: (2001) [ 16 ] تنسيق zip موثق 64 بت.
- 4.6: (2001) ضغط BZIP2 (لم يتم نشره على الإنترنت حتى نشر APPNOTE 5.2)
- 5.0: (2002) SES: DES و Triple DES و RC2 و RC4 مدعومة للتشفير (لم يتم نشرها على الإنترنت حتى نشر APPNOTE 5.2)
- 5.2: (2003) [ 17 ] [ 18 ] دعم تشفير AES لـ SES (المحدد في APPNOTE 5.1 الذي لم يتم نشره عبر الإنترنت) و AES من WinZip ("AE-x")؛ تم دعم الإصدار المصحح من RC2-64 لتشفير SES.
- 6.1: (2004) [ 12 ] تخزين الشهادات الموثقة.
- 6.2.0: (2004) [ 19 ] تشفير الدليل المركزي الموثق.
- 6.3.0: (2006) [ 20 ] توثيق تخزين أسماء الملفات باستخدام ترميز يونيكود ( UTF-8 ). قائمة موسعة لخوارزميات الضغط المدعومة ( LZMA ، PPMd+ )، وخوارزميات التشفير ( Blowfish ، Twofish )، والتجزئة.
- 6.3.1: (2007) [ 21 ] تم تصحيح قيم التجزئة القياسية لـ SHA-256/384/512.
- 6.3.2: (2007) [ 22 ] طريقة الضغط الموثقة 97 ( WavPack ).
- 6.3.3: (2012) [ 23 ] تغييرات تنسيق المستند لتسهيل الإشارة إلى مذكرة تطبيق PKWARE من المعايير الأخرى باستخدام طرق مثل تقرير JTC 1 التفسيري المرجعي (RER) وفقًا لتوجيهات JTC 1/SC 34 N 1621.
- 6.3.4: (2014) [ 24 ] تحديث عنوان مكتب PKWARE, Inc.
- 6.3.5: (2018) [ 25 ] طرق الضغط الموثقة 16 و 96 و 99، ووقت ودقة طابع DOS الزمني، وإضافة حقول إضافية للمفاتيح وفك التشفير، بالإضافة إلى الأخطاء المطبعية والتوضيحات.
- 6.3.6: (2019) [ 26 ] تم تصحيح خطأ مطبعي.
- 6.3.7: (2020) [ 27 ] تمت إضافة طريقة ضغط Zstandard ID 20.
- 6.3.8: (2020) [ 28 ] تم نقل معرّف طريقة ضغط Zstandard من 20 إلى 93، مما أدى إلى إهمال المعرّف السابق. تم توثيق معرّفات الطرق 94 و95 ( MP3 و XZ على التوالي).
- 6.3.9: (2020) [ 29 ] تم تصحيح خطأ مطبعي في وصف محاذاة تدفق البيانات.
- 6.3.10: (2022) [ 30 ] تمت إضافة العديد من قيم سمات z/OS للملحق ب. تمت إضافة العديد من عمليات تعيين الحقول الإضافية من جهات خارجية.
يستخدم برنامج WinZip ، بدءًا من الإصدار 12.1، الامتداد .zipx لملفات ZIP التي تستخدم طرق ضغط أحدث من DEFLATE؛ وتحديدًا، طرق BZip وLZMA وPPMd وJpeg وWavpack. تُطبَّق الطريقتان الأخيرتان على أنواع الملفات المناسبة عند اختيار "أفضل طريقة" للضغط. [ 31 ] [ 32 ]
التقييس
في أبريل 2010، أطلقت اللجنة الفنية المشتركة الأولى التابعة للمنظمة الدولية للمعايير/اللجنة الكهروتقنية الدولية (ISO/IEC JTC 1) اقتراعًا لتحديد ما إذا كان ينبغي إطلاق مشروع لإنشاء تنسيق معيار دولي متوافق مع ZIP. [ 33 ] وقد تصور المشروع المقترح، بعنوان " تغليف المستندات "، "تنسيق أرشيف مضغوط مصغر" متوافق مع ZIP، مناسب للاستخدام مع عدد من المعايير الحالية، بما في ذلك OpenDocument و Office Open XML و EPUB . وكان من شأنه حل مشكلات مثل الحاجة إلى معيار رسمي، وتنوع امتدادات ZIP، وعدم استصواب استخدام تقنية للمعايير المفتوحة قد تحتوي على امتدادات احتكارية أو براءات اختراع "خفية" (أي التي قد تظهر بشكل غير متوقع)، والحاجة إلى تدويل أفضل، والرغبة في عدم زيادة تجزئة التقنية من خلال الادعاء بتقديم مواصفات بديلة لوثيقة PKWARE APPNOTE.
في عام 2015، نُشر معيار ISO/IEC 21320-1 "ملف حاوية المستندات - الجزء 1: الأساسيات"، والذي ينص على أن "ملفات حاوية المستندات هي ملفات ZIP متوافقة"، مع الإشارة بشكل معياري إلى وثيقة PKWARE APPNOTE. ويتطلب هذا المعيار القيود الرئيسية التالية لتنسيق ملف ZIP: [ 34 ]
- لا يجوز تخزين الملفات في أرشيفات ZIP إلا غير مضغوطة، أو باستخدام ضغط "deflate" (أي أن طريقة الضغط قد تحتوي على القيمة "0" - للملفات المخزنة، أو "8" - للملفات المضغوطة). انتهت صلاحية براءة اختراع طريقة ضغط "deflate" الأساسية في أواخر عام 2010. [ 35 ]
- ميزات التشفير محظورة.
- ميزات التوقيع الرقمي (من SES) محظورة.
- ميزات "البيانات المعدلة" (من PKPatchMaker) محظورة.
- لا يجوز أن تمتد الأرشيفات على مجلدات متعددة أو أن تكون مجزأة.
تصميم
ملفات ZIP هي ملفات مضغوطة تحتوي على عدة ملفات. تتيح هذه التقنية ضغط الملفات باستخدام طرق متعددة، بالإضافة إلى إمكانية تخزين ملف واحد دون ضغطه. يُخزن كل ملف على حدة، مما يسمح بضغط الملفات المختلفة في نفس الملف المضغوط باستخدام طرق مختلفة. ولأن الملفات في ملف ZIP تُضغط بشكل فردي، فمن الممكن استخراجها أو إضافة ملفات جديدة دون الحاجة إلى ضغط الملف بأكمله أو فك ضغطه. وهذا يختلف عن تنسيق ملفات tar المضغوطة ، حيث يصعب الوصول العشوائي إليها.
يُضاف دليل في نهاية ملف ZIP. يُحدد هذا الدليل محتويات الملف وموقع كل ملف داخله. يسمح هذا لقارئات ZIP بتحميل قائمة الملفات دون الحاجة إلى قراءة الأرشيف المضغوط بالكامل. يمكن أن تتضمن ملفات ZIP أيضًا بيانات إضافية غير مرتبطة بالأرشيف نفسه. يُمكّن هذا من تحويل ملف ZIP إلى أرشيف ذاتي الاستخراج (تطبيق يقوم بفك ضغط البيانات الموجودة بداخله)، وذلك بإضافة رمز البرنامج في بداية ملف ZIP وتحديد الملف كملف تنفيذي. كما يُتيح تخزين الدليل في النهاية إمكانية إخفاء ملف مضغوط بإضافته إلى ملف عادي، مثل ملف صورة GIF.
يستخدم تنسيق ZIP خوارزمية CRC-32 ويتضمن نسختين من بيانات كل مدخل لتوفير حماية أكبر ضد فقدان البيانات. وقد ساهم ديفيد شوادرر في تطوير خوارزمية CRC-32، ويمكن الاطلاع عليها في كتابه "دليل مبرمجي لغة C لـ NetBIOS" الصادر عن دار نشر هوارد دبليو سامز وشركاه [ 36 ].
بناء

يُمكن التعرف على ملف ZIP بشكل صحيح من خلال وجود سجل نهاية الدليل المركزي، الموجود في نهاية بنية الأرشيف، مما يُسهّل إضافة ملفات جديدة. إذا كان سجل نهاية الدليل المركزي يُشير إلى أرشيف غير فارغ، فيجب تحديد اسم كل ملف أو دليل داخل الأرشيف في مدخل الدليل المركزي ، بالإضافة إلى بيانات وصفية أخرى حول المدخل، وإزاحة داخل ملف ZIP تُشير إلى بيانات المدخل الفعلية. يُتيح ذلك عرض قائمة ملفات الأرشيف بسرعة نسبية، حيث لا يلزم قراءة الأرشيف بأكمله لعرض قائمة الملفات. تتضمن المدخلات داخل ملف ZIP هذه المعلومات أيضًا، كإجراء احتياطي، في رأس ملف محلي . نظرًا لإمكانية إضافة ملفات إلى ملفات ZIP، فإن الملفات المُحددة في الدليل المركزي في نهاية الملف فقط هي الصالحة. يُعد فحص ملف ZIP بحثًا عن رؤوس الملفات المحلية غير صالح (باستثناء حالة الأرشيفات التالفة)، حيث قد يُشير الدليل المركزي إلى حذف بعض الملفات وتحديث ملفات أخرى.
على سبيل المثال، قد نبدأ بملف ZIP يحتوي على الملفات A وB وC. ثم نحذف الملف B ونُحدّث الملف C. يمكن تحقيق ذلك ببساطة عن طريق إضافة ملف C جديد إلى نهاية ملف ZIP الأصلي، وإنشاء مجلد مركزي جديد يحتوي فقط على الملف A والملف C الجديد. عندما صُممت تقنية ZIP لأول مرة، كان نقل الملفات عبر الأقراص المرنة شائعًا، إلا أن الكتابة على الأقراص كانت تستغرق وقتًا طويلاً. إذا كان لديك ملف ZIP كبير، ربما مُوزّع على عدة أقراص، وتحتاج فقط إلى تحديث عدد قليل من الملفات، فبدلاً من قراءة جميع الملفات وإعادة كتابتها، سيكون من الأسرع بكثير قراءة المجلد المركزي القديم، وإضافة الملفات الجديدة إليه، ثم إنشاء مجلد مركزي مُحدّث.
لا يشترط أن يتطابق ترتيب إدخالات الملفات في الدليل المركزي مع ترتيب إدخالات الملفات في الأرشيف.
يُستهل كل إدخال مُخزّن في أرشيف ZIP برأس ملف محلي يحتوي على معلومات حول الملف، مثل التعليق وحجمه واسمه، متبوعًا بحقول بيانات "إضافية" اختيارية، ثم بيانات الملف، سواءً كانت مضغوطة أو مُشفّرة. تُعدّ حقول البيانات "الإضافية" أساسية لتوسيع نطاق تنسيق ZIP. تُستخدم هذه الحقول لدعم تنسيق ZIP64، وتشفير AES المتوافق مع WinZip، وخصائص الملفات، والطوابع الزمنية عالية الدقة لملفات NTFS أو Unix. كما يُمكن إضافة امتدادات أخرى عبر حقل "الإضافية". وتُلزم مواصفات ZIP أدواتها بتجاهل حقول "الإضافية" التي لا تتعرف عليها.
يستخدم تنسيق ZIP "توقيعات" محددة مكونة من 4 بايتات للدلالة على البنى المختلفة في الملف. يتم تمييز كل مدخل ملف بتوقيع محدد. ويُشار إلى نهاية سجل الدليل المركزي بتوقيعه الخاص، ويبدأ كل مدخل في الدليل المركزي بتوقيع رأس الملف المركزي المكون من 4 بايتات .
لا يوجد في مواصفات ZIP علامة بداية الملف (BOF) أو نهايته (EOF). عادةً، يكون أول عنصر في ملف ZIP هو مدخل ZIP، والذي يمكن التعرف عليه بسهولة من خلال توقيع رأس الملف المحلي . مع ذلك، ليس هذا شرطًا، إذ لا تشترط مواصفات ZIP ذلك - والأهم من ذلك، أن الأرشيف ذاتي الاستخراج يبدأ برأس ملف تنفيذي.
يجب على الأدوات التي تقرأ ملفات ZIP بشكل صحيح أن تفحص نهاية توقيع سجل الدليل المركزي، ثم، عند الاقتضاء، سجلات الدليل المركزي الأخرى المشار إليها. يجب ألا تفحص هذه الأدوات الإدخالات من أعلى ملف ZIP، لأنه (كما ذُكر سابقًا في هذا القسم) الدليل المركزي فقط هو الذي يُحدد مكان بدء جزء الملف وأنه لم يُحذف. قد يؤدي الفحص إلى نتائج إيجابية خاطئة، لأن التنسيق لا يمنع وجود بيانات أخرى بين الأجزاء، ولا يمنع تدفقات بيانات الملفات من احتواء مثل هذه التوقيعات. مع ذلك، من المرجح أن تفحص الأدوات التي تحاول استعادة البيانات من ملفات ZIP التالفة الأرشيف بحثًا عن توقيعات رأس الملف المحلي؛ ويزداد الأمر صعوبةً نظرًا لأن الحجم المضغوط لجزء الملف قد يُخزن بعد جزء الملف، مما يجعل المعالجة التسلسلية صعبة.
تنتهي معظم التوقيعات بالعدد الصحيح القصير 0x4b50، المخزن بترتيب البايتات الصغيرة . عند عرضها كسلسلة ASCII ، تُقرأ "PK"، وهي الأحرف الأولى من اسم المخترع فيل كاتز. لذا، عند عرض ملف ZIP في محرر نصوص، يكون أول بايتين من الملف عادةً هما "PK". (تحتوي ملفات ZIP ذاتية الاستخراج لأنظمة DOS وOS/2 وWindows على ملف EXE قبل ZIP، لذا تبدأ بـ "MZ"؛ وبالمثل، قد تسبق ملفات ZIP ذاتية الاستخراج لأنظمة التشغيل الأخرى رمز تنفيذي لاستخراج محتوى الأرشيف على تلك المنصة).
تدعم مواصفات ZIP أيضًا توزيع الملفات المضغوطة على عدة ملفات في نظام الملفات. كانت هذه الميزة مخصصة في الأصل لتخزين ملفات ZIP الكبيرة على عدة أقراص مرنة ، ولكنها تُستخدم الآن لإرسال ملفات ZIP المضغوطة على أجزاء عبر البريد الإلكتروني، أو عبر وسائل نقل أخرى أو وسائط تخزين قابلة للإزالة.
يتميز نظام ملفات FAT في نظام DOS بدقة زمنية تبلغ ثانيتين فقط، وتحاكي ملفات ZIP هذا الأمر. ونتيجةً لذلك، فإن الدقة الزمنية المدمجة للملفات في أرشيف ZIP هي ثانيتين فقط، على الرغم من إمكانية استخدام حقول إضافية لتخزين طوابع زمنية أكثر دقة. لا يدعم تنسيق ZIP مفهوم المنطقة الزمنية ، لذا فإن الطوابع الزمنية لا تكون ذات معنى إلا إذا عُرفت المنطقة الزمنية التي أُنشئت فيها.
في سبتمبر 2006، أصدرت شركة PKWARE نسخة منقحة من مواصفات ZIP تسمح بتخزين أسماء الملفات باستخدام UTF-8 ، مما أضاف أخيرًا توافق Unicode إلى ZIP. [ 20 ]
رؤوس الملفات
تُخزَّن جميع القيم متعددة البايتات في رأس الملف بترتيب البايتات الصغير (little-endian) . وتُحسب جميع حقول الطول بالبايتات.
رأس الملف المحلي
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 4 | الرقم السحري - يجب أن يكون50 4B 03 04 |
| 4 | 2 | الإصدار المطلوب للاستخراج (الحد الأدنى) |
| 6 | 2 | علامة بت للأغراض العامة |
| 8 | 2 | طريقة الضغط؛ على سبيل المثال: لا شيء = 0، DEFLATE = 8 (أو 08 00) |
| 10 | 2 | تاريخ آخر تعديل للملف |
| 12 | 2 | تاريخ آخر تعديل للملف |
| 14 | 4 | CRC-32 للبيانات غير المضغوطة |
| 18 | 4 | حجم مضغوط (أو FF FF FF FFلـ ZIP64) |
| 22 | 4 | الحجم غير المضغوط (أو FF FF FF FFلـ ZIP64) |
| 26 | 2 | طول اسم الملف ( ن ) |
| 28 | 2 | طول الحقل الإضافي ( م ) |
| 30 | ن | اسم الملف |
| 30+ ن | م | حقل إضافي |
يحتوي الحقل الإضافي على مجموعة متنوعة من البيانات الاختيارية، مثل سمات خاصة بنظام التشغيل. وهو مُقسّم إلى سجلات، لكل منها توقيع بطول 16 بت على الأقل وطول 16 بت. على سبيل المثال، يحتوي سجل الحقل الإضافي لملف محلي بصيغة ZIP64 على التوقيع 0x0001 وطول 16 بايت (أو أكثر) بحيث يمكن أن يتبعه قيمتان بطول 64 بت (الحجم غير المضغوط والحجم المضغوط). ومن امتدادات الملفات المحلية الشائعة الأخرى 0x5455 (أو "UT")، والذي يحتوي على طوابع زمنية بنظام UTC UNIX بطول 32 بت.
ويتبع ذلك مباشرة البيانات المضغوطة.
واصف البيانات
إذا تم ضبط البت عند الإزاحة 3 (0x08) في حقل العلامات العامة، فلن يكون حجم الملف وقيمة CRC-32 معروفين عند كتابة الترويسة. إذا كان الأرشيف بتنسيق Zip64، فسيكون طول حقلي الحجم المضغوط وغير المضغوط 8 بايتات بدلاً من 4 بايتات (انظر القسم 4.3.9.2 [ 38 ] ). يتم ملء الحقول المكافئة في الترويسة المحلية (أو في حقل المعلومات الإضافية الموسعة لـ Zip64 في حالة الأرشيفات بتنسيق Zip64) بالأصفار، ويتم إلحاق قيمة CRC-32 والحجم في بنية مكونة من 12 بايت (يسبقها اختياريًا توقيع مكون من 4 بايتات) مباشرةً بعد البيانات المضغوطة.
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 0 أو 4 | رقم سحري اختياري . إذا كان موجودًا، فيجب أن يكون كذلك 50 4B 07 08. |
| 0 أو 4 | 4 | CRC-32 للبيانات غير المضغوطة. |
| 4 أو 8 | 4 أو 8 | حجم مضغوط. |
| 8 أو 12 أو 16 | 4 أو 8 | الحجم غير المضغوط. |
رأس ملف الدليل المركزي (CDFH)
يُعد إدخال رأس ملف الدليل المركزي شكلاً موسعاً للرأس المحلي:
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 4 | رقم سحري . لا بد أن يكون كذلك 50 4B 01 02. |
| 4 | 2 | نسخة من إعداد. |
| 6 | 2 | الإصدار المطلوب للاستخراج (الحد الأدنى). |
| 8 | 2 | علامة بت للأغراض العامة. |
| 10 | 2 | طريقة الضغط. |
| 12 | 2 | تاريخ آخر تعديل للملف. |
| 14 | 2 | تاريخ آخر تعديل للملف. |
| 16 | 4 | CRC-32 للبيانات غير المضغوطة. |
| 20 | 4 | حجم مضغوط (أو FF FF FF FFلـ ZIP64). |
| 24 | 4 | الحجم غير المضغوط (أو FF FF FF FFلـ ZIP64). |
| 28 | 2 | طول اسم الملف ( ن ). |
| 30 | 2 | طول الحقل الإضافي ( م ). |
| 32 | 2 | طول تعليق الملف ( كيلوجرام ). |
| 34 | 2 | رقم القرص الذي يبدأ منه الملف (أو FF FFبالنسبة لـ ZIP64). |
| 36 | 2 | سمات الملف الداخلية. |
| 38 | 4 | سمات الملفات الخارجية. |
| 42 | 4 | الإزاحة النسبية لرأس الملف المحلي (أو FF FF FF FFفي حالة ZIP64). وهي عدد البايتات بين بداية القرص الأول الذي يوجد عليه الملف، وبداية رأس الملف المحلي. وهذا يسمح للبرامج التي تقرأ الدليل المركزي بتحديد موقع الملف داخل ملف ZIP. |
| 46 | ن | اسم الملف. |
| 46+ ن | م | حقل إضافي. |
| 46+ ن + م | ك | تعليق الملف. |
نهاية سجل الدليل المركزي (EOCD)
بعد جميع إدخالات الدليل المركزي، يأتي سجل نهاية الدليل المركزي (EOCD)، والذي يمثل نهاية ملف ZIP:
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 4 | رقم سحري . لا بد أن يكون كذلك 50 4B 05 06. |
| 4 | 2 | رقم هذا القرص (أو FF FFلـ ZIP64). |
| 6 | 2 | القرص الذي يبدأ منه الدليل المركزي (أو FF FFبالنسبة لـ ZIP64). |
| 8 | 2 | عدد سجلات الدليل المركزي على هذا القرص (أو FF FFبالنسبة لـ ZIP64). |
| 10 | 2 | إجمالي عدد سجلات الدليل المركزي (أو FF FFلـ ZIP64). |
| 12 | 4 | حجم الدليل المركزي بالبايت (أو FF FF FF FFلـ ZIP64). |
| 16 | 4 | إزاحة بداية الدليل المركزي، بالنسبة لبداية الأرشيف (أو FF FF FF FFلـ ZIP64). |
| 20 | 2 | طول التعليق ( ن ). |
| 22 | ن | تعليق. |
يسمح هذا الترتيب بإنشاء ملف ZIP في خطوة واحدة، ولكن يتم أيضًا وضع الدليل المركزي في نهاية الملف لتسهيل إزالة الملفات بسهولة من الأرشيفات متعددة الأجزاء (مثل "أقراص مرنة متعددة") ، كما تمت مناقشته سابقًا.
طرق الضغط
تُوثّق مواصفات تنسيق ملف ZIP طرق الضغط التالية: التخزين (بدون ضغط)، والتقليص ( LZW )، والتقليل (المستويات 1-4؛ LZ77 + الاحتمالية)، والضغط، والضغط المتساوي، والضغط المتساوي 64، و bzip2 ، و LZMA ، و Zstandard ، و WavPack ، و PPMd ، بالإضافة إلى صيغة LZ77 المُقدّمة من خلال تعليمات IBM z/OS CMPSC. [ 39 ] [ 30 ] وتُعدّ طريقة الضغط DEFLATE الأكثر شيوعًا ، والموصوفة في IETF RFC 1951 .
تتضمن الطرق الأخرى المذكورة، ولكن غير الموثقة بالتفصيل في المواصفات، ما يلي: PKWARE DCL Implode (IBM TERSE القديم)، و IBM TERSE الجديد ، وبنية IBM LZ77 z (PFS)، ونسخة JPEG. وقد حُجزت طريقة "Tokenize" لجهة خارجية، ولكن لم تتم إضافة دعمها. [ 25 ]
يُفرط برنامج PKWARE في استخدام مصطلح "Implode" : فبرنامج DCL/TERSE Implode يختلف عن برنامج PKZIP Implode القديم، وهو برنامج سابق لبرنامج Deflate. برنامج DCL Implode غير موثق جزئيًا بسبب طبيعته الاحتكارية التي تحتفظ بها شركة IBM، ومع ذلك فقد وفّر مارك أدلر برنامجًا لفك الضغط يُسمى "blast" إلى جانب مكتبة zlib. [ 40 ]
التشفير
يدعم بروتوكول ZIP نظام تشفير متماثل بسيط قائم على كلمة مرور ، يُعرف عمومًا باسم ZipCrypto. هذا النظام موثق في مواصفات ZIP، ومعروفٌ بعيوبه الجسيمة. على وجه الخصوص، هو عرضة لهجمات النص الصريح المعروف ، والتي تتفاقم في بعض الحالات بسبب ضعف تطبيقات مولدات الأرقام العشوائية . [ 5 ] يمكن لأجهزة الكمبيوتر التي تعمل بنظام التشغيل Microsoft Windows الأصلي، دون استخدام برامج أرشفة خارجية، فتح ملفات ZIP المشفرة باستخدام ZipCrypto، ولكن لا يمكنها إنشاء ملفات ZIP، كما لا يمكنها استخراج محتويات الملفات التي تستخدم تشفيرًا مختلفًا. [ 41 ]
تم توثيق ميزات جديدة، بما في ذلك طرق ضغط وتشفير جديدة (مثل AES ) ، في مواصفات تنسيق ملف ZIP منذ الإصدار 5.2. ويستخدم برنامجا 7-Zip و Xceed معيارًا مفتوحًا قائمًا على AES، تم تطويره بواسطة WinZip ("AE-x" في APPNOTE)، لكن بعض الموردين يستخدمون تنسيقات أخرى. [ 42 ] يدعم برنامج PKWARE SecureZIP (SES، وهو برنامج خاص) أيضًا طرق التشفير RC2 وRC4 وDES وTriple DES، والتشفير والمصادقة القائمين على الشهادات الرقمية ( X.509 )، وتشفير رأس الأرشيف. ومع ذلك، فهو برنامج حاصل على براءة اختراع (انظر § جدل التشفير القوي ). [ 43 ]
تم إدخال تشفير أسماء الملفات في مواصفات تنسيق ملفات ZIP 6.2، حيث يتم تشفير البيانات الوصفية المخزنة في قسم الدليل المركزي للأرشيف، بينما تبقى أقسام الرأس المحلي غير مشفرة. يمكن لبرنامج الأرشفة المتوافق مع هذه المواصفات تزوير بيانات الرأس المحلي عند استخدام تشفير الدليل المركزي. اعتبارًا من الإصدار 6.2 من المواصفات، لم يتم إخفاء حقلي "طريقة الضغط" و"حجم الملف المضغوط" ضمن الرأس المحلي.
ZIP64
كان تنسيق ZIP الأصلي محدودًا بحجم 4 جيجابايت ( 2 ^32 بايت) لعدة جوانب (حجم الملف غير المضغوط، وحجم الملف المضغوط، والحجم الإجمالي للأرشيف)، بالإضافة إلى حد أقصى يبلغ 65,535 ( 2 ^16 - 1 ) مدخلًا في أرشيف ZIP. في الإصدار 4.5 من المواصفات (وهو يختلف عن الإصدار 4.5 لأي أداة محددة)، قدمت PKWARE امتدادات تنسيق "ZIP64" لتجاوز هذه القيود، مما رفع الحدود إلى 16 إكسابايت ( 2^ 64 بايت). يستخدم هذا التنسيق مدخلًا مركزيًا "عاديًا" للملف، متبوعًا بمدخل "zip64" اختياري، والذي يحتوي على الحقول الأكبر. [ 44 ]
يتطابق تنسيق رأس الملف المحلي (LOC) ورأس ملف الدليل المركزي (CDFH) في كلٍ من ZIP وZIP64. مع ذلك، يُحدد ZIP64 حقلاً إضافياً يُمكن إضافته إلى هذه السجلات وفقاً لتقدير برنامج الضغط، وذلك لتخزين القيم التي لا تتسع لها سجلات LOC أو CDFH التقليدية. وللإشارة إلى أن القيم الفعلية مُخزنة في حقول ZIP64 الإضافية، يتم تعيينها إلى 0xFFFF أو 0xFFFFFFFF في سجل LOC أو CDFH المُناسب. إذا لم يتسع أحد الإدخالات في سجل LOC أو CDFH التقليدي، يُنقل هذا الإدخال فقط إلى حقل ZIP64 الإضافي، بينما تبقى الإدخالات الأخرى في السجل التقليدي. لذا، قد لا تُخزن جميع الإدخالات الموضحة في الجدول التالي في حقل ZIP64 إضافي. ولكن في حال ظهورها، يجب أن يكون ترتيبها كما هو موضح في الجدول.
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 2 | معرف رأس الصفحة 0x0001. |
| 2 | 2 | حجم جزء الحقل الإضافي (8 أو 16 أو 24 أو 28). |
| 4 | 8 | حجم الملف الأصلي غير المضغوط. |
| 12 | 8 | حجم البيانات المضغوطة. |
| 20 | 8 | إزاحة سجل رأس الصفحة المحلي. |
| 28 | 4 | رقم القرص الذي يبدأ عليه هذا الملف. |
من ناحية أخرى، يختلف تنسيق EOCD لـ ZIP64 قليلاً عن إصدار ZIP العادي. [ 37 ]
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 4 | رقم سحري . لا بد أن يكون كذلك 50 4B 06 06. |
| 4 | 8 | حجم EOCD64 ناقص 12. |
| 12 | 2 | نسخة من إعداد. |
| 14 | 2 | الإصدار المطلوب للاستخراج (الحد الأدنى). |
| 16 | 4 | رقم هذا القرص. |
| 20 | 4 | القرص الذي يبدأ منه الدليل المركزي. |
| 24 | 8 | عدد سجلات الدليل المركزي على هذا القرص. |
| 32 | 8 | إجمالي عدد سجلات الدليل المركزي. |
| 40 | 8 | حجم الدليل المركزي بالبايت. |
| 48 | 8 | إزاحة بداية الدليل المركزي، بالنسبة لبداية الأرشيف. |
| 56 | ن | تعليق (حتى حجم EOCD64). |
لا يُعدّ سجل EOCD64 بالضرورة السجل الأخير في الملف. يتبعه مُحدِّد نهاية الدليل المركزي بحجم 20 بايت، ثم سجل EOCD الكلاسيكي.
| الإزاحة (بايت) | الحجم (بايت) | الوصف [ 37 ] |
|---|---|---|
| 0 | 4 | رقم سحري . لا بد أن يكون كذلك 50 4B 06 07. |
| 4 | 4 | القرص الذي يبدأ منه برنامج EOCD64. |
| 8 | 8 | الإزاحة إلى بداية EOCD64، بالنسبة إلى بداية الأرشيف. |
| 16 | 4 | إجمالي عدد الأقراص. |
لا يدعم مستكشف الملفات في نظام التشغيل Windows XP ترميز ZIP64، بينما يدعمه في نظامي التشغيل Windows Vista والإصدارات الأحدث. وبالمثل، تدعم بعض مكتبات الإضافات ترميز ZIP64، مثل DotNetZip وQuaZIP [ 45 ] وIO::Compress::Zip في لغة Perl. يدعم الأمر zipfile المدمج في لغة Python هذا الترميز منذ الإصدار 2.5، ويُستخدم افتراضيًا منذ الإصدار 3.4. [ 46 ] يدعم الأمر java.util.zip المدمج في OpenJDK ترميز ZIP64 بدءًا من الإصدار 7 من Java . [ 47 ] يدعم Android Java API ترميز ZIP64 منذ الإصدار 6.0 من Android. [ 48 ] تجدر الإشارة إلى أن أداة الأرشفة في نظام التشغيل Mac OS Sierra لا تدعم ترميز ZIP64، وقد تُنشئ ملفات مضغوطة تالفة عند الحاجة إلى هذا الترميز. [ 49 ] مع ذلك، فإن الأمر ditto المُضمّن في نظام التشغيل Mac OS قادر على فك ضغط ملفات ZIP64. [ 50 ] تأتي الإصدارات الأحدث من نظام التشغيل Mac OS مزودة بأدوات سطر الأوامر لـ info-zip zip و unzip والتي تدعم Zip64: للتحقق، قم بتشغيل zip -v وابحث عن "ZIP64_SUPPORT".
إمكانية دمجها مع تنسيقات ملفات أخرى
يسمح تنسيق ملف ZIP بإضافة تعليق يحتوي على ما يصل إلى 65,535 بايت ( 2 ^16 - 1 ) من البيانات في نهاية الملف بعد الدليل المركزي. [ 37 ] ونظرًا لأن الدليل المركزي يُحدد موضع كل ملف في الأرشيف بالنسبة إلى نقطة البداية، فمن الممكن أن يبدأ أول إدخال ملف عند موضع غير الصفر، مع العلم أن بعض الأدوات قد لا تعالج ملفات الأرشيف التي لا يبدأ إدخالها عند الموضع صفر. على سبيل المثال، يستطيع برنامج gzip استخراج إدخال من ملف ZIP إذا كان عند الموضع صفر.
يسمح هذا بوجود بيانات عشوائية في الملف قبل بيانات أرشيف ZIP وبعدها، مع إمكانية قراءة الأرشيف بواسطة تطبيق ZIP. ومن الآثار الجانبية لذلك إمكانية إنشاء ملف يكون في الوقت نفسه أرشيف ZIP صالحًا للاستخدام وملفًا بصيغة أخرى، شريطة أن تسمح الصيغة الأخرى بوجود بيانات عشوائية في بدايتها أو نهايتها أو وسطها. تستفيد الأرشيفات ذاتية الاستخراج (SFX)، من النوع الذي يدعمه WinZip، من هذه الميزة، حيث إنها ملفات تنفيذية ( .exe ) تتوافق مع مواصفات PKZIP AppNote.txt، ويمكن قراءتها بواسطة أدوات أو مكتبات ZIP المتوافقة.
يمكن استغلال هذه الخاصية في صيغة ZIP ، وصيغة JAR التي تُعدّ نوعًا مشتقًا منها، لإخفاء محتوى ضار (مثل فئات جافا الضارة) داخل ملف يبدو بريئًا، كصورة GIF مرفوعة على الإنترنت. وقد ثبتت فعالية هذه الثغرة، المعروفة باسم استغلال GIFAR ، في استهداف تطبيقات الويب مثل فيسبوك. [ 51 ]
الحدود
يبلغ الحد الأدنى لحجم ملف ZIP 22 بايت. يحتوي ملف ZIP فارغ من هذا النوع على سجل نهاية الدليل المركزي (EOCD) فقط.50 4B 05 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
يبلغ الحد الأقصى لحجم ملف الأرشيف والملفات الفردية بداخله 4,294,967,295 بايت ( 2^ 32 - 1 بايت، أو 4 جيجابايت ناقص 1 بايت) لبروتوكول ZIP القياسي. أما بالنسبة لبروتوكول ZIP64، فيبلغ الحد الأقصى للحجم 18,446,744,073,709,551,615 بايت ( 2^ 64 - 1 بايت، أو 16 إكسابايت ناقص 1 بايت). [ 52 ]
ملحقات خاصة
حقل إضافي
يتضمن تنسيق ملفات ZIP حقلًا إضافيًا ضمن رؤوس الملفات، يُستخدم لتخزين بيانات إضافية غير مُحددة في مواصفات ZIP الحالية، مما يسمح لبرامج الأرشفة المتوافقة التي لا تتعرف على هذه الحقول بتجاوزها بأمان. معرّفات الرؤوس من 0 إلى 31 محجوزة لاستخدام PKWARE، بينما يمكن لموردي الطرف الثالث استخدام المعرّفات المتبقية لأغراضهم الخاصة.
جدل التشفير القوي
عندما أُصدرت النسخة التجريبية العامة من WinZip 9.0 عام 2003، قدمت WinZip تشفيرها الخاص AES-256 ، باستخدام تنسيق ملف مختلف، بالإضافة إلى توثيق المواصفات الجديدة. [ 53 ] لم تكن معايير التشفير نفسها احتكارية ، لكن شركة PKWARE لم تُحدّث ملف APPNOTE.TXT ليشمل مواصفات التشفير القوي (SES) منذ عام 2001، والتي كانت تُستخدم في إصداري PKZIP 5.0 و6.0. اتهم كلٌ من كيفن كيرني، المستشار التقني لـ WinZip، وماثيو كوفينجتون، مدير منتج StuffIt، شركة PKWARE بحجب SES، لكن جيم بيترسون، كبير مسؤولي التكنولوجيا في PKZIP، ادعى أن التشفير القائم على الشهادات لا يزال غير مكتمل.
وفي خطوة أخرى مثيرة للجدل، تقدمت شركة PKWare بطلب للحصول على براءة اختراع في 16 يوليو 2003 تصف طريقة لدمج ZIP والتشفير القوي لإنشاء ملف آمن. [ 54 ]
في النهاية، اتفقت شركتا PKWARE وWinZip على دعم منتجات بعضهما البعض. في 21 يناير 2004، أعلنت PKWARE دعمها لتنسيق ضغط AES القائم على WinZip. [ 55 ] وفي إصدار لاحق من WinZip التجريبي، أصبح بإمكانها دعم ملفات ZIP القائمة على SES. [ 56 ] أصدرت PKWARE لاحقًا الإصدار 5.2 من مواصفات تنسيق ملفات ZIP للجمهور، والذي وثّق SES. يدعم مشروع البرمجيات الحرة 7-Zip أيضًا AES، ولكنه لا يدعم SES في ملفات ZIP (كما هو الحال في منفذه POSIX المسمى p7zip ).
عند استخدام تشفير AES في برنامج WinZip، تُضبط طريقة الضغط دائمًا على 99، وتُخزَّن طريقة الضغط الفعلية في حقل بيانات إضافي خاص بـ AES. [ 57 ] في المقابل، تُخزِّن مواصفات التشفير القوي (SEC) طريقة الضغط في قسم رأس الملف الأساسي في كلٍّ من الرأس المحلي والدليل المركزي، إلا إذا استُخدم تشفير الدليل المركزي لإخفاء/تشفير البيانات الوصفية.
تطبيق
تتوفر العديد من أدوات ضغط الملفات (.ZIP) ومكتباتها المتنوعة لبيئات البرمجة المختلفة؛ وتشمل التراخيص المستخدمة برامج احتكارية وبرامج مجانية . ومن أشهر أدوات ضغط الملفات : WinZip و WinRAR و Info-ZIP و ZipGenius و7- Zip و PeaZip و B1 Free Archiver ، وهي متاحة على منصات متعددة. بعض هذه الأدوات مزود بمكتبات أو واجهات برمجية.
تتضمن بعض مكتبات التطوير المرخصة بموجب اتفاقية المصادر المفتوحة: libzip و libarchive و Info-ZIP . بالنسبة للغة جافا: تحتوي منصة جافا، الإصدار القياسي، على حزمة "java.util.zip" للتعامل مع ملفات .ZIP القياسية ؛ وتدعم مكتبة Zip64File تحديدًا الملفات الكبيرة (أكبر من 4 جيجابايت) وتتعامل مع ملفات .ZIP باستخدام الوصول العشوائي؛ وتحتوي أداة Apache Ant على تطبيق أكثر اكتمالًا تم إصداره بموجب ترخيص برمجيات أباتشي .
تُضيف تطبيقات Info -ZIP لتنسيق .ZIP دعمًا لميزات نظام ملفات يونكس، مثل معرّفات المستخدمين والمجموعات، وصلاحيات الملفات، ودعم الروابط الرمزية. يُدرك تطبيق Apache Ant هذه الميزات لدرجة تمكّنه من إنشاء ملفات بصلاحيات يونكس مُحددة مسبقًا. كما تُدرك تطبيقات Info-ZIP كيفية استخدام إمكانيات تصحيح الأخطاء المُدمجة في تنسيق ضغط .ZIP . بعض البرامج لا تُدرك هذه الإمكانيات، وستفشل عند التعامل مع ملف يحتوي على أخطاء.
تدعم أدوات Info-ZIP لنظام ويندوز أيضًا أذونات نظام الملفات NTFS ، وستحاول ترجمة هذه الأذونات من NTFS إلى أذونات يونكس أو العكس عند استخراج الملفات. قد ينتج عن ذلك تركيبات غير مقصودة، مثل إنشاء ملفات .exe على وحدات تخزين NTFS مع رفض إذن التنفيذ.
تتضمن إصدارات مايكروسوفت ويندوز دعمًا لضغط ملفات ZIP في مستكشف الملفات منذ إصدار حزمة Microsoft Plus! لنظام ويندوز 98. تُطلق مايكروسوفت على هذه الميزة اسم "المجلدات المضغوطة". أُضيف الدعم الأصلي بدءًا من عام 2000 في ويندوز ME . لا تدعم ميزة "المجلدات المضغوطة" في ويندوز جميع ميزات ZIP . على سبيل المثال، لا يدعم ويندوز 10 هوم التشفير، [ 58 ] على الرغم من إمكانية فك التشفير. لا يدعم ويندوز 7 ترميز إدخال Unicode ، بينما لا يمكن قراءة أو كتابة الأرشيفات المقسمة والممتدة باستخدام ميزة "المجلدات المضغوطة"، كما لا يدعم تشفير AES. [ 59 ] نشأ دعم ويندوز لملفات ZIP من استحواذه على برنامج "VisualZip" الذي كتبه ديف بلامر . [ 60 ] [ 61 ] [ 62 ]
أضافت آبل دعمًا مدمجًا لملفات ZIP في نظام التشغيل Mac OS X 10.3 (عبر BOMArchiveHelper، المعروف الآن باسم Archive Utility ) والإصدارات الأحدث. وتدعم معظم أنظمة التشغيل المجانية ملفات ZIP بطريقة مشابهة لنظامي التشغيل Windows و macOS.
بدأ استخدام تنسيق OpenDocument Format (ODF) في عام 2005، وهو تنسيق مفتوح لجميع أنواع مستندات Office، ويُعدّ التنسيق الافتراضي المستخدم في Collabora Online و LibreOffice وغيرها. [ 63 ] بدأ Microsoft Office باستخدام تنسيق ZIP في عام 2006 لملفات Office Open XML الخاصة به (.docx، .xlsx، .pptx، إلخ)، وأصبح هذا التنسيق هو التنسيق الافتراضي مع Microsoft Office 2007 .
قضايا التدويل
لم تدعم الإصدارات السابقة للإصدار 6.3.0 من هذا التنسيق تخزين أسماء الملفات بنظام Unicode . [ 64 ] وفقًا للمعيار، [ 64 ] يجب تخزين أسماء الملفات بتشفير CP437 ، وهو التشفير القياسي لأجهزة IBM PC ، [ 64 ] ولكن عمليًا، كانت برامج أرشفة DOS تستخدم تشفير الأحرف المُثبَّت في النظام . كما استخدم برنامج الأرشفة المُدمج في نظام Windows حتى الإصدار 11 تشفير "ANSI" الخاص بالنظام، والذي يتوافق مع لغة النظام المُختارة، وذلك لضمان التوافق مع الإصدارات السابقة من DOS عند إنشاء الأرشيفات.
لاحقًا، تم تحديث المعيار ليشمل خيارين لتخزين أسماء الملفات بنظام يونيكود: 1) عند ضبط البت الحادي عشر في حقل علامة البت للأغراض العامة، يُعتبر اسم الملف في حقل "اسم الملف" في رأس الملف بنظام UTF-8 وليس ترميزًا أحادي البايت، و2) تمت إضافة حقل مسار يونيكود الإضافي لتخزين اسم الملف بنظام UTF-8. [ 64 ] تراعي الخوارزمية التالية كلاً من حقل "اسم الملف" الجديد والممارسات السابقة لاستخراج الملفات التي تحتوي أسماؤها على أحرف غير إنجليزية بشكل صحيح: [ 65 ]
- تحقق من وجود حقل المسار الإضافي Unicode، وإذا كان موجودًا، فاستخدم اسم الملف منه، مشفرًا بتنسيق UTF-8.
- تحقق من وجود العلم 11 في حقل علم البت للأغراض العامة، وإذا تم تعيينه، فاعتبر ترميز اسم الملف في حقل "اسم الملف" هو UTF-8.
- إذا كان حقل "نظام التشغيل للضغط" يحتوي على القيمة 11 (NTFS، Windows)، وكانت قيمة حقل "إصدار برنامج الضغط" أكبر من أو تساوي 20، فاعتبر ترميز اسم الملف في حقل "اسم الملف" هو ترميز ANSI (Windows) المطابق للغة النظام إذا أمكن تحديده؛ وإلا، فاستخدم CP437.
- إذا كان حقل "نظام التشغيل للتعبئة" يحتوي على القيمة 0 (FAT، DOS)، وكانت قيمة حقل "إصدار برنامج التعبئة" بين 25 و40 شاملة، فاعتبر ترميز اسم الملف في حقل "اسم الملف" الخاص بالرأس المحلي هو ترميز ANSI (Windows)، وفي حقل "اسم الملف" الخاص بالرأس المركزي هو ترميز OEM (DOS)، بما يتوافق مع لغة النظام إذا أمكن تحديدها؛ وإلا، فاستخدم CP437.
- في حالات أخرى، إذا كان حقل "ضغط نظام التشغيل" يحتوي على القيمة 0 (FAT، DOS)، أو 6 (HPFS، OS/2)، أو 11 (NTFS، Windows)، فاعتبر ترميز اسم الملف في حقل "اسم الملف" هو ترميز OEM (DOS)، والذي يتوافق مع لغة النظام إذا أمكن تحديدها؛ وإلا، فاستخدم CP437.
- في جميع الحالات الأخرى، اعتبر ترميز اسم الملف في حقل "اسم الملف" هو ترميز النظام لنظام التشغيل الذي يعمل عليه برنامج فك الضغط.
إذا استُخدم ترميز خاطئ لفك تشفير أسماء الملفات، فسيظهر للمستخدمين مجموعة عشوائية من الأحرف، تُعرف باسم " موجيباك "، بدلاً من أحرف الأبجدية الوطنية. تحاول الخوارزمية المذكورة أعلاه جاهدةً تجنب هذه النتيجة. وبدلاً من "إعدادات النظام" و"ترميز النظام"، تتيح بعض البرامج للمستخدم اختيار الترميز غير اليونيكودي المطلوب.
في عام 2016، تم حل هذه المشكلة في برنامج إدارة الملفات والأرشيف far2l لأنظمة لينكس، وبي إس دي، وماك. [ 66 ] وفي عام 2024، أُضيف حل مماثل [ 67 ] إلى إصدار 7zip المستخدم في توزيعة ديبيان ومشتقاتها، وإلى إصدار unzip المستخدم في توزيعة أوبونتو ومشتقاتها. [ 65 ]
إرث
توجد العديد من المعايير والتنسيقات الأخرى التي تستخدم كلمة "zip" كجزء من اسمها. على سبيل المثال، يختلف zip عن gzip ، وقد تم تعريف الأخير في معيار IETF RFC 1952. يستخدم كل من zip وgzip خوارزمية DEFLATE للضغط بشكل أساسي. وبالمثل، يستخدم تنسيق ZLIB (IETF RFC 1950 ) أيضًا خوارزمية ضغط DEFLATE، ولكنه يحدد رؤوسًا مختلفة للتحقق من الأخطاء والاتساق. ومن بين التنسيقات والبرامج الشائعة الأخرى التي تحمل أسماءً مشابهة ولكن بتنسيقات أصلية مختلفة: 7-Zip و bzip2 و rzip .
مخاوف
يبلغ عامل الضغط النظري الأقصى لتدفق DEFLATE الخام حوالي 1032 إلى واحد، [ 68 ] ولكن باستغلال تنسيق ZIP بطرق غير مقصودة، يمكن إنشاء أرشيفات ZIP بنسب ضغط تصل إلى مليارات إلى واحد. تُفك ضغط هذه الملفات المضغوطة إلى أحجام هائلة، مما يفوق قدرة الحاسوب الذي تُفك ضغطها عليه. [ 69 ]
انظر أيضاً
مراجع
- 1 2 3 تسجيل نوع محتوى/نوع فرعي جديد من MIME - application/zip ، IANA ، 20 يوليو 1993 ، تم الاطلاع عليه في 5 يناير 2012
- ↑ «فيليب كاتز، رائد برمجيات الحاسوب، 37 عامًا» . صحيفة نيويورك تايمز1 مايو 2000. تم الاطلاع عليه بتاريخ 14 يونيو 2009 .
- ↑ موراي، مات؛ تانينباوم، جيفري أ. (15 أغسطس 1997). "صعود وسقوط نجم برمجيات؛ فيل كاتز كان يعشق البرمجة - والمشروبات الكحولية" . صحيفة وول ستريت جورنال ( النسخة الإلكترونية). مؤرشف من الأصل في 4 مارس 2016. تم تحديث عنوان URL البديل بتاريخ 19-06-2000.
- 1 2 "مكتبة بي بي إس الوثائقية" . www.bbsdocumentary.com . تم الاطلاع عليه بتاريخ 25 سبتمبر 2020 .
- 1 2 ستاي، مايكل. "هجمات ZIP باستخدام نص عادي معروف مُخفَّض" (ملف PDF) . Math.ucr.edu . مؤرشف من الأصل (ملف PDF) بتاريخ 28 أكتوبر 2017. تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ برايان ليفينغستون (8 سبتمبر 2003)، يجب فتح PKZip ، تم الاطلاع عليه في 5 يناير 2012 ،
صيغة ملف ZIP متاحة مجانًا في الملكية العامة ولا يمكن لأي فرد أو كيان أو شركة المطالبة بها قانونيًا أو أخلاقيًا
- ↑ من أين أتت ملفات Zip على أي حال؟، شركة Infinity Design Concepts، مؤرشفة من الأصل في 20 نوفمبر 2012 ، تم استرجاعها في 5 يناير 2012
- ↑ بيان صحفي ، 1989 ، تم الاطلاع عليه في 5 يناير 2012
- ↑ مؤسسنا - فيل كاتز ، شركة PKWARE، مؤرشف من الأصل في 1 أكتوبر 2010 ، تم استرجاعه في 5 يناير 2012
- ↑ غاريث هورتون؛ روب وير؛ أليكس براون (2 نوفمبر 2010)، sc34-wg1 ، تم الاطلاع عليه في 5 يناير 2012
- ↑ ملاحظة تطبيق .ZIP ، تم الاطلاع عليها في 20 يوليو 2012
- 1 2 3 الملف: APPNOTE - مواصفات تنسيق ملف .ZIP الإصدار: 6.1.0 - إشعار بالتغيير - تمت المراجعة: 20/01/2004 ، 19 أغسطس 2004، مؤرشف من الأصل في 19 أغسطس 2004 ، تم استرجاعه في 21 أبريل 2012
- ↑ دليل المستخدم: خادم PKZIP؛ خادم SecureZIP . شركة PKWARE، 2004. ص 72.
- ↑ "تنسيق ملف ZIP (PKWARE)" . استدامة التنسيقات الرقمية: التخطيط لمجموعات مكتبة الكونغرس . مكتبة الكونغرس . 28 مايو 2020. تاريخ الاسترجاع: 16 أبريل 2025 .
- ↑ الملف: APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 4.0، تاريخ المراجعة: 11/01/2000 ، تاريخ الاسترجاع: 16 أبريل 2025
- ↑ الملف: APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 4.5، تاريخ المراجعة: 11/01/2001 ، 3 ديسمبر 2001، مؤرشف من الأصل في 3 ديسمبر 2001 ، تم استرجاعه في 21 أبريل 2012
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 5.2 - إشعار بالتغيير ، 16 يوليو 2003 ، تم الاطلاع عليه في 5 يناير 2012
- ↑ الملف: APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 5.2 - إشعار بالتغيير - تاريخ المراجعة: 06/02/2003 ، 2 يوليو 2003، مؤرشف من الأصل في 2 يوليو 2003 ، تم استرجاعه في 21 أبريل 2012
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.2.0 - إشعار بالتغيير ، 26 أبريل 2004 ، تم الاطلاع عليه في 5 يناير 2012
- 1 2 APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.0 ، 29 سبتمبر 2006 ، تم استرجاعه في 5 يناير 2012
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.1 ، 11 أبريل 2007 ، تم الاطلاع عليه في 25 يونيو 2018
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.2 ، 28 سبتمبر 2007 ، تم الاطلاع عليه في 25 يونيو 2018
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.3 ، 1 سبتمبر 2012 ، تم الاطلاع عليه في 25 يونيو 2018
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.4 ، 1 أكتوبر 2014 ، تم الاطلاع عليه في 25 يونيو 2018
- 1 2 APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.5 ، 20 ديسمبر 2018 ، تم الاطلاع عليه في 3 يناير 2019
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.6 ، 26 أبريل 2019 ، تم الاطلاع عليه في 3 يناير 2019
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.7 ، 1 يونيو 2020 ، تم الاطلاع عليه في 6 يونيو 2020
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.8 ، 15 يونيو 2020 ، تم الاطلاع عليه في 7 يوليو 2020
- ↑ APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.9 ، 15 يوليو 2020 ، تم الاطلاع عليه في 8 أغسطس 2020
- 1 2 APPNOTE.TXT - مواصفات تنسيق ملف .ZIP، الإصدار: 6.3.10 ، 1 نوفمبر 2022 ، تم استرجاعه في 20 نوفمبر 2022
- ↑ "مواصفات طرق الضغط الإضافية" . WinZip . مانسفيلد، كونيتيكت : WinZip Computing، SL، 19 مايو 2009. تم الاطلاع عليه بتاريخ 24 مايو 2009 .
- ↑ "ما هو ملف Zipx؟" . قاعدة معارف WinZip . مانسفيلد، كونيتيكت : WinZip Computing، SL، 13 أغسطس 2010. مؤرشف من الأصل في 16 يوليو 2015. تم الاطلاع عليه في 17 أغسطس 2010 .
- ↑ "ISO/IEC JTC 1/SC 34 — لغات وصف ومعالجة المستندات" (ملف PDF) . 12 أبريل 2010. مؤرشف من الأصل (ملف PDF) في 12 مايو 2014. تم الاطلاع عليه في 10 مايو 2014 .
- ↑ "ISO/IEC 21320-1:2015 ملف حاوية المستندات - الجزء 1: الأساسي" . ITTF. 2015.
- ↑ كاتز، فيليب دبليو. (24 سبتمبر 1991). "باحث عن السلاسل النصية، وضاغط يستخدم نفس الشيء" .
- ↑ مجلة إلكترونية (1 يناير 2023). "صيغة ملف .ZIP" . Neperos.com .
- 1 2 3 4 5 6 7 8 9 "الملف : APPNOTE.TXT - مواصفات تنسيق ملف ZIP : الإصدار: 6.3.4" (TXT) . Pkware.com . تم الاطلاع عليه في 9 سبتمبر 2017 .
- ↑ "الملف: APPNOTE.TXT - مواصفات تنسيق ملف .ZIP" . شركة PKWARE . تم الاطلاع عليه بتاريخ 21 فبراير 2022 .
- ↑ أدلر، مارك. "ما العلاقة بين zlib و gzip و zip؟ ما أوجه التشابه والاختلاف بينها؟" . تم الاطلاع عليه بتاريخ 27 نوفمبر 2018 .
- ↑ "الأسئلة الشائعة حول zlib" . zlib .
يستخدم PKWare DCL تنسيق بيانات مضغوطة مختلفًا تمامًا عن PKZIP وzlib. مع ذلك، يمكنك البحث في مجلد contrib/blast الخاص بـ zlib عن حل محتمل لمشكلتك.
( مساهمة/نشر ) - ↑ سانديب (15 سبتمبر 2021). "كيفية حماية ملف مضغوط بكلمة مرور" . أخبار التقنية اليوم .
- ↑ "معلومات تشفير AES: مواصفات التشفير AE-1 وAE-2" . Winzip.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ "ملاحظة التطبيق - PKZIP/SecureZIP - موقع دعم PKWARE" . Pkware.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ "الملف : APPNOTE.TXT - مواصفات تنسيق ملف ZIP : الإصدار: 6.3.4" (TXT) . Pkware.cachefly.net . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ "تغييرات QuaZIP" . 22 يناير 2014. تم الاطلاع عليه بتاريخ 25 يناير 2014 .
- ↑ "تحسين بايثون: استخدام allowZip64=True افتراضيًا (3.4)" . تم الاطلاع عليه بتاريخ 6 مايو 2014 .
- ↑ شين، شويمينغ (17 أبريل 2009). "دعم صيغة ZIP64، وهي صيغة لملفات Zipfile التي يزيد حجمها عن 4 جيجابايت" . مدونة شويمينغ شين . صن مايكروسيستمز . مؤرشف من الأصل في 30 مايو 2011. تم الاطلاع عليه في 27 سبتمبر 2010 .
- ↑ "تسجيل الدخول - حسابات جوجل" . code.google.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ "خطأ: توقيع رأس ملف الدليل المركزي غير صالح عند فك ضغط الملفات الكبيرة المضغوطة بواسطة نظام التشغيل macOS · المشكلة رقم 69 · thejoshwolfe/yauzl" . GitHub .
- ↑ "استخراج ملف مضغوط كبير (50 جيجابايت) على نظام التشغيل Mac OS X" . تم الاطلاع عليه بتاريخ 17 ديسمبر 2018 .
- ↑ ماكميلان، روبرت (أغسطس 2008). "صورة يمكنها سرقة بيانات اعتمادك على الإنترنت" . Infoworld.com . تم الاطلاع عليه في 9 سبتمبر 2017 .
- ↑ "ZipArchive: Zip64 Format: Crossing the Limits of File Sizes and Number of Files and Segments" . Artpol-software.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ "WinZip – معلومات تشفير AES" . Winzip.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ ماكميلان، روبرت (25 يوليو 2003). "شركة PKWare تسعى للحصول على براءة اختراع لصيغة ملفات .zip" . InfoWorld.com . مؤرشف من الأصل في 10 أغسطس 2003. تم الاطلاع عليه في 16 يونيو 2008 .
- ↑ "مطورو البرامج يُصلحون ثغرة في Zip tiff" . News.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ جون ليدن. "مناقشة معمقة لاختراق تشفير ملفات ZIP" . Theregister.co.uk . تاريخ الاطلاع: 9 سبتمبر 2017 .
- ↑ "معلومات تشفير AES: مواصفات التشفير AE-1 وAE-2" . Winzip.com . تم الاطلاع عليه بتاريخ 9 سبتمبر 2017 .
- ↑ ماهام مختار (أغسطس 2017). "طريقتان لإصلاح خيار "تشفير المحتويات لتأمين البيانات" المعطل في ويندوز 10" . iTechtics . مؤرشف من الأصل في 28 مايو 2020. تم الاطلاع عليه في 28 مارس 2020.
يتوفر نظام تشفير المحتويات (EFS) لجميع إصدارات ويندوز 10 باستثناء إصدار ويندوز 10 هوم.
- ↑ "لماذا لا يزال دعم مجلدات ويندوز المضغوطة (مجلدات Zip) عالقًا عند مطلع القرن؟" . 15 مايو 2018.
- ↑ كريستوفر هاربر (20 أبريل 2024). "كادت إضافة دعم ملفات ZIP إلى نظام ويندوز قبل 30 عامًا أن تتسبب في فصل مبتكر مدير المهام" . موقع Tom's Hardware . تاريخ الاطلاع: 6 مايو 2024 .
- ↑ ديف بلامر (8 يناير 2021). "06. التاريخ السري لمجلدات ZIP في ويندوز" . يوتيوب . تم الاطلاع عليه في 6 مايو 2024 .
- ↑ ديف بلامر (17 أبريل 2024). "كيف كاد إنشاء مجلدات ZIP لنظام ويندوز أن يتسبب في طردي من مايكروسوفت!" . يوتيوب . تم الاطلاع عليه في 6 مايو 2024 .
- ↑ هول، جيم (15 أغسطس 2022). "كيفية تنظيم ملفات ODT" . opensource.com . تم الاطلاع عليه في 9 يوليو 2023 .
- 1 2 3 4 PKWARE (15 يوليو 2020). "APPNOTE.TXT - مواصفات تنسيق ملف .ZIP" . PKWARE .
- 1 2 "ubuntu/+source/unzip - [ لا يوجد وصف ] " . git.launchpad.net .
- ↑ "خطأ في معالجة الأرشيفات التي تحتوي أسماء ملفات/مجلدات الأرشيف على أحرف غير إنجليزية · المشكلة رقم 114 · elfmz/far2l" . GitHub . تم الاطلاع عليه بتاريخ 23 مايو 2024 .
- ↑ "استخدام لغة النظام لتحديد صفحة الترميز لأرشيفات zip القديمة (!8) · طلبات الدمج · دبيان / 7zip · جيت لاب" . جيت لاب . 22 مايو 2024. تم الاسترجاع في 23 مايو 2024 .
- ↑ "التفاصيل التقنية لـ zlib" . تم الاطلاع عليه بتاريخ 10 يوليو 2019 .
- ↑ سميث، إرني (10 يوليو 2019). "أذكى 'قنبلة ضغط' على الإطلاق تُفجّر ملفًا بحجم 46 ميجابايت إلى 4.5 بيتابايت" . موقع Motherboard . فايس ميديا . تاريخ الاسترجاع: 10 يوليو 2019 .
روابط خارجية
تمت أرشفة الملف بتاريخ 17 يوليو 2017 على صفحة Wayback Machine الرئيسية لملف PKWARE الحالي والتاريخي بصيغة .ZIP
- ISO/IEC 21320-1:2015 — ملف حاوية المستندات — الجزء 1: الأساسي
- ملفات ZIP: التاريخ والشرح والتطبيق
- تقليص، وتقليص، ودمج: طرق ضغط الملفات القديمة
- نسخة طبق الأصل من ملف APPNOTE.TXT
- بنية ملف PKZip، مواصفات التنسيق، الجداول الرسومية
- الاختراعات الأمريكية
- تنسيقات الأرشيف
