parent
bdd18be6c3
commit
67935d08fe
|
@ -0,0 +1,7 @@
|
||||||
|
[settings]
|
||||||
|
check=1
|
||||||
|
diff=1
|
||||||
|
known_third_party=dateutil,pytest,pytz,six
|
||||||
|
known_first_party=stix2
|
||||||
|
not_skip=__init__.py
|
||||||
|
force_sort_within_sections=1
|
|
@ -143,7 +143,7 @@ class _STIXBase(collections.Mapping):
|
||||||
return self.new_version(revoked=True)
|
return self.new_version(revoked=True)
|
||||||
|
|
||||||
|
|
||||||
class Observable(_STIXBase):
|
class _Observable(_STIXBase):
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
# the constructor might be called independently of an observed data object
|
# the constructor might be called independently of an observed data object
|
||||||
|
@ -151,10 +151,10 @@ class Observable(_STIXBase):
|
||||||
self._STIXBase__valid_refs = kwargs.pop('_valid_refs')
|
self._STIXBase__valid_refs = kwargs.pop('_valid_refs')
|
||||||
else:
|
else:
|
||||||
self._STIXBase__valid_refs = []
|
self._STIXBase__valid_refs = []
|
||||||
super(Observable, self).__init__(**kwargs)
|
super(_Observable, self).__init__(**kwargs)
|
||||||
|
|
||||||
def _check_property(self, prop_name, prop, kwargs):
|
def _check_property(self, prop_name, prop, kwargs):
|
||||||
super(Observable, self)._check_property(prop_name, prop, kwargs)
|
super(_Observable, self)._check_property(prop_name, prop, kwargs)
|
||||||
if prop_name.endswith('_ref') and prop_name in kwargs:
|
if prop_name.endswith('_ref') and prop_name in kwargs:
|
||||||
ref = kwargs[prop_name]
|
ref = kwargs[prop_name]
|
||||||
if ref not in self._STIXBase__valid_refs:
|
if ref not in self._STIXBase__valid_refs:
|
||||||
|
|
|
@ -5,7 +5,7 @@ embedded in Email Message objects, inherit from _STIXBase instead of Observable
|
||||||
and do not have a '_type' attribute.
|
and do not have a '_type' attribute.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .base import Observable, _STIXBase
|
from .base import _Observable, _STIXBase
|
||||||
from .properties import (BinaryProperty, BooleanProperty, DictionaryProperty,
|
from .properties import (BinaryProperty, BooleanProperty, DictionaryProperty,
|
||||||
EmbeddedObjectProperty, HashesProperty, HexProperty,
|
EmbeddedObjectProperty, HashesProperty, HexProperty,
|
||||||
IntegerProperty, ListProperty,
|
IntegerProperty, ListProperty,
|
||||||
|
@ -13,7 +13,7 @@ from .properties import (BinaryProperty, BooleanProperty, DictionaryProperty,
|
||||||
TimestampProperty, TypeProperty)
|
TimestampProperty, TypeProperty)
|
||||||
|
|
||||||
|
|
||||||
class Artifact(Observable):
|
class Artifact(_Observable):
|
||||||
_type = 'artifact'
|
_type = 'artifact'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -24,7 +24,7 @@ class Artifact(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class AutonomousSystem(Observable):
|
class AutonomousSystem(_Observable):
|
||||||
_type = 'autonomous-system'
|
_type = 'autonomous-system'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -34,7 +34,7 @@ class AutonomousSystem(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Directory(Observable):
|
class Directory(_Observable):
|
||||||
_type = 'directory'
|
_type = 'directory'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -48,7 +48,7 @@ class Directory(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class DomainName(Observable):
|
class DomainName(_Observable):
|
||||||
_type = 'domain-name'
|
_type = 'domain-name'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -57,7 +57,7 @@ class DomainName(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class EmailAddress(Observable):
|
class EmailAddress(_Observable):
|
||||||
_type = 'email-address'
|
_type = 'email-address'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -76,7 +76,7 @@ class EmailMIMEComponent(_STIXBase):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class EmailMessage(Observable):
|
class EmailMessage(_Observable):
|
||||||
_type = 'email-message'
|
_type = 'email-message'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -97,7 +97,7 @@ class EmailMessage(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class File(Observable):
|
class File(_Observable):
|
||||||
_type = 'file'
|
_type = 'file'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -121,7 +121,7 @@ class File(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class IPv4Address(Observable):
|
class IPv4Address(_Observable):
|
||||||
_type = 'ipv4-addr'
|
_type = 'ipv4-addr'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -131,7 +131,7 @@ class IPv4Address(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class IPv6Address(Observable):
|
class IPv6Address(_Observable):
|
||||||
_type = 'ipv6-addr'
|
_type = 'ipv6-addr'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -141,7 +141,7 @@ class IPv6Address(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class MACAddress(Observable):
|
class MACAddress(_Observable):
|
||||||
_type = 'mac-addr'
|
_type = 'mac-addr'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -149,7 +149,7 @@ class MACAddress(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Mutex(Observable):
|
class Mutex(_Observable):
|
||||||
_type = 'mutex'
|
_type = 'mutex'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -157,7 +157,7 @@ class Mutex(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class NetworkTraffic(Observable):
|
class NetworkTraffic(_Observable):
|
||||||
_type = 'network-traffic'
|
_type = 'network-traffic'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -182,7 +182,7 @@ class NetworkTraffic(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Process(Observable):
|
class Process(_Observable):
|
||||||
_type = 'process'
|
_type = 'process'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -204,7 +204,7 @@ class Process(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Software(Observable):
|
class Software(_Observable):
|
||||||
_type = 'software'
|
_type = 'software'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -216,7 +216,7 @@ class Software(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class URL(Observable):
|
class URL(_Observable):
|
||||||
_type = 'url'
|
_type = 'url'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -224,7 +224,7 @@ class URL(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class UserAccount(Observable):
|
class UserAccount(_Observable):
|
||||||
_type = 'user-account'
|
_type = 'user-account'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -254,7 +254,7 @@ class WindowsRegistryValueType(_STIXBase):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class WindowsRegistryKey(Observable):
|
class WindowsRegistryKey(_Observable):
|
||||||
_type = 'windows-registry-key'
|
_type = 'windows-registry-key'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
@ -267,7 +267,7 @@ class WindowsRegistryKey(Observable):
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class X509Certificate(Observable):
|
class X509Certificate(_Observable):
|
||||||
_type = 'x509-certificate'
|
_type = 'x509-certificate'
|
||||||
_properties = {
|
_properties = {
|
||||||
'type': TypeProperty(_type),
|
'type': TypeProperty(_type),
|
||||||
|
|
|
@ -5,10 +5,12 @@ import datetime as dt
|
||||||
import inspect
|
import inspect
|
||||||
import re
|
import re
|
||||||
import uuid
|
import uuid
|
||||||
from six import text_type
|
|
||||||
import pytz
|
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
from .base import Observable, _STIXBase
|
import pytz
|
||||||
|
from six import text_type
|
||||||
|
|
||||||
|
from .base import _Observable, _STIXBase
|
||||||
from .exceptions import DictionaryKeyError
|
from .exceptions import DictionaryKeyError
|
||||||
|
|
||||||
|
|
||||||
|
@ -226,7 +228,7 @@ class ObservableProperty(Property):
|
||||||
from .__init__ import parse_observable # avoid circular import
|
from .__init__ import parse_observable # avoid circular import
|
||||||
for key, obj in dictified.items():
|
for key, obj in dictified.items():
|
||||||
parsed_obj = parse_observable(obj, dictified.keys())
|
parsed_obj = parse_observable(obj, dictified.keys())
|
||||||
if not issubclass(type(parsed_obj), Observable):
|
if not issubclass(type(parsed_obj), _Observable):
|
||||||
raise ValueError("Objects in an observable property must be "
|
raise ValueError("Objects in an observable property must be "
|
||||||
"Cyber Observable Objects")
|
"Cyber Observable Objects")
|
||||||
dictified[key] = parsed_obj
|
dictified[key] = parsed_obj
|
||||||
|
|
|
@ -4,8 +4,8 @@ from .base import _STIXBase
|
||||||
from .common import COMMON_PROPERTIES
|
from .common import COMMON_PROPERTIES
|
||||||
from .other import KillChainPhase
|
from .other import KillChainPhase
|
||||||
from .properties import (IDProperty, IntegerProperty, ListProperty,
|
from .properties import (IDProperty, IntegerProperty, ListProperty,
|
||||||
ObservableProperty, ReferenceProperty,
|
ObservableProperty, ReferenceProperty, StringProperty,
|
||||||
StringProperty, TimestampProperty, TypeProperty)
|
TimestampProperty, TypeProperty)
|
||||||
from .utils import NOW
|
from .utils import NOW
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import pytz
|
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
|
import pytz
|
||||||
|
|
||||||
# Sentinel value for fields that should be set to the current time.
|
# Sentinel value for fields that should be set to the current time.
|
||||||
# We can't use the standard 'default' approach, since if there are multiple
|
# We can't use the standard 'default' approach, since if there are multiple
|
||||||
|
|
Loading…
Reference in New Issue