شرح مكتبة zipfile و طريقة التخمين Brute-force في لغة بايثون - ProgrammerTech
Language:

Search

شرح مكتبة zipfile و طريقة التخمين Brute-force في لغة بايثون

  • Share this:
شرح مكتبة zipfile و طريقة التخمين Brute-force في لغة بايثون

جمع المعلومات و القيام بـ Brute-force

هجوم القوة العمياء ( Brute-Force ), سوف نتحدث اليوم عن Brute-force أو ما تسمى باللغة العربية هجوم القوة العمياء. و في هذا الجزء لا نُريد أن نتحدث به بشكل كبير, سوف نعطيكم الإختصار و الخلاصة, سنتحدث عن عملية "جمع المعلومات" و عملية information gathering مفترض تكون أول الخيط الذي سوف نمشي به و تكون اول عملية لدينا و مفتروض أن نكون على ثقة كبيرة بأن هذه العملية أي عملية ثانية يتم بنائها عن طريق جمع المعلومات.

تُعتبَر عملية جمع المعلومات هي صلب الموضوع بالقيام بهذه الهجمة, لو أننا جمعنا معلومات صحيحة عن الضحية نستطيع أن نعمل عليه هجوم Brute-force و نكون واثقين بنجاح الهجمة. كلما كانت لدينا معلومات اكثر كلما كانت الثقة اكثر بنجاح الهجمة خصيصاً بمثل هذه الهجمات Brute-force لأنها تعتمد إعتماداً كلياً على جمع المعلومات.

 

أمثلة حية لأسلوب جمع المعلومات

المثال الأول ليكن لدينا شخص يعمل في شركة و نعرف عنه معلومات كثيرة جداً مثل "ماهي اكلته المفضلة و تاريخ ميلاده أو ميلاد زوجته و اطفاله و من هم اصدقاءه المفضلين المحببين ....الخ". من الممكن أن نجمع هذه المعلومات و وضعها في word list أو مجموعة من الباسوردات التي ممكن أن نضع انفسنا مكان هذا الشخص. لو كنا نحن في مكانه ما هي الباسوردات الذي سوف نضعها؟ نضع باسوردات مهمة أو غيرها, نبدأ بالتخمين عن طريق المعلومات الذي جمعناها عنه.

المثال الثاني لدينا قفل لباب منزل ما و لدينا عدة مفاتيح موجودة و لا نعرف أي مفتاح يقوم بفتح هذا الباب, نقوم بتجريب جميع المفاتيح لحين وضع المفتاح الصحيح. و المعلومات التي لدينا هي مثل قفل هذا الباب يعني هذه معلومة مهمة, و المعلومات الذي جمعناها هي المفاتيح لهذا الباب هذا ابسط شرح.

 

مكتبة zipfile في بايثون

مكتبة zipfile هي مكتبة مهمة جداً تتعامل مع الملفات المضغوطة من نوع zip و يكون لهذه الملفات باسورد.

 

عمل سكربت تخمين على ملف مضغوط zip

نقوم بضغط أي ملف على سطح المكتب و نضع له باسورد, على سبيل المثال "الباسورد هي sss123 و اسم الملف هو tech".

import zipfile
list_p = ["data","123456","sss123","cs"]
zfile = zipfile.ZipFile("C:\\Users\\data\\Desktop\\tech.zip","r")
for p in list_p:
    try:
        zfile.extractall("C:\\Users\\data\\Desktop\\",pwd=p.encode("utf-8"))
        except RuntimeError :
            print("not vaild password {0}".format(p))
        else:
            print("the password is {0}".format(p))

في البداية قمنا بإستدعاء المكتبة zipfile و بعد ذلك قمنا بإنشاء متغير ووضع به عدة باسوردات ضمن لستة للتخمين به اربع باسوردات و إحداها صحيح و الباقي غير صحيحات. ثم حددنا مسار الملف المضغوط و أعطيناه المود "r" يعني قراءة هذا الملف و أدخلناه في حلقة loop ليتم المرور على جميع ما بداخل اللستة for p in list_p. يعني إذا p الباسورد موجود في list_p اللستة قم بقراءة المسار و ارجع القيمة بترميز UTF-8 و قلنا له بحال كان الباسورد غلط إطبعه و إطبع العبارة not vaild password.

و إذا كان الباسورد صحيح إطبعه مع the password is و عند تشغيل السكربت يتم المرور على جميع البيانات في اللسته و يكتب بجانب كل واحدة إذا خطأ لنتجنب كتابتها و إذا صحيحة نجربها و نفتح هذا الملف بها.

zipfile.webp

Tags:
Muhammad Alush

Muhammad Alush

إسمي محمد تركي العلوش محب للتقنية و التعلم الذاتي, و جميع خبراتي تعلمتها ذاتياً, و اللغات البرمجية التي أتقنها هي html, css, javascript, php, c, python بالإضافة إلى حبي الكبير لمجال الشبكات.

موقعي programmer-tech.com