English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تفسير كيفية استعادة كلمة المرور لملف zip باستخدام بايثون

المقدمة

من خلال مكتبة zipfile المدمجة في Python لتحقيق إزالة ضغط ملفات zip، وإضافة بعض المواد لإكمال عملية破اع الأحجية

يستخدم مكتبة zipfile للقيام بضغط وتكوين وإزالة ضغط ملفات الصيغة zip، ويحتوي zipfile على فئتين مهمتين للغاية، وهي ZipFile وZipInfo، في معظم الحالات، يكفي استخدام هاتين الفئتين فقط. ZipFile هي الفئة الرئيسية، تستخدم لإنشاء وقراءة ملفات zip، بينما ZipInfo هي الفئة التي تحتوي على معلومات كل ملف في الملفات المخزنة.

على سبيل المثال، لقراءة مكتبة zipfile Python، هنا افترض filename هو مسار ملف:

استيراد zipfile 
z = zipfile.ZipFile(filename, 'r') 
for i in z.infolist(): 
print i.file_size, i.header_offset 

هنا يستخدم z.infolist()، وهو يعود بكل معلومات ملفات الملف المضغوط، وهو قائمة من ZipInfo. يحتوي ZipInfo على معلومات ملف واحد في الملف المضغوط، من بين الأكثر استخدامًا هي filename، file_size، header_offset، وهي اسم الملف، حجم الملف، والانتقال إلى البيانات في الملف المضغوط.

مرحلة التحضير

أولاً، تحتاج إلى ملف مضغوط، وأضف كلمة المرور له، ويبدو مثل هذا


ثم نجحتم في الحصول على ملف مضغوط يحتوي على كلمة المرور، حسناً، هذا هو النهاية

التفجير القسري

أولاً، نحن نعرف ما هو التفجير القسري، ببساطة وبشكل غير مبالغ فيه، هو مقارنة الطريقة المتكررة، جميعنا نعرف MD5 Encryption، MD5 غير قابلة للانعكاس، لذا كيف يمكن أن يكون لدى مواقع MD5 Decrypt على الإنترنت مثل هذا، في الواقع، هي طريقة التفجير القسري.

لنأخذ مثالاً، قمت بتشفير نص باستخدام MD5 str="abc" والنتيجة هي "3cd24fb0d6963f7d" هذا النوع من السلسلة الطويلة لا يمكن أن يفهمه الآخرون، كيف يعمل موقع MD5 Decrypt، عندما يكون لديهم وقت فراغ، يبدأون في تجربة تشفير aa/cc/bb/abc وما إلى ذلك باستخدام MD5، ويخزنونها في قاعدة بيانات الخاصة بهم، عندما تذهب للبحث، سيقومون بمقارنة "3cd24fb0d6963f7d" في قاعدة البيانات الخاصة بهم، إذا كانت هناك صدفة يمكن العثور عليها، في معظم الحالات، إذا كانت سلسلة التشفير الخاصة بك معقدة فإنها لا يمكن العثور عليها، هذا هو ما يسمى بـ MD5 Decrypt، أي التفجير القسري

الشيفرة المذكورة أعلاه

import zipfile # استيراد مكتبة، وهي مخصصة للضغط والتوسيع
password="123" # كلمة المرور التي设定的
zfile = zipfile.ZipFile("test.zip") # الملف المضغوط الذي نريد فك ضغطه
zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8'))
# قم بعملية فك الضغط، path هو المسار للتحميل

نحن نبدأ في تشغيل الكود المذكور أعلاه (بالطبع يجب أن يكون كلمة المرور الخاصة بك 123)، نجد أن test.zip تم فك ضغطه على سطح المكتب، نهاية مثالية، لا يزال هناك شيء واحد يفتقر إلى التفجير القسري، إذا كنت تعرف كلمة المرور لماذا تحتاج إلى التفجير القسري، لا تسرع، استمر في قراءة المزيد

استيراد zipfile 
zfile = zipfile.ZipFile("test.zip")
passFile=open('pwd.txt') #قراءة ملف كلمة المرور الذي قمت بتعيينه
for line in passFile.readlines():
  try:
    password = line.strip('\n')
    zfile.extractall(path='C:\\Users\\Administrator\\Desktop\\', members=zfile.namelist(), pwd=password.encode('utf-8'))
    break
  except:
    print(\"خطأ آخر\")

محتوى ملف pwd.txt كالتالي

1223
abc
aaa
123

حسنًا، هذا هو انتهاء هجوم القوة الشاملة على كلمة المرور للملف zip، في الواقع، يتم استخدام ميكانيكية الاستثناء try except بشكل ذكي، عندما يتم فك التشكيل بشكل صحيح، تكون كلمة المرور صحيحة، ولكن إذا فشل فك التشكيل، سيتم إصدار استثناء، جربها بنفسك

النتيجة

هذا هو نهاية محتوى هذا المقال، نأمل أن يكون محتوى هذا المقال له قيمة مرجعية في تعلم أو عمل الجميع، إذا كان لديك أي أسئلة، يمكنك ترك تعليق للتفاعل، شكراً لدعمك لتعليمات النداء.

بيان: محتوى هذا المقال تم جمعه من الإنترنت، ويتمتع المالك الأصلي بحقوق النشر، ويتم جمع المحتوى من قبل المستخدمين عبر الإنترنت الذين يقدمون المساهمات ويقومون بالتحميل، ويتمتع هذا الموقع بلا حقوق ملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية متعلقة بذلك. إذا لاحظت محتوى يشتبه في حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (يرجى استبدال #بـ @ عند إرسال البريد الإلكتروني) للإبلاغ، وتقديم الدليل، وسيتم حذف المحتوى المزعوم عن الفنون المزعومة على الفور.

أنت قد تعجبك