
مكتبة بايثون لتحليل بيانات CLR/PE الوصفية في تجميعات .NET، مع كشف التدفقات وبصمات التجزئة لدعم تحليل البرمجيات الخبيثة وصيد التهديدات.
dotnetfile هي مكتبة محلل لرأس Common Language Runtime (CLR) لملفات Windows .NET مبنية بلغة Python. يوجد رأس CLR في كل تجميع Windows .NET بجانب رأس Portable Executable (PE). يخزن كمية وفيرة من معلومات البيانات الوصفية للجزء المُدار من الملف.
dotnetfile هو بطريقة ما المكافئ لـ pefile لكن لعينات .NET.
توفر المكتبة واجهة برمجة تطبيقات سهلة الاستخدام، ولكنها تحاول أيضًا المساهمة بطرق جديدة لتحسين اكتشاف الملفات. يتضمن ذلك تجزئة MemberRef (تجريبية) ونسخة أصلية ونسخة معدلة من تجزئة TypeRef.
الهدف من هذا المشروع هو إعطاء محللي البرمجيات الخبيثة وصائدي التهديدات أداة لاستخراج المعلومات من رأس CLR بسهولة. لا تحتاج إلى أن تكون خبيرًا في رأس CLR وتضيع في مواصفاته لاستخدام هذه المكتبة. باستخدام واجهة برمجة التطبيقات، ستتعلم أيضًا كيفية هيكلة الرأس ونأمل أن تحصل على فهم أفضل لهذا النوع من الملفات بشكل عام.
dotnetfile يتطلب Python >= 3.7.
يمكنك بسهولة تثبيت dotnetfile باستخدام pip:
pip install dotnetfile
لتثبيت dotnetfile كوحدة نمطية، يرجى استخدام ملف setup.py المرفق. يمكن القيام بذلك بمساعدة Python:
python3 setup.py install
لاستخدام dotnetfile، كل ما عليك فعله هو استيراد الوحدة النمطية وإنشاء مثيل من الفئة DotNetPE مع مسار التجميع .NET كمعامل. مثال بسيط يطبع عدد التدفقات (streams) للتجميع موضح أدناه:
# Import class DotNetPE from module dotnetfile
from dotnetfile import DotNetPE
# Define the file path of your assembly
dotnet_file_path = '/Users/<username>/my_dotnet_assembly.exe'
# Create an instance of DotNetPE with the file path as a parameter
dotnet_file = DotNetPE(dotnet_file_path)
# Print out the number of streams of the assembly
print(f'Number of streams: {dotnet_file.get_number_of_streams()}')
أنت مدعو لاستكشاف الأدوات المثال: https://github.com/pan-unit42/dotnetfile/blob/main/tools/
يمكن العثور على مزيد من المعلومات حول كيفية استخدام هذه المكتبة في صفحات التوثيق.
يمكن العثور على التوثيق الكامل على https://pan-unit42.github.io/dotnetfile/
بدأ هذا المشروع في عام 2016 مع تطوير مكتبة المحلل للاستخدام الداخلي في Palo Alto Networks. تم تحسينه/توسيعه مع مكتبة الواجهة وفتح مصدره في عام 2022 من قبل الأشخاص التاليين:
هذا المشروع قيد التطوير. إذا وجدت أي مشكلات أو كانت لديك أي اقتراحات، يرجى الإبلاغ عنها في صفحة مشروع GitHub.
شكر خاص لجميع المساهمين الذين ساعدوا في تحسين هذا المشروع.
يعتمد dotnetfile بشكل كبير على مواصفة .NET.