Source code for maec.bundle.object_history

# MAEC Object History Classes

# Copyright (c) 2018, The MITRE Corporation
# All rights reserved

[docs]class ObjectHistory(object):
[docs] @classmethod def build(cls, bundle): """Build the Object History for a Bundle""" cls.entries = [] # A list of the Objects in the Object History # Get the Objects that are not references objects = bundle.get_all_non_reference_objects() for object in objects: object_history_entry = ObjectHistoryEntry(object) # Find and set all Actions that operate on the Object if bundle.get_all_actions_on_object(object): object_history_entry.actions = bundle.get_all_actions_on_object(object) # Add the history entry to the list cls.entries.append(object_history_entry)
[docs]class ObjectHistoryEntry(object): def __init__(self, object = None): self.object = object self.actions = [] # A list of the Actions that operate on the Object self.behaviors = [] # A list of Behaviors that make use of the Object (through Actions?)
[docs] def get_action_names(self): """Return a list of the Actions that operated on the Object, via their names""" return [x.name.value for x in self.actions if x.name]
[docs] def get_action_context(self): """Return a list of the Actions that operated on the Object, via their names, along with the Association_Type used in the Action. """ context_list = [] for action in self.actions: if action.name: action_name = action.name.value else: action_name = None for associated_object in action.associated_objects: if associated_object.association_type: association_type = associated_object.association_type.value else: association_type = None if associated_object.id_ == self.object.id_ or associated_object.idref == self.object.id_: context_list.append((action_name, association_type)) return context_list