
سكربت Python للعثور بكفاءة على الملفات ذات الخصائص المحددة في أنظمة الملفات الشبيهة بـ UNIX (أسرع من find)
بعد الحصول على وصول إلى جهاز بعيد أثناء اختبار الاختراق، قد ترغب في العثور على ملفات إعدادات أو ملفات ثنائية مثيرة للاهتمام لمحاولة تصعيد الامتيازات.
النص البرمجي مكتفٍ ذاتيًا، ويعمل على كل من Python3 وPython2.7، ليكون متوافقًا مع الأجهزة الحديثة (التي لا تتضمن python2 افتراضيًا) والأجهزة الأقدم أيضًا.
بدلًا من تنفيذ عدة أوامر find، يتتبع هذا النص البرمجي البسيط كل ذلك بتمريرة واحدة عبر بنية شجرة القرص بالكامل، عبر تطبيق جميع المسندات (الدوال التي تنتهي بـ _p أو _filep للمسندات التي تُطبَّق على الملفات فقط).
لا يزال العمل جاريًا عليه، لكن الكود متماسك جدًا ومن السهل جدًا كتابة المسندات الخاصة بك: كل ما تحتاجه هو دالة تستقبل مسار ملف وتُرجع قيمة منطقية (boolean).
في النهاية، تُخزَّن جميع مجموعات الملفات في قاموس يُسمى d، ومفاتيحه هي أسماء المسندات. للوصول إليه، ما عليك سوى تنفيذ python3 -i diskwalk.py. سيتم إسقاطك في بيئة بايثون تفاعلية (REPL)، وبما أن هذه مجموعات بايثون، يمكنك بسهولة إجراء عمليات مثل
d['executable_files'] & d['writable_files']
للحصول على مجموعة الملفات القابلة للكتابة والتنفيذ معًا
d['executable_files'] - d['readable_files']
للحصول على الملفات القابلة للتنفيذ ولكن غير القابلة للقراءة
d['owned_by_nobody_dirs'] | d['owned_by_nobody_files']
للحصول على اتحاد المجلدات والملفات المملوكة للمستخدم nobody
سيتم حفظ البيانات التي تم الحصول عليها في ملف مضغوط ومُخزَّن بتنسيق pickle بإسم dump.gz، ما عليك سوى تمريره كوسيط لتحميله وتجنب فحص القرص مرة أخرى
python -i diskwalk.py dump.gz
بسبب طريقة عمل pickle في بايثون، تنطبق التحذيرات المعتادة: على سبيل المثال، لن تتمكن من تحميل هذا الملف نفسه في مُفسِّر بايثون مختلف عن الذي استخدمته لإنشاء الملف.