def version(self, version): typeChecker(type(self).__name__, version, str, "version") categoryChecker( type(self).__name__, version, ["3.0", "4.0", "4.1"], "version") if self.__versions is UNSETVALUE: self.__versions = Versions() self.__versions.layer = version
def layer(self, layer): typeChecker(type(self).__name__, layer, str, "layer") categoryChecker(type(self).__name__, layer, ["3.0", "4.0"], "layer version") if layer == '3.0': print('[NOTICE] - Forcibly upgrading version from {} to 4.0.'.format(layer)) layer = "4.0" self.__layer = layer
def domain(self, domain): typeChecker(type(self).__name__, domain, str, "domain") dom = domain if dom.startswith('mitre'): dom = dom.split('-')[-1] + '-attack' categoryChecker(type(self).__name__, dom, ["enterprise-attack", "mobile-attack"], "domain") self.__domain = domain
def platforms(self, platforms): typeCheckerArray(type(self).__name__, platforms, str, "platforms") self.__platforms = [] valids = ["Windows", "Linux", "macOS", "AWS", "GCP", "Azure", "Azure AD", "Office 365", "SaaS"] if self.domain == "mitre-mobile": valids = ['Android', 'iOS'] for entry in platforms: categoryChecker(type(self).__name__, entry, valids, "platforms") self.__platforms.append(entry)
def navigator(self, navigator): typeChecker(type(self).__name__, navigator, str, "navigator") try: categoryChecker( type(self).__name__, navigator, ["4.0", "4.1"], "navigator version") except BadInput: print( f'[WARNING] - unrecognized navigator version {navigator}. Defaulting to the 4.1 schema, ' f'this may result in unexpected behavior.') self.__navigator = navigator
def layer(self, layer): typeChecker(type(self).__name__, layer, str, "layer") try: categoryChecker( type(self).__name__, layer, ["3.0", "4.0", "4.1"], "layer version") except BadInput: print( f'[WARNING] - unrecognized layer version {layer}. Defaulting to the 4.1 schema, this may result in ' f'unexpected behavior.') if layer == '3.0': print( f'[NOTICE] - Forcibly upgrading version from {layer} to 4.1.') layer = "4.1" self.__layer = layer
def domain(self, domain): typeChecker(type(self).__name__, domain, str, "domain") categoryChecker( type(self).__name__, domain, ["mitre-enterprise", "mitre-mobile"], "domain") self.__domain = domain
def version(self, version): typeChecker(type(self).__name__, version, str, "version") categoryChecker(type(self).__name__, version, ["3.0"], "version") self.__version = version
def sorting(self, sorting): typeChecker(type(self).__name__, sorting, int, "sorting") categoryChecker(type(self).__name__, sorting, [0, 1, 2, 3], "sorting") self.__sorting = sorting
def stages(self, stage): typeCheckerArray(type(self).__name__, stage, str, "stage") categoryChecker( type(self).__name__, stage[0], ["act", "prepare"], "stages") self.__stages = stage
def layout(self, layout): typeChecker(type(self).__name__, layout, str, "layout") categoryChecker( type(self).__name__, layout, ["side", "flat", "mini"], "layout") self.__layout = layout
def navigator(self, navigator): typeChecker(type(self).__name__, navigator, str, "navigator") categoryChecker( type(self).__name__, navigator, ["4.0", "4.1"], "navigator version") self.__navigator = navigator