مكتبة zipfile وطريقة التخمين Brute-force بايثون
سنقوم باستعمال اهم دوال هذه المكتبة zipFileأول خطوة هي بتثبيت مكتبة zipfile بالأمر
pip install zipfile
كمثال سنقوم بفك الضغط على ملف مضغوط بصيغة zip
الطريقة كالاتي
أولا استدعاء المكتبة كالاتي:import zipfileقم بتمرير مسار الملف المراد فك الضغط عنه
filename = 'archive_protected.zip'الى الدالة (ZipFile(filename
فيصبح الامر
zip_File = zipfile.ZipFile(filename)ثم أضف أمر فك الضغط extractall
zip_File.extractall()بعد ان أخذنا فكرة حول استخدام المكتبة, سنقوم بكتابة سكريبت بسيط جدا للتخمين على ملف مضغوط Brute-Forcing archive.zip
الطريقة كالاتي
نستدعي المكتبة بالامرimport zipfileنقوم بانشاء متغير filename ونضع به اسم الملف المضغوط المراد التخمين على رقم السري Password الخاص به
ملاحظة:
ان كان الملف بجانب المشروع نكتفي باسم الملف, أما في حالة كان بمجلد أخر نضع المسار كاملا
كمثال:
'/root/project/archive_protected.zip'
filename = 'archive_protected.zip'ننشئء متغير اخر dictionary ونعين له قيمة تحتوي ملف أو قائمة للباسووردات
dictionary = 'passwordlist.txt'قم بانشاء متغير باسم password فارغ سنحتاجه فيما بعد, سيحمل الباسوورد المراد تجربته
password = Noneالأن نحتاج لفتح الملف المضغوط باستعمال الدالة ZipFile
فقط نمرر لها اسم الملف المراد فك تشفيره
zip_to_open = zipfile.ZipFile(filename)
الان نقوم بقراءة ملف الباسووردات dictionary عبر حلقة for
with open(dictionary, 'r') as f:
for line in f.readlines():
password = line.strip('\n')
try:
file_to_open.extractall(pwd=password)
password = '[+] Password found: %s' % password
print password
except :
print "[!] Password Incorrect: %s" % password
وهذا السكريبت كاملا
يمكنك نسخه من هنا
import zipfile, sys
filename = 'archive_protected.zip'
dictionary = 'passwordlist.txt'
password = None
zip2Open = zipfile.ZipFile(filename)
with open(dictionary, 'r') as f:
for line in f.readlines():
password = line.strip('\n')
try:
zip2Open.extractall(pwd=password)
print '[+] Password found: %s' % password
sys.exit(0)
except:
print "[!] Password Incorrect: %s" % password
يمكنكم الدخول على ويكي حاسوب للاطلاع على مهام هذه المكتبة مع الشرح بالعربي
وثائق المكتبة الاصلية بالانجليزي