
أداة استرداد تفريغ خزنة المعرض (Gallery Vault) مع اكتشاف تلقائي، اشتقاق المفاتيح واستعادة الوسائط تلقائيًا.
أداة استرداد للملفات المشفرة بواسطة تطبيق Gallery Vault (ThinkYeah) على أندرويد. تدعم تخطيط الحاوية V2 الموضح أدناه ولا تتطلب رقم PIN الخاص بـ Gallery Vault.
قم باسترداد البيانات التي تملكها أو المخوّل بفحصها فقط.
تثبيت التبعيات التشغيلية:
python3 -m pip install -r requirements.txt
للتطوير والاختبارات:
python3 -m pip install -r requirements-dev.txt
ruff format --check .
ruff check .
python3 -m pytest
python3 gv_tui.py
حدد دليل تفريغ أو ملفًا مشفرًا فرديًا، وراجع دليل الإخراج، ثم اضغط F5 أو اختر Recover. يطلب F5 إيقافًا آمنًا أثناء نشاط الاسترداد ويخرج عند الخمول.
يبحث الاكتشاف الذكي عن أدلة بأسماء مثل
.galleryvault_DoNotDelete_123 ويعالج دليل files الخاص بها. عطّله لفحص كل ملف أسفل المسار المحدد.
python3 gv_decryptor.py /path/to/dump --out /path/to/output
خيارات مفيدة:
--manual, --scan-all فحص جميع الملفات بدلاً من اكتشاف المستودعات
--no-recursive الفحص أو الاكتشاف في المستوى الأعلى فقط
--overwrite استبدال الملفات المستردة الموجودة
--verbose عرض الملفات المتخطاة وتفاصيل عدّادات الحالة
يُقبل أيضًا ملف مشفر فردي:
python3 gv_decryptor.py encrypted_asset --manual
إذا تم حذف --out، تُرسل الملفات المستردة إلى INPUT_recovered. يتم الحفاظ على شجرة الإدخال أسفل ذلك الدليل. لا يتم استبدال الملفات الموجودة ما لم يتم توفير --overwrite، ويتم كتابة الإخراج بشكل ذري بحيث لا يترك الاسترداد الفاشل أو الملغى ملفًا مستردًا جزئيًا.
رموز خروج سطر الأوامر هي:
0: تم استرداد أصل واحد على الأقل ولم يفشل أي مرشح1: لم يتم استرداد أي أصول، أو فشل مرشح واحد على الأقل2: تكوين إدخال أو إخراج غير صالحيتم اختيار الامتداد المسترد من توقيع الملف. يتعرف المكتشف المدمج على PNG وJPEG وGIF وWebP وMP4 وMOV و3GP وHEIC/HEIF وAVIF وMP3 وWAV وOgg وAVI وMatroska وPDF وZIP. يُكتب المحتوى غير المعروف كملف .bin.
في صيغة Gallery Vault V2 المدعومة، يحمي رقم PIN واجهة التطبيق؛ تستخدم حمولة الملف تحويل XOR معتمدًا على الموضع. يُخزَّن مفتاحها لكل ملف في الحاوية بعد تشفيره بمفتاح DES مشتق من ثوابت يستخدمها التطبيق.
تخطيط حاوية مبسط هو:
┌──────────────────── Gallery Vault V2 container ────────────────────┐
│ Thumbnail prefix │ Encrypted payload │
├────────────────────────────────────────────────────────────────────┤
│ Inner marker >>tyfs>> │
│ Optional swapped payload block │
├─────────────────────────── Tail metadata ──────────────────────────┤
│ Thumbnail length 8 bytes │
│ Payload/marker boundary 8 bytes │
│ Layout selector 1 byte │
│ DES-encrypted XOR key variable, block aligned │
│ Encrypted-key length 8 bytes │
│ Metadata variable │
│ Metadata length 8 bytes │
│ Version field 2 bytes (01 01) │
├────────────────────────────────────────────────────────────────────┤
│ End marker <<tyfs<< │
└────────────────────────────────────────────────────────────────────┘
│
▼
validate offsets → recover XOR key → assemble payload
│
▼
stream recovered asset
يتحقق مفكك التشفير من هذه الإزاحات والعلامات قبل معالجة الحمولة. ثم يفك تشفير المفتاح لكل ملف، ويجمع نطاقات الحمولة المحددة ببايت التخطيط، ويطبق:
plain[i] = encrypted[i] XOR (i & 0xff) XOR key[i mod key_length]
تُحوَّل الملفات في كتل، مما يبقي استخدام الذاكرة محدودًا لمقاطع الفيديو الكبيرة. يستخدم الاكتشاف الذكي وفحص جميع الملفات نفس التنفيذ في سطر الأوامر والواجهة التفاعلية.
UNSUPPORTED_VERSION تعني أن الملف يحتوي على علامات Gallery Vault لكنه لا يحتوي على حقل الإصدار V2 المدعوم.CORRUPT_STRUCTURE تعني أن علامة أو طولًا أو حد حمولة غير صالح.NOT_GV تعني عدم العثور على علامة نهاية Gallery Vault بالقرب من ذيل الملف.EXISTS تعني الحفاظ على الوجهة؛ استخدم --overwrite فقط عندما يكون الاستبدال مقصودًا.--verbose عند فحص دليل مختلط لرؤية الحالات التفصيلية.شهد Gallery Vault إصدارات متعددة وتخطيطات تخزين مختلفة. يقتصر التوافق على الملفات المطابقة لبنية V2 أعلاه؛ احتفظ بالبيانات المشفرة الأصلية حتى يتم التحقق من الملفات المستردة.
تُقدَّم هذه الأداة لأغراض تعليمية وشرعية فقط. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام. تأكد دائمًا من حصولك على التفويض المناسب قبل فك تشفير البيانات التي لا تخصك.