تقنية

is_zipfile في بايثون: هل تثبت سلامة CRC للعضو؟

التعرف صادق وفحص CRC يعيد اسم العضو r
نتيجة النسخة المعدلة. [1] [2]

نغير محتوى عضو في أرشيف مؤلف بالذاكرة. [1] [2]

الخلاصة السريعة

لا؛ is_zipfile صادقة رغم تلف العضو هنا. [1] [2]

  • نكتب OWNR باسم r دون ضغط. [1] [2]
  • نبدل بايتًا إلى OWNS في النسخة. [1] [2]
  • يعطي is_zipfile القيمة True. [1] [2]
  • يعيد testzip الاسم r؛ الأصل يعيد None. [1] [2]
  • الأول يتعرف الصيغة؛ الثاني يفحص CRC والرؤوس. [1] [2]
  • اختبرنا 3.12.14 دون استخراج ملفات. [1] [2]

المثال

import io,zipfile as z
b=io.BytesIO()
with z.ZipFile(b,'w') as a:
 a.writestr('r',b'OWNR')
v=b.getvalue().replace(
 b'OWNR',b'OWNS',1)
print(z.is_zipfile(io.BytesIO(v)))
with z.ZipFile(io.BytesIO(v)) as a:
 print(a.testzip())

[1] [2]

المخرجان True ثم r. [1] [2]

التعرف والفحص

الفحص الأول للتعرف؛ الثاني يقرأ الأعضاء ويفحص CRC (رمز تحقق) والرؤوس. الأصل يعطي None والتعديل r. [1] [2]

testzip يعيد None للأصل وr للنسخة المعدلة
مقارنة الأصل والنسخة. [1] [2]

حدود الفحص

المثال عضو واحد مخزن دون ضغط. الاستبدال خاص بمثالنا؛ لم نختبر أمانًا أو تشفيرًا. [1] [2]

المراجع

  1. Python: zipfile
  2. CPython 3.12.14: zipfile
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.