
تولّد هذه الأداة عبارات تذكيرية BIP-39 مشتقة من الطوابع الزمنية لنظام Unix، وتستكشف الآثار المترتبة على ثغرة 'Milk Sad' (CVE-2023-39910).
هذه الأداة مصممة لتوليد عبارات استرداد BIP-39 (عبارات أولية من 24 كلمة) استناداً إلى طوابع Unix الزمنية، مع التركيز بشكل خاص على استكشاف العبارات التي قد تُولَّد من خلال ثغرة "Milk Sad" (CVE_2023-39910).
يقوم مولّد عبارات الاسترداد (Milk Sad) بإنشاء عبارات BIP-39 من 24 كلمة من خلال استخدام طوابع Unix الزمنية كمصدر للإنتروبيا. ويهدف إلى توليد جميع عبارات الاسترداد الممكنة التي ربما أُنتجت بسبب الخلل المحدد في جمع الإنتروبيا المعتمد على الطابع الزمني والمرتبط بثغرة "Milk Sad".
لديك خياران لتثبيت الأداة وتشغيلها على نظامك:
install.shيعمل هذا السكربت على أتمتة عملية الترجمة (Compilation) ويتعامل مع الاعتماديات الشائعة لأنظمة لينكس القائمة على Debian/Ubuntu.
cd MilkSad-Mnemonic-Generator
chmod +x install.sh
./install.sh
g++، make، qmake، libssl-dev، libqt5widgets5-dev). إذا كان أي منها مفقوداً، فسيحاول تثبيتها (مع طلب كلمة مرور sudo إذا لزم الأمر). بعد إعداد الاعتماديات بنجاح، سيقوم بتجميع تطبيقي CLI وGUI ووضعهما مباشرة في الدليل الجذر للمشروع.إذا كنت تفضل تجميع التطبيقات بنفسك، فاتبع هذه الخطوات اليدوية:
تأكد من تثبيت حزم التطوير التالية على نظام Debian/Ubuntu لديك:
g++ (عادةً جزء من حزمة build-essential)make (جزء أيضاً من build-essential)qmake (يوفَّر بواسطة qt5-qmake أو qtbase5-dev)libssl-dev (أساسي للدوال التشفيرية التي تستخدمها الأداة)libqt5widgets5-dev (مطلوب لتطوير واجهة Qt الرسومية؛ غالباً ما تتضمن هذه الحزمة qtbase5-dev)يمكنك تثبيت هذه المتطلبات باستخدام:
sudo apt update
sudo apt install build-essential qt5-qmake libssl-dev qtbase5-dev
cd src/cli
g++:
g++ -std=gnu++11 -Wall -Wextra -O2 milk_sad_generator.cpp -o milk_sad_generator -lcrypto -lssl
mv milk_sad_generator ../../
cd ../..
cd src/gui
qmake لإنشاء ملف Makefile لمشروع Qt:
qmake mnemonic_generator.pro
make:
make
mv milk_sad_generator_gui ../../
cd ../..
Pic/: لكي يتمكن تطبيق GUI من العثور على صورة الخلفية بشكل صحيح، يجب عليك نقل مجلد Pic/ من src/gui/ إلى جذر المشروع:
mv src/gui/Pic .
بعد التثبيت، ستجد ملفين تنفيذيين مباشرة في الدليل الجذر لمشروعك: ./milk_sad_generator (نسخة واجهة سطر الأوامر) و./milk_sad_generator_gui (نسخة الواجهة الرسومية).
./milk_sad_generator_gui # To launch the GUI application
# OR
./milk_sad_generator # To launch the CLI application
يولّد هذا الوضع عبارة استرداد واحدة من 24 كلمة لتاريخ ووقت محدد تحدده أنت.
1970-01-01 00:00:00 للطابع الزمني الأول. إذا اخترت الإنجليزية، فسيولّد عبارة استرداد "milk sad ...".mnemonic_[language].txt.يولّد هذا الوضع عبارات استرداد لكل طابع زمني ضمن نطاق تاريخي محدد للبداية والنهاية.
2017-01-01:2018-12-31 (سيؤدي هذا إلى توليد عبارات استرداد لجميع الطوابع الزمنية بين 1 يناير 2017 و31 ديسمبر 2018، شاملاً الطرفين.)mnemonics_range_[language].txt.Ctrl+C) واستئنافه لاحقاً دون فقدان التقدم.يولّد هذا الوضع جميع عبارات الاسترداد الممكنة عبر نطاق الطابع الزمني 32-بت لنظام Unix بالكامل (من 1 يناير 1970 إلى 19 يناير 2038).
all_mnemonics_[language].txt.mnemonic_[language].txtmnemonics_range_[language].txtall_mnemonics_[language].txtgeneration_progress_range.bin (للخيار 2) / generation_progress_full.bin (للخيار 3)Ctrl+C. ستحفظ الأداة تلقائياً تقدمها الحالي..bin المقابل تلقائياً.إذا اضطررت إلى إيقاف عملية توليد (مثل استخدام Ctrl+C)، يمكنك الاستئناف بسلاسة من حيث توقفت:
لتوليد نطاق التواريخ (الخيار 2):
generation_progress_range.bin وتواصل التوليد من آخر طابع زمني محفوظ.لتوليد النطاق الكامل (الخيار 3):
generation_progress_full.bin وتستأنف التوليد من النقطة التي توقف عندها..bin (generation_progress_range.bin أو generation_progress_full.bin) إذا كنت تنوي استئناف التوليد..bin المقابل يدوياً و إعادة تسمية/حذف/نقل أي ملف مخرجات موجود (mnemonics_range_[language].txt أو all_mnemonics_[language].txt) من التشغيلات السابقة قبل تشغيل البرنامج مرة أخرى.all_mnemonics_[language].txt، فسيتم استبدال ملف التقدم .bin، وستتم إضافة عبارات الاسترداد الجديدة إلى ملف المخرجات الموجود.فيما يلي مثال على عبارة استرداد BIP-39 من 24 كلمة تم توليدها بواسطة هذه الأداة:
vault alarm sad mass witness property virus style good flower rice alpha viable evidence run glare pretty scout evil judge offer refuse another breeze
لأغراض التحقق أو كمرجع سريع، يحتوي دليل tests/ في هذا المستودع على أمثلة لعبارات استرداد مولّدة بلغات مختلفة للطابع الزمني 1970-01-01 00:00:00 UTC.
لتحويل عبارات الاسترداد المولّدة إلى عناوين بيتكوين (مع دعم صيغ P2PKH وP2SH-P2WPKH وP2WPKH)، يمكنك استخدام هذه الأداة:
إذا وجدت هذا المشروع مفيداً وترغب في تشجيعي على إنشاء المزيد من الأدوات المشابهة، فكر في التبرع:
bc1qg7xmlsdxfgu3muxherh4eee2ywj3gz8qfgct3s0x1B449E1D545bD0dc50f361d96706F6C904553929F776tt1it7vifCzD9icrsby3ujkZdJ8EY9917GUM3skrTJj96B4SukPJSC4M2FyssoxduVyviv9aGr0x1B449E1D545bD0dc50f361d96706F6C90455392948aaDb1g4Ms7PB3WMj6ttbMWuEwe171d6Yjao59uFJR38tHa75nKwPqYoPAYmWZPUhXmDbDvqtE6d2FX3YaF1dVE7zhD9Dt