
Python implementation of the CaRT library for (un)inerting files.
تُستخدم صيغة ملف CaRT لتخزين/نقل البرمجيات الخبيثة والبيانات الوصفية المرتبطة بها. وهي تعطّل البرمجية الخبيثة بحيث لا يمكن تنفيذها وتشفرها بحيث لا يمكن لبرنامج مكافحة الفيروسات تصنيف ملف CaRT كبرمجية خبيثة.
الآن بعد أن أصبحت STIX v2 تستخدم JSON للترميز، يمكنك تضمين تقرير STIX الخاص بك مباشرةً في صيغة CaRT.
عندما يرمّز CaRT الملفات، فإنه يضيف البيانات الوصفية من ملف *.cartmeta الذي يحمل نفس بادئة ملفك.
لذلك، إذا قمت بحفظ تقرير STIX في ملف .cartmeta، فسيحتوي ملف CaRT الناتج على
تقرير STIX الكامل مضمّنًا بداخله.
مثال:
$ ls
file.exe - الملف الذي أريد ترميزه
file.exe.cartmeta - تقرير STIX للملف file.exe
$ cart file.exe
$ ls
file.exe - الملف الذي أريد ترميزه
file.exe.cartmeta - تقرير STIX للملف file.exe
file.exe.cart - ملف CaRT يحتوي على كل من file.exe وتقرير STIX الخاص به
يمتلك CaRT ترويسة إلزامية تبدو على النحو التالي
4s h Q 16s Q
CART<VERSION><RESERVED><ARC4KEY><OPT_HEADER_LEN>
حيث تكون قيمة VERSION هي 1 وقيمة RESERVED هي 0. في معظم الحالات، يُخزَّن مفتاح RC4 المستخدم لفك تشفير الملف في الترويسة الإلزامية ويكون دائمًا الشيء نفسه (أول 8 أرقام من قيمة π مرتين). ومع ذلك، يتيح CaRT خيارًا لتجاوز المفتاح، وفي هذه الحالة يخزّن بايتات صفرية في الترويسة الإلزامية. ستحتاج عندها إلى معرفة المفتاح لفك ترميز ملف CaRT...
الترويسة الاختيارية في CaRT هي كتلة RC4 بحجم OPT_HEADER_LEN بايت من ترويسة مُسلسَلة بصيغة JSON
RC4(<JSON_SERIALIZED_OPTIONAL_HEADER>)
كتلة البيانات في CaRT هي كتلة تُضغط بـzlib ثم تُشفر بـRC4
RC4(ZLIB(block encoded stream))
كما هو الحال في الترويسة الاختيارية، فإن التذييل الاختياري في CaRT هو كتلة RC4 بحجم OPT_FOOTER_LEN بايت من تذييل مُسلسَل بصيغة JSON
RC4(<JSON_SERIALIZED_OPTIONAL_FOOTER>)
ينهي CaRT ملفه بتذييل إلزامي يتيح للصيغة قراءة التذييل وإرجاع قيم التجزئة دون قراءة الملف بأكمله
4s QQ Q
TRAC<RESERVED><OPT_FOOTER_LEN>
بتركيب حزمة pip، تحصل على إمكانية الوصول إلى مكتبة CaRT وكذلك إلى واجهة أوامر CaRT (CLI).
يمنح CLI الخاص بـCaRT الأولويات التالية لخياراته:
~/.cart/cart.cfgهذه هي الخيارات المتاحة في CLI الخاص بـCaRT:
الاستخدام: cart [options] file1 file2 ... fileN
تُستخدم صيغة ملف CaRT لتخزين/نقل البرمجيات الخبيثة والبيانات الوصفية المرتبطة بها.
وهي تعطّل البرمجية الخبيثة بحيث لا يمكن تنفيذها وتشفرها بحيث لا يمكن لبرنامج مكافحة الفيروسات
تصنيف ملف CaRT كبرمجية خبيثة.
الوسائط الموضعية:
file
الخيارات:
-h, --help عرض رسالة المساعدة هذه والخروج
-v, --version عرض رقم إصدار البرنامج والخروج
-d, --delete حذف الملف الأصلي بعد نجاح العملية
-f, --force استبدال ملف الإخراج إذا كان موجودًا بالفعل
-i, --ignore تجاهل مفتاح RC4 من ملف الإعدادات
-j JSONMETA, --jsonmeta JSONMETA
توفير البيانات الوصفية للترويسة على هيئة كتلة JSON
-k KEY, --key KEY استخدام مفتاح RC4 خاص (مُرمَّز بترميز Base64). يجب توفير المفتاح نفسه لفك ترميز ملف CaRT.
-m, --meta الاحتفاظ بالبيانات الوصفية عند استخراج ملفات CaRT
-n FILENAME, --name FILENAME
استخدام هذه القيمة كاسم ملف للبيانات الوصفية
-o OUTFILE, --outfile OUTFILE
تعيين ملف الإخراج
-s, --showmeta عرض البيانات الوصفية للملف فقط
يتمتع CaRT بالذكاء الكافي لتحديد ما إذا كان الملف يحتاج إلى ترميز CaRT أو فك ترميزه.
لترميز ملف غير مُرمَّز بصيغة CaRT: cart file1
لفك ترميز ملف مُرمَّز بصيغة CaRT: cart file1
إنه الأمر نفسه!
يبدو ملف إعدادات CaRT على النحو التالي:
[global]
# rc4_key هو تمثيل Base64 لمفتاحك
rc4_key: AvUzYXNkZg==
# keep_meta يعادل الخيار -m في CLI
keep_meta: True
# force يعادل الخيار -f في CLI
force: True
# default_header هو زوج مفتاح/قيمة من البيانات يُضاف إلى الترويسة الاختيارية في CaRT
[default_header]
poc: اسمك
poc_email: [email protected]
توجد أيضًا تطبيقات لـCaRT بلغتي Rust وJava. يمكنك الاطلاع عليها أدناه:
تتيح صيغة ملف CaRT تخزين ونقل البرمجيات الخبيثة والبيانات الوصفية المرتبطة بها. وهي تعطّل البرمجيات الخبيثة بحيث لا يمكن تنفيذها، وتشفرها حتى لا يصنّف برنامج مكافحة الفيروسات ملف CaRT كبرمجية خبيثة.
الآن بعد أن أصبحت STIX v2 تستخدم JSON للترميز، يمكنك تضمين تقارير STIX مباشرةً
في صيغة CaRT. عندما يرمّز CaRT الملفات، فإنه يضيف البيانات الوصفية من ملف *.cartmeta الذي يحمل نفس
بادئة ملفك. وبالتالي، إذا قمت بحفظ تقرير STIX في ملف
.cartmeta، فسيتم تضمين التقرير الكامل في ملف CaRT الناتج.
مثال:
$ ls
file.exe - الملف المراد ترميزه
file.exe.cartmeta - تقرير STIX للملف file.exe
$ cart file.exe
$ ls
file.exe - الملف المراد ترميزه
file.exe.cartmeta - تقرير STIX للملف file.exe
file.exe.cart - ملف CaRT يحتوي على كل من الملف file.exe وتقرير STIX الخاص به
يحتوي CaRT على ترويسة إلزامية تبدو على النحو التالي:
4s h Q 16s Q
CART<VERSION><RESERVED><ARC4KEY><OPT_HEADER_LEN>
في هذه الترويسة، تكون قيمة VERSION هي 1 وقيمة RESERVED هي 0. في معظم الحالات، يُخزَّن مفتاح RC4 المستخدم لفك تشفير الملف في الترويسة الإلزامية ويكون دائمًا هو نفسه (أول 8 أرقام من قيمة π مرتين). ومع ذلك، يتيح CaRT طريقة لاستبدال المفتاح، وتتمثل في تخزين بايتات صفرية في الترويسة الإلزامية. ستحتاج عندها إلى معرفة المفتاح لفك ترميز ملف CaRT.
الترويسة الاختيارية في CaRT هي كتلة RC4 بحجم OPT_HEADER_LEN بايت مشتقة من ترويسة مُسلسَلة بصيغة JSON
RC4(<JSON_SERIALIZED_OPTIONAL_HEADER>)
كتلة البيانات في CaRT تُعالَج أولاً بمكتبة ضغط البيانات zlib ثم تُشفر بـRC4
RC4(ZLIB(block encoded stream))
كما هو الحال في الترويسة الاختيارية، فإن التذييل الاختياري في CaRT هو كتلة RC4 بحجم OPT_FOOTER_LEN بايت مشتقة من تذييل مُسلسَل بصيغة JSON
RC4(<JSON_SERIALIZED_OPTIONAL_FOOTER>)
ينتهي ملف CaRT بتذييل إلزامي يتيح للصيغة قراءة التذييل وإرجاع قيم التجزئة دون الحاجة إلى قراءة الملف بالكامل:
4s QQ Q
TRAC<RESERVED><OPT_FOOTER_LEN>
بتركيب مدير الحزم pip، يمكنك الوصول إلى مكتبة CaRT وإلى CLI الخاص بـCaRT.
يمنح CLI الخاص بـCaRT الأولويات التالية لخياراته:
~/.cart/cart.cfgالخيارات التالية متاحة في CLI الخاص بـCaRT:
الاستخدام: cart [options] file1 file2 ... fileN
تُستخدم صيغة ملف CaRT لتخزين/نقل البرمجيات الخبيثة والبيانات الوصفية المرتبطة بها.
وهي تعطّل البرمجية الخبيثة بحيث لا يمكن تنفيذها وتشفرها لتجنب اكتشافها وحذفها بواسطة برامج مكافحة الفيروسات.
الوسائط الموضعية:
file
الخيارات:
-h, --help عرض رسالة المساعدة هذه والخروج
-v, --version عرض رقم إصدار البرنامج والخروج
-d, --delete حذف الملف الأصلي بعد نجاح العملية
-f, --force استبدال ملف الإخراج إذا كان موجودًا بالفعل
-i, --ignore تجاهل مفتاح RC4 من ملف الإعدادات
-j JSONMETA, --jsonmeta JSONMETA
توفير البيانات الوصفية للترويسة على هيئة كتلة JSON
-k KEY, --key KEY استخدام مفتاح RC4 خاص (مُرمَّز بترميز Base64). يجب توفير المفتاح نفسه لفك ترميز ملف CaRT.
-m, --meta الاحتفاظ بالبيانات الوصفية عند استخراج ملفات CaRT
-n FILENAME, --name FILENAME
استخدام هذه القيمة كاسم ملف للبيانات الوصفية
-o OUTFILE, --outfile OUTFILE
تعيين ملف الإخراج
-s, --showmeta عرض البيانات الوصفية للملف فقط
CaRT قادر على تحديد ما إذا كان الملف يحتاج إلى ترميز CaRT أو فك ترميزه.
لترميز ملف غير مُرمَّز بصيغة CaRT: cart file1
لفك ترميز ملف مُرمَّز بصيغة CaRT: cart file1
إنه الأمر نفسه!
يبدو ملف إعدادات CaRT على النحو التالي:
[global]
# rc4_key هو تمثيل Base64 لمفتاحك
rc4_key: AvUzYXNkZg==
# keep_meta يعادل الخيار -m في CLI
keep_meta: True
# force يعادل الخيار -f في CLI
force: True
# default_header هو زوج مفتاح/قيمة من البيانات يُضاف إلى الترويسة الاختيارية في ملف CaRT
[default_header]
poc: اسمك
poc_email: [email protected]
توجد تطبيقات لـCaRT بلغتي Rust وJava. يمكنك الوصول إليها من العناوين التالية: