Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit c7f037b

Browse files
author
Samuel Hassine
committed
[client] Fix import relationship creating reports
1 parent 3eb0c0c commit c7f037b

File tree

1 file changed

+42
-41
lines changed

1 file changed

+42
-41
lines changed

pycti/utils/opencti_stix2.py

Lines changed: 42 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,7 @@ def export_stix_relation(self, entity):
981981
stix_relation[CustomProperties.ID] = entity['id']
982982
return self.prepare_export(entity, stix_relation)
983983

984-
def import_relationship(self, stix_relation, update=False):
984+
def import_relationship(self, stix_relation, update=False, types=None):
985985
# Check relation
986986
stix_relation_result = self.opencti.get_stix_relation_by_stix_id_key(stix_relation['id'])
987987
if stix_relation_result is not None:
@@ -1087,48 +1087,49 @@ def import_relationship(self, stix_relation, update=False):
10871087

10881088
# Add a corresponding report
10891089
# Extract date
1090-
if 'description' in external_reference:
1091-
matches = list(datefinder.find_dates(external_reference['description']))
1092-
else:
1093-
matches = list(datefinder.find_dates(source_name))
1094-
if len(matches) > 0:
1095-
published = matches[0].strftime('%Y-%m-%dT%H:%M:%SZ')
1096-
else:
1097-
published = datetime.datetime.today().strftime('%Y-%m-%dT%H:%M:%SZ')
1098-
1099-
title = source_name
1100-
if 'external_id' in external_reference:
1101-
title = title + ' (' + external_reference['external_id'] + ')'
1102-
report_id = self.opencti.create_report_if_not_exists_from_external_reference(
1103-
external_reference_id,
1104-
title,
1105-
external_reference['description'] if 'description' in external_reference else None,
1106-
published,
1107-
'Threat Report',
1108-
2
1109-
)['id']
1110-
1111-
# Resolve author
1112-
author_id = self.resolve_author(title)
1113-
if author_id is not None:
1114-
self.opencti.update_stix_domain_entity_created_by_ref(report_id, author_id)
1115-
1116-
# Add marking
1117-
if 'marking_tlpwhite' in self.mapping_cache:
1118-
object_marking_ref_result = self.mapping_cache['marking_tlpwhite']
1119-
else:
1120-
object_marking_ref_result = self.opencti.get_marking_definition_by_definition('TLP', 'TLP:WHITE')
1121-
if object_marking_ref_result is not None:
1122-
self.mapping_cache['marking_tlpwhite'] = {'id': object_marking_ref_result['id']}
1123-
self.opencti.add_marking_definition_if_not_exists(report_id, object_marking_ref_result['id'])
1090+
if types is None or 'report' in types:
1091+
if 'description' in external_reference:
1092+
matches = list(datefinder.find_dates(external_reference['description']))
1093+
else:
1094+
matches = list(datefinder.find_dates(source_name))
1095+
if len(matches) > 0:
1096+
published = matches[0].strftime('%Y-%m-%dT%H:%M:%SZ')
1097+
else:
1098+
published = datetime.datetime.today().strftime('%Y-%m-%dT%H:%M:%SZ')
1099+
1100+
title = source_name
1101+
if 'external_id' in external_reference:
1102+
title = title + ' (' + external_reference['external_id'] + ')'
1103+
report_id = self.opencti.create_report_if_not_exists_from_external_reference(
1104+
external_reference_id,
1105+
title,
1106+
external_reference['description'] if 'description' in external_reference else None,
1107+
published,
1108+
'Threat Report',
1109+
2
1110+
)['id']
1111+
1112+
# Resolve author
1113+
author_id = self.resolve_author(title)
1114+
if author_id is not None:
1115+
self.opencti.update_stix_domain_entity_created_by_ref(report_id, author_id)
11241116

1125-
# Add external reference to report
1126-
self.opencti.add_external_reference_if_not_exists(report_id, external_reference_id)
1117+
# Add marking
1118+
if 'marking_tlpwhite' in self.mapping_cache:
1119+
object_marking_ref_result = self.mapping_cache['marking_tlpwhite']
1120+
else:
1121+
object_marking_ref_result = self.opencti.get_marking_definition_by_definition('TLP', 'TLP:WHITE')
1122+
if object_marking_ref_result is not None:
1123+
self.mapping_cache['marking_tlpwhite'] = {'id': object_marking_ref_result['id']}
1124+
self.opencti.add_marking_definition_if_not_exists(report_id, object_marking_ref_result['id'])
1125+
1126+
# Add external reference to report
1127+
self.opencti.add_external_reference_if_not_exists(report_id, external_reference_id)
11271128

1128-
# Add refs to report
1129-
self.opencti.add_object_ref_to_report_if_not_exists(report_id, source_id)
1130-
self.opencti.add_object_ref_to_report_if_not_exists(report_id, target_id)
1131-
self.opencti.add_object_ref_to_report_if_not_exists(report_id, stix_relation_result_id)
1129+
# Add refs to report
1130+
self.opencti.add_object_ref_to_report_if_not_exists(report_id, source_id)
1131+
self.opencti.add_object_ref_to_report_if_not_exists(report_id, target_id)
1132+
self.opencti.add_object_ref_to_report_if_not_exists(report_id, stix_relation_result_id)
11321133

11331134
def resolve_author(self, title):
11341135
if 'fireeye' in title.lower() or 'mandiant' in title.lower():

0 commit comments

Comments
 (0)