Я новичок в Weka и ничего не смог найти по своей проблеме.
Я использую Weka в своем проекте для классификации вредоносных программ. Я извлек несколько функций и теперь хочу классифицировать их на основе семейства вредоносных программ. На данный момент у меня есть 29 функций (file_created, regkey_written, dll_loaded, ... malware_family). Семейство вредоносных программ относится к типу «номинальное» и содержит 10 семейств вредоносных программ, которые я проанализировал.
В настоящее время я использую бинарный подход для всех других атрибутов, что означает, что я объявил функции с типом «числовой» и в виде данных «0» или «1», если вредоносная программа имеет функции для этого атрибута. Который тогда выглядит так:
{"sparse" : false,"weight" : 1.0,"values" : ["1","0","1","1","1","1","1","1","1","0","1","1","1","1","0","1","1","1","0","1","0","1","0","0","0","0","0","agent"]}
Подход работает отлично и уже дает хорошие результаты. Однако, поскольку вредоносные программы всегда имеют более чем одно значение для каждой функции, как показано ниже (не обращайте внимания на отступ):
"regkey_opened": [
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\crypt32",
"HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
],
"regkey_read": [
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\DisableImprovedZoneCheck",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\GRE_Initialize\\DisableMetaFiles",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Security_HKLM_only",
"HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\services\\crypt32\\DebugHeapFlags"
],
"dll_loaded": [
"MSVCP60.dll",
"user32.dll",
"kernel32.dll",
"VERSION.dll",
"wininet.dll",
"snmpapi.dll",
"DNSAPI.dll"
]
Я подумал, что мог бы сделать классификацию более точной, фактически используя значения функций, а не просто двоичный подход 'malware_has_feature = 1' и 'malware_does_not_have_feature = 0'.
Итак, вот мой вопрос: возможно ли использовать строку типа и присвоить ей несколько значений данных? Так, например, чтобы атрибут 'regkey_opened' был строковым типом вместо числового, и вместо получения двоичного значения 0 или 1, независимо от того, имеет ли он эту функцию или нет, я присваиваю фактические значения
"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\crypt32",
"HKEY_LOCAL_MACHINE\\Software\\Policies\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
к нему. Возможно ли это и как будет выглядеть пример кода json? Я знаю, что мог бы использовать для этого «номинальный» тип и назначить каждому значению функции атрибут, НО я анализирую более 8000 образцов вредоносных программ, и каждый образец может иметь до нескольких сотен значений.
Заранее спасибо, и если вам нужна дополнительная информация или если у вас есть вопросы, пожалуйста, дайте мне знать.
Образ вредоносной программы в качестве образца
Выдержка из используемого в настоящее время файла json с двоичным подходом