Source code for cybox.common.tools

# Copyright (c) 2010, The MITRE Corporation. All rights reserved.
# See LICENSE.txt for complete terms.

from mixbox import entities, fields

import cybox
import cybox.bindings.cybox_common as common_binding
from cybox.common import (
    CompensationModel, Errors, ExecutionEnvironment, HashList, Metadata,
    StructuredText
)
from cybox.common.vocabs import VocabField, ToolType


class ToolSpecificDataFactory(entities.EntityFactory):
    @classmethod
    def entity_class(cls, key):
        return cybox.lookup_extension(key, default=ToolSpecificData)


[docs]class ToolSpecificData(entities.Entity): _binding = common_binding _binding_class = common_binding.ToolSpecificDataType _namespace = 'http://cybox.mitre.org/common-2' _XSI_TYPE = None # overridden by subclasses
[docs] def to_dict(self): d = super(ToolSpecificData, self).to_dict() if self._XSI_TYPE: d["xsi:type"] = self._XSI_TYPE return d
@staticmethod
[docs] def lookup_class(xsi_type): return cybox.lookup_extension(xsi_type, default=ToolSpecificData)
[docs]class ToolReference(entities.Entity): _binding = common_binding _binding_class = common_binding.ToolReferenceType _namespace = 'http://cybox.mitre.org/common-2' TERM_DOCUMENTATION = "Documentation" TERM_SOURCE = "Source" TERM_DOWNLOAD = "Download" TERM_EXECUTE = "Execute" TERM_OTHER = "Other" reference_type = fields.TypedField("reference_type") value = fields.TypedField("valueOf_", key_name="value")
[docs]class ToolReferences(entities.Entity): _binding = common_binding _binding_class = common_binding.ToolReferencesType _namespace = 'http://cybox.mitre.org/common-2' reference = fields.TypedField("Reference", ToolReference, multiple=True)
[docs]class ToolConfiguration(entities.Entity): _binding = common_binding _binding_class = common_binding.ToolConfigurationType _namespace = 'http://cybox.mitre.org/common-2' configuration_settings = fields.TypedField("Configuration_Settings") dependencies = fields.TypedField("Dependencies") usage_context_assumptions = fields.TypedField("Usage_Context_Assumptions") internationalization_settings = fields.TypedField("Internationalization_Settings") build_information = fields.TypedField("Build_Information")
[docs]class ToolInformation(entities.Entity): _binding = common_binding _binding_class = common_binding.ToolInformationType _namespace = 'http://cybox.mitre.org/common-2' id_ = fields.IdField("id") idref = fields.IdrefField("idref") name = fields.TypedField("Name") type_ = VocabField("Type", ToolType, multiple=True) description = fields.TypedField("Description", StructuredText) references = fields.TypedField("References", ToolReferences) vendor = fields.TypedField("Vendor") version = fields.TypedField("Version") service_pack = fields.TypedField("Service_Pack") tool_specific_data = fields.TypedField("Tool_Specific_Data", ToolSpecificData, factory=ToolSpecificDataFactory) tool_hashes = fields.TypedField("Tool_Hashes", HashList) tool_configuration = fields.TypedField("Tool_Configuration", ToolConfiguration) execution_environment = fields.TypedField("Execution_Environment", ExecutionEnvironment) errors = fields.TypedField("Errors", Errors) metadata = fields.TypedField("Metadata", Metadata, multiple=True) compensation_model = fields.TypedField("Compensation_Model", CompensationModel) def __init__(self, tool_name=None, tool_vendor=None): super(ToolInformation, self).__init__() self.name = tool_name self.vendor = tool_vendor
[docs]class ToolInformationList(entities.EntityList): _binding_class = common_binding.ToolsInformationType _namespace = 'http://cybox.mitre.org/common-2' tool = fields.TypedField("Tool", ToolInformation, multiple=True)