Add Workbench wrapper functions

stix2.0
Chris Lenk 2017-11-29 14:12:54 -05:00
parent aeff8f4bc0
commit b2613ca62c
2 changed files with 59 additions and 0 deletions

View File

@ -137,3 +137,34 @@ def test_workbench_get_all_vulnerabilities():
resp = vulnerabilities()
assert len(resp) == 1
assert resp[0].id == VULNERABILITY_ID
def test_workbench_relationships():
rel = stix2.Relationship(INDICATOR_ID, 'indicates', MALWARE_ID)
add(rel)
ind = get(INDICATOR_ID)
resp = ind.relationships()
assert len(resp) == 1
assert resp[0].relationship_type == 'indicates'
assert resp[0].source_ref == INDICATOR_ID
assert resp[0].target_ref == MALWARE_ID
def test_workbench_created_by():
intset = stix2.IntrusionSet(name="Breach 123", created_by_ref=IDENTITY_ID)
add(intset)
creator = intset.created_by()
assert creator.id == IDENTITY_ID
def test_workbench_related():
rel1 = stix2.Relationship(MALWARE_ID, 'targets', IDENTITY_ID)
rel2 = stix2.Relationship(CAMPAIGN_ID, 'uses', MALWARE_ID)
add([rel1, rel2])
resp = get(MALWARE_ID).related()
assert len(resp) == 3
assert any(x['id'] == CAMPAIGN_ID for x in resp)
assert any(x['id'] == INDICATOR_ID for x in resp)
assert any(x['id'] == IDENTITY_ID for x in resp)

View File

@ -1,6 +1,9 @@
"""Functions and class wrappers for interacting with STIX data at a high level.
"""
from . import (AttackPattern, Campaign, CourseOfAction, CustomObject, Identity,
Indicator, IntrusionSet, Malware, ObservedData, Report,
ThreatActor, Tool, Vulnerability)
from .environment import Environment
from .sources.filters import Filter
from .sources.memory import MemoryStore
@ -21,6 +24,31 @@ parse = _environ.parse
add_data_source = _environ.source.add_data_source
# Wrap SDOs with helper functions
def created_by_wrapper(self, *args, **kwargs):
return _environ.creator_of(self, *args, **kwargs)
def relationships_wrapper(self, *args, **kwargs):
return _environ.relationships(self, *args, **kwargs)
def related_wrapper(self, *args, **kwargs):
return _environ.related_to(self, *args, **kwargs)
STIX_OBJS = [AttackPattern, Campaign, CourseOfAction, CustomObject, Identity,
Indicator, IntrusionSet, Malware, ObservedData, Report,
ThreatActor, Tool, Vulnerability]
for obj_type in STIX_OBJS:
obj_type.created_by = created_by_wrapper
obj_type.relationships = relationships_wrapper
obj_type.related = related_wrapper
# Functions to get all objects of a specific type