أهلاً ومرحبا بكل أعضاء وزوار مجتمع أكتب كود .. يمكنك تسجيل عضوية فى منتديات أكتب كود .. لتتمكن من عرض الموقع بدون أعلانات ( التسجيل مجاناً )
  1. المدير العام

    المدير العام أدارة موقع أكتب كود طاقم الإدارة

    [​IMG]
    مكتبة hashlib في بايثون
    هي مكتبة تمكننا من معرفة انواع الهاش الذي تُستخدم في الـ security, في الأخص في تطبيقات الويب و هذا كان مثال بسيط أنه لما نأتي لتخزين بيانات مثل باسورد أو بيانات حساسة نعمل لها عملية تشفير hashing يعني تغيير الصيغة للبيانات و لا يمكن عمل عليه عملية عكسية, و العملية كلها تعود بالسكيورتي بحيث إذا ادخلنا String يخرج لنا hash, و الهاش لا يمكن عمل عملية لإرجاعه للكلمة الأصلية, لكن في موضوع آخر إسمه فك تشفير و مفتاح لفك التشفير و يتم إستخدم هجمة القوى الغاشمة brute-forse بهذا الأمر مع هذا النوع في بعض الأحيان يأتي بنتيجة و إحيانا لا.

    سوف نتحدث فقط عن إستخدام المكتبة و التعريف بها, و نستدعي المكتبة اولاً ببداية البرنامج
    كود:
    import hashlib
    و لها العديد من الوثائق و الأوامر الذي تستخدم معها للإطلاع عليها جميعها إضغط هنا ليتم تحويلك لرابط المكتبة و رؤية جميع ما يستخدم معها, مثلاً سوف نستخدم الأمر algorithms_guaranteed لرؤية الخوارزميات المستخدمة في التشفير.

    امر algorithms_guaranteed

    كود:
    >>> import hashlib
    >>> hashlib.algorithms_guaranteed 

    [​IMG]
    كما نلاحظ لقد عرض لنا جميع الخوارزميات المستخدمة في المكتبة.

    امر algorithms_available

    يمكننا هذا الأمر من معرفة الخوارزميات المتاحة
    كود:
    >>> import hashlib
    >>> hashlib.algorithms_available

    [​IMG]

    يمكن عمل حلقة for لمعرفة جميع انواع الهاش المتاحة بشكل منظم.
    كود:
    >>> import hashlib
    >>> hashlib.algorithms_available
    >>> for h in hashlib.algorithms_available:
    print(h)

    [​IMG]

    للبدء بعملية تشفير أي بيانات و نريد الحصول على تشفير لها, على سبيل المثال سوف اُشفر كلمة saja بتشفير md5 ثم طريقة العرض هي utf-8.
    كود:
    >>> import hashlib
    >>> data = "saja"
    >>> hasht = hashlib.new("md5")
    >>> hasht.update(data.encode('utf-8'))
    >>> hasht.hexdigest()
    'f338090a40ae3f84f753a4877af34a05'
    >>>

    [​IMG]

    لتشفير الكلمة السابقة بكل الأنواع المتاحة دفعة واحدة
    كود:
    >>> import hashlib
    >>> data = "saja"
    >>> hasht = hashlib.new("md5")
    >>> hasht.update(data.encode('utf-8'))
    >>> for h in hashlib.algorithms_available:
          hasht = hashlib.new("{0}".format(h))
          hasht.update(b'saja')
          print(hasht.hexdigest())

    [​IMG]

    كما نلاحظ أنه قد شفرها لنا بعدة تشفيرات و أظهر خطأ و الخطأ يعني أن بعض التشفيرات تحتاج التشفير بها بمفردها لأنها تحتاج إلى length معين و تحتاج argument, و إذا نريد معرفة نوع الهاش الذي توقف عنده و ظهر الخطأ نستخدم كالتالي.
    كود:
    >>> import hashlib
    >>> data = "saja"
    >>> hasht = hashlib.new("md5")
    >>> hasht.update(data.encode('utf-8'))
    >>> for h in hashlib.algorithms_available:
          hasht = hashlib.new("{0}".format(h))
          hasht.update(b'saja')
          print(h)
          print(hasht.hexdigest()) 

    [​IMG]

    كما نلاحظ أنه اعطانا التشفير الذي توقفت عنده المشكلة و إسمه shake_256 يعني يحتاج length ليشفر به.

    [​IMG]

    إذا نريد أن نشفر بالتشفير الذي توقف عنده نقوم بإعطاءه طول كما يحتاج
    كود:
    >>> hasht = hashlib.new("shake_256")
    >>> hasht.update(b'saja')
    >>> hasht.hexdigest(15)

    [​IMG]

    كما نلاحظ أنه تم التشفير فهذا يعني فهو متغير حسب الطول الذي نعطيه له, إذا اعطيناه 5 سيعطينا هاش طول 5 و إذا 10 كذلك الأمر.

    هذا كان بالنسبة لموضوع hashlib يعني إذا دخلنا لقاعدة بيانات موقع ما او تطبيق سوف نجد هاش او هاشات غير مفهومة لدينا و لا نعرف كيفية فك هذه البيانات للدخول للموقع,
    نبدأ بالدخول لبعض المواقع نجد بها السرعة عالية جداً و هذه المواقع يكون عملها عمل
    brute-forse للهاش الذي نعطيه لها.
     
جاري تحميل الصفحة...
المشاركات المتشابهة - التعرف على مكتبة
  1. المدير العام
    الردود:
    0
    المشاهدات:
    193
  2. المدير العام
    الردود:
    0
    المشاهدات:
    165
  3. المدير العام
    الردود:
    0
    المشاهدات:
    228
  4. المدير العام
    الردود:
    0
    المشاهدات:
    182
  5. المدير العام
    الردود:
    0
    المشاهدات:
    157

مشاركة هذه الصفحة