John the Ripper 1.9.0-jumbo-1 مع دعم FPGA

مطلق سراحه إصدار جديد من أقدم برنامج معتمد لتخمين كلمات المرور John the Ripper 1.9.0-jumbo-1. (المشروع يتطور منذ عام 1996). صفحة المشروع المصادر متاحة للتنزيل، بالإضافة إلى التجميعات الجاهزة لنظام التشغيل Windows.

تجدر الإشارة إلى مرور 1.8.0 سنوات على إصدار الإصدار 1-jumbo-4.5، حيث تم إجراء أكثر من 6000 تغيير (git Commit) من أكثر من 80 مطورًا. خلال هذه الفترة، أوصى المطورون باستخدام المراجعة الحالية من جيثب، والتي ظلت حالتها مستقرة على الرغم من التغييرات التي تم إجراؤها بفضل التكامل المستمروالذي يتضمن التحقق الأولي من كل تغيير (طلب السحب) على العديد من المنصات. الميزة الخاصة للإصدار الجديد هي ظهور دعم FPGA (FPGA) بالإضافة إلى وحدة المعالجة المركزية ووحدة معالجة الرسومات وXeon Phi.


للوحات Ztex 1.15y، بما في ذلك 4 شرائح FPGA وكانت تستخدم في الأصل بشكل أساسي لتعدين Bitcoin، يتم الآن تنفيذ 7 أنواع من تجزئات كلمات المرور: bcrypt، وclassic descrypt (بما في ذلك bigcrypt)، وsha512crypt، وsha256crypt، وmd5crypt (بما في ذلك Apache apr1 وAIX smd5)، وDrupal7 وphpass (المستخدم ، وخاصة في ووردبريس). يتم تنفيذ بعضها على FPGA لأول مرة. بالنسبة لـ bcrypt، فإن الأداء الذي تم تحقيقه ~ 119k c/s مع تكرارات 2^5 ("$2b$05") مع استهلاك طاقة يبلغ حوالي 27 واط يتجاوز بشكل كبير نتائج أحدث وحدات معالجة الرسومات لكل لوحة، ولكل سعر جهاز ولكل واط. مدعومة أيضا عناقيد المجموعات من اللوحات من هذا النوع، والتي تم اختبارها حتى 16 لوحة (64 FPGAs) يتم التحكم فيها من خلال Raspberry Pi 2 واحد. يتم دعم وظيفة John the Ripper المعتادة، بما في ذلك جميع أوضاع تخمين كلمة المرور والتنزيل المتزامن لعدد كبير من التجزئة. لتسريع العمل، قمنا بتنفيذ استخدام قناع (وضع "--mask"، بما في ذلك بالاشتراك مع أوضاع أخرى) ومقارنة التجزئات المحسوبة مع تلك المحملة على جانب FPGA. من منظور التنفيذ، العديد من التصاميم (على سبيل المثال. sha512crypt و دروبال 7) الكتل المستخدمة التي تتكون من نوى معالجات متعددة الخيوط (نوى وحدة المعالجة المركزية الناعمة) تتفاعل مع نوى التشفير. قاد دينيس بوريكين تطوير هذه الوظيفة بالتنسيق مع مطوري جامبو آخرين.

تغييرات رئيسية أخرى:

  • دعم عدد كبير من الأنواع الإضافية من التجزئات والشفرات وما إلى ذلك، بما في ذلك تجزئات كلمات المرور الكلاسيكية (على سبيل المثال، من الإصدارات الجديدة من QNX)، بالإضافة إلى محافظ العملات المشفرة والأرشيفات المشفرة وأنظمة الملفات المشفرة (على سبيل المثال، Bitlocker و FreeBSD geli)، بالإضافة إلى دعم أنواع جديدة من التنسيقات المدعومة سابقًا (على سبيل المثال، دعم إضافي لـ bcrypt-pbkdf لـ OpenBSD softraid) وغير ذلك الكثير. في المجمل، تمت إضافة 80 تنسيقًا على وحدة المعالجة المركزية و47 تنسيقًا على OpenCL (وتمت إزالة عدد صغير من التنسيقات القديمة لدمجها في التنسيقات الجديدة والمتقادمة). إجمالي عدد التنسيقات هو الآن 407 على وحدة المعالجة المركزية (أو 262 لا تشمل التنسيقات "الديناميكية" التي تم تكوينها من ملفات التكوين) و88 على OpenCL.
  • إزالة دعم لغة CUDA لصالح OpenCL ، والذي لا يتعارض مع الاستخدام الكامل لوحدة معالجة الرسومات NVIDIA على الأقل (بل ويساعد ، بفضل تركيز التطوير والتحسينات على تنفيذ واحد لكل تنسيق تحت GPU بدلاً من اثنين تطبيقات من قبل).
  • دعم مجموعات تعليمات SIMD الجديدة - AVX2 و AVX-512 (بما في ذلك الجيل الثاني من Xeon Phi) و MIC (للجيل الأول) - بالإضافة إلى الاستخدام الشامل والكامل لـ SIMD في تطبيقات العديد من التنسيقات ، بما في ذلك الاستخدام من التعليمات المدعومة مسبقًا تصل إلى AVX و XOP على x86 (-64) و
    NEON وASIMD وAltiVec على ARM وAarch64 وPOWER على التوالي. (جزئيًا كجزء من GSoC 2015.)
  • العديد من التحسينات لوحدة المعالجة المركزية (CPU) و OpenCL ، للعمل بكفاءة أكبر مع عدد كبير من التجزئة في نفس الوقت (على سبيل المثال ، تحميل 320 مليون تجزئة SHA-1 على وحدة معالجة الرسومات) ولزيادة سرعة حساب التجزئة. بعض هذه التحسينات عالمية ، وبعضها يغطي مجموعات فرعية متنوعة من التنسيقات ، والعديد منها خاص بالتنسيق.
  • (تلقائي) التكوين للتخزين المؤقت الأمثل لكلمات المرور المحددة على وحدة المعالجة المركزية ("—tune=auto -verbosity=5") وأحجام المهام المثالية على OpenCL (ممكن افتراضيًا)، بما في ذلك الأخذ في الاعتبار التزايد البطيء لـ NVIDIA GTX سلسلة وحدات معالجة الرسومات إلى تردد التشغيل الكامل 10xx وأحدث. استخدام التجزئة المحملة بالفعل والطول الفعلي لكلمات المرور التي يتم التحقق منها (عندما تكون معروفة مسبقًا) لمثل هذا الضبط التلقائي.
  • إضافة مترجم "للتعبيرات الديناميكية" المحددة مباشرة في سطر الأوامر وتنفيذ أنواع تجزئة هجينة جديدة، على سبيل المثال "-format=dynamic='sha1(md5($p).$s)'"، المحسوبة على وحدة المعالجة المركزية باستخدام SIMD . كمكونات لمثل هذه التعبيرات، يتم دعم العشرات من التجزئات السريعة (من التجزئات الشائعة مثل MD5 إلى التجزئات الغريبة إلى حد ما مثل Whirlpool)، وتسلسل السلاسل الفرعية، والتشفير وفك التشفير، وتحويل حالة الأحرف، والإشارات إلى كلمة المرور، والملح، واسم المستخدم، وثوابت السلسلة.
  • القضاء على الاختلافات غير المرغوب فيها من التجزئة ، بما في ذلك دعم أوامر قواعد قائمة الكلمات الخاصة بـ hashcat ، والتبديل إلى ترقيم جهاز OpenCL من 1 ، باستخدام نفس أطوال كلمة المرور الافتراضية (الطول 7 عادةً) لاختبارات الأداء.
  • أوضاع جديدة لإنشاء كلمات مرور متشققة (أوضاع التكسير) ، بما في ذلك PRINCE من hashcat (يولد "عبارات" عن طريق تجميع عدة كلمات بترتيب تصاعدي للطول الإجمالي) ، ومجموعات فرعية (جلب كلمات مرور بعدد غير كافٍ من الأحرف المختلفة ، حتى لو كانت هذه الأحرف تأتي من مجموعة كبيرة من الكلمات الممكنة) والهجين الخارجي (يسمح للأوضاع الخارجية ، الموصوفة في ملفات التكوين بلغة شبيهة بلغة C ، بتوليد العديد من كلمات المرور التي يمكن التحقق منها بناءً على كل "كلمة" أساسية مستلمة من وضع آخر). أيضا ، عدة أوضاع خارجية جديدة محددة مسبقا.
  • ميزات إضافية لاستخدام عدة أوضاع في نفس الوقت (وضع فوق الآخر - التراص) ، وكذلك لاستخدام مجموعات القواعد (تكديس قواعد قائمة الكلمات).
  • تحسينات على أوضاع القناع (تمديد القناع التدريجي في نطاق محدد من الأطوال ، وتطبيق القناع على جانب جهاز OpenCL أو لوحة FPGA) وكراك واحد (سلوك معقول على الأجهزة التي تحسب عددًا كبيرًا من التجزئة على التوازي ، والتي كانت في السابق في هذا الوضع يفتقر إلى كلمات المرور التي يجب التحقق منها ، وكذلك قيود على استهلاك الذاكرة).
  • العديد من التحسينات في دعم Unicode والتشفيرات الأخرى في أنظمة فرعية مختلفة.
  • العديد من التحسينات على برامج * 2john (تحويل الملفات ذات التنسيقات المختلفة إلى ملفات
    استخدمه مع john) ، وخاصة wpapcap2john (يتعامل مع حركة مرور WiFi).
  • العديد من خيارات سطر الأوامر الجديدة ، وإعدادات john.conf ، وتكوين خيارات البرنامج النصي ، والميزات الجديدة المقابلة لها ، والتي لم يتم ذكرها كلها هنا.
  • تحسين جودة الكود نظرًا للدعم المضمن لإصدارات تصحيح الأخطاء باستخدام AddressSanitizer (سابقًا) و UndefinedBehaviorSanitizer (تمت إضافته) ، وإضافة مصهر تنسيق مضمن (ضمن GSoC 2015) ، باستخدام التكامل المستمر (يبني لعشرات من أنظمة التشغيل ومجموعات المترجم و اختبارها للحصول على الدعم الصحيح لجميع التنسيقات).

المصدر: linux.org.ru

إضافة تعليق