{
"name": "Foo",
"data": "qwerty",
"data_type": "REG_SZ"
}
Traceback (most recent call last):
File "sandbox_to_stix.py", line 341, in <module>
test_key()
File "sandbox_to_stix.py", line 294, in test_key
print(w)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/stix2/base.py", line 206, in __str__
return self.serialize(pretty=True)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/stix2/base.py", line 284, in serialize
return json.dumps(self, cls=STIXJSONEncoder, **kwargs)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/__init__.py", line 399, in dumps
**kw).encode(obj)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 298, in encode
chunks = list(chunks)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 717, in _iterencode
for chunk in _iterencode(o, _current_indent_level):
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 696, in _iterencode
for chunk in _iterencode_dict(o, _current_indent_level):
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 652, in _iterencode_dict
for chunk in chunks:
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 531, in _iterencode_list
for chunk in chunks:
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 717, in _iterencode
for chunk in _iterencode(o, _current_indent_level):
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 696, in _iterencode
for chunk in _iterencode_dict(o, _current_indent_level):
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/simplejson/encoder.py", line 602, in _iterencode_dict
items.sort(key=_item_sort_key)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/stix2/base.py", line 277, in sort_by
return find_property_index(self, *element)
File "/home/timngo/venvs/stix/lib/python3.6/site-packages/stix2/utils.py", line 240, in find_property_index
idx = _find_property_in_seq(obj.values(), search_key, search_value)
TypeError: 'list' object is not callable
I noticed that commenting out the values() getter function in stix2/v21/observables.py will get the print working but then the assert fails since there is no getter
class WindowsRegistryKey(_Observable):
# TODO: Add link
"""For more detailed information on this object's properties, see
`the STIX 2.1 specification <link here>`__.
"""
_type = 'windows-registry-key'
_properties = OrderedDict([
('type', TypeProperty(_type)),
('key', StringProperty()),
('values', ListProperty(EmbeddedObjectProperty(type=WindowsRegistryValueType))),
# this is not the modified timestamps of the object itself
('modified', TimestampProperty()),
('creator_user_ref', ObjectReferenceProperty(valid_types='user-account')),
('number_of_subkeys', IntegerProperty()),
('extensions', ExtensionsProperty(spec_version='2.1', enclosing_type=_type)),
])
#@property
#def values(self):
# Needed because 'values' is a property on collections.Mapping objects
# return self._inner['values']
New Output
{
"name": "Foo",
"data": "qwerty",
"data_type": "REG_SZ"
}
{
"type": "windows-registry-key",
"key": "hkey_local_machine\\system\\bar\\foo",
"values": [
{
"name": "Foo",
"data": "qwerty",
"data_type": "REG_SZ"
}
]
}
Traceback (most recent call last):
File "sandbox_to_stix.py", line 341, in <module>
test_key()
File "sandbox_to_stix.py", line 296, in test_key
assert w.values[0].name == "Foo"
TypeError: 'method' object is not subscriptable
Thank you for the bug report, @timngo1. This is because the values property of windows-registry-key is the same name as the method for getting the values of all the object's properties. We're working on a fix.
I am not sure if I am doing something wrong but trying to print a WindowsRegistryKey object always fails, even when using the provided example.
Output
I noticed that commenting out the values() getter function in stix2/v21/observables.py will get the print working but then the assert fails since there is no getter
New Output