один атрибут несколько значений - PullRequest
0 голосов
/ 11 марта 2019

Я новичок в 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 с двоичным подходом

...