mirror of
https://github.com/mandiant/capa.git
synced 2026-01-09 11:45:20 -08:00
changes for upstream
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from PyQt5 import QtCore, QtGui, Qt
|
||||
from collections import deque
|
||||
|
||||
import capa.render.utils as rutils
|
||||
|
||||
import idaapi
|
||||
import idc
|
||||
|
||||
@@ -296,25 +298,6 @@ class CapaExplorerDataModel(QtCore.QAbstractItemModel):
|
||||
|
||||
return item.childCount()
|
||||
|
||||
def capa_capability_rules(self, doc):
|
||||
""" enumerate the rules in (namespace, name) order that are 'capability'
|
||||
rules (not lib/subscope/disposition/etc) """
|
||||
for (_, _, rule) in sorted(
|
||||
map(lambda rule: (rule['meta']['namespace'], rule['meta']['name'], rule), doc.values())):
|
||||
if rule['meta'].get('lib'):
|
||||
continue
|
||||
if rule['meta'].get('capa/subscope'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion-ov'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category-ov'):
|
||||
continue
|
||||
yield rule
|
||||
|
||||
def render_capa_doc_statement_node(self, parent, statement, doc):
|
||||
""" render capa statement read from doc
|
||||
|
||||
@@ -410,7 +393,7 @@ class CapaExplorerDataModel(QtCore.QAbstractItemModel):
|
||||
"""
|
||||
self.beginResetModel()
|
||||
|
||||
for rule in self.capa_capability_rules(doc):
|
||||
for rule in rutils.capability_rules(doc):
|
||||
parent = CapaExplorerRuleItem(self.root_node, rule['meta']['name'], len(rule['matches']), rule['source'])
|
||||
|
||||
for (location, match) in doc[rule['meta']['name']]['matches'].items():
|
||||
|
||||
@@ -14,6 +14,7 @@ import capa.main
|
||||
import capa.rules
|
||||
import capa.features.extractors.ida
|
||||
import capa.ida.helpers
|
||||
import capa.render.utils as rutils
|
||||
|
||||
from capa.ida.explorer.view import CapaExplorerQtreeView
|
||||
from capa.ida.explorer.model import CapaExplorerDataModel
|
||||
@@ -381,41 +382,11 @@ class CapaExplorerForm(idaapi.PluginForm):
|
||||
|
||||
logger.info('render views completed.')
|
||||
|
||||
def capa_capability_rules(self, doc):
|
||||
""" """
|
||||
for (_, _, rule) in sorted(
|
||||
map(lambda rule: (rule['meta']['namespace'], rule['meta']['name'], rule), doc.values())):
|
||||
if rule['meta'].get('lib'):
|
||||
continue
|
||||
if rule['meta'].get('capa/subscope'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion-ov'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category-ov'):
|
||||
continue
|
||||
yield rule
|
||||
|
||||
def render_capa_doc_summary(self, doc):
|
||||
""" """
|
||||
for (row, rule) in enumerate(self.capa_capability_rules(doc)):
|
||||
if rule['meta'].get('lib'):
|
||||
continue
|
||||
if rule['meta'].get('capa/subscope'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion'):
|
||||
continue
|
||||
if rule['meta'].get('maec/analysis-conclusion-ov'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category'):
|
||||
continue
|
||||
if rule['meta'].get('maec/malware-category-ov'):
|
||||
continue
|
||||
|
||||
for (row, rule) in enumerate(rutils.capability_rules(doc)):
|
||||
count = len(rule['matches'])
|
||||
|
||||
if count == 1:
|
||||
capability = rule['meta']['name']
|
||||
else:
|
||||
@@ -432,7 +403,7 @@ class CapaExplorerForm(idaapi.PluginForm):
|
||||
def render_capa_doc_mitre_summary(self, doc):
|
||||
""" """
|
||||
tactics = collections.defaultdict(set)
|
||||
for rule in self.capa_capability_rules(doc):
|
||||
for rule in rutils.capability_rules(doc):
|
||||
if not rule['meta'].get('att&ck'):
|
||||
continue
|
||||
|
||||
|
||||
Reference in New Issue
Block a user