pycti 6.3.13__py3-none-any.whl → 6.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pycti might be problematic. Click here for more details.
- pycti/__init__.py +1 -1
- pycti/api/opencti_api_client.py +31 -0
- pycti/connector/opencti_connector_helper.py +35 -8
- pycti/entities/indicator/opencti_indicator_properties.py +8 -0
- pycti/entities/opencti_attack_pattern.py +6 -2
- pycti/entities/opencti_campaign.py +4 -0
- pycti/entities/opencti_case_incident.py +4 -0
- pycti/entities/opencti_case_rfi.py +4 -0
- pycti/entities/opencti_case_rft.py +4 -0
- pycti/entities/opencti_channel.py +4 -0
- pycti/entities/opencti_course_of_action.py +5 -2
- pycti/entities/opencti_data_component.py +4 -0
- pycti/entities/opencti_data_source.py +4 -0
- pycti/entities/opencti_event.py +4 -0
- pycti/entities/opencti_external_reference.py +6 -0
- pycti/entities/opencti_feedback.py +4 -0
- pycti/entities/opencti_grouping.py +9 -2
- pycti/entities/opencti_identity.py +5 -2
- pycti/entities/opencti_incident.py +4 -0
- pycti/entities/opencti_indicator.py +4 -0
- pycti/entities/opencti_infrastructure.py +4 -0
- pycti/entities/opencti_intrusion_set.py +4 -0
- pycti/entities/opencti_kill_chain_phase.py +4 -0
- pycti/entities/opencti_language.py +4 -0
- pycti/entities/opencti_location.py +22 -4
- pycti/entities/opencti_malware.py +4 -0
- pycti/entities/opencti_malware_analysis.py +10 -2
- pycti/entities/opencti_marking_definition.py +6 -0
- pycti/entities/opencti_narrative.py +4 -0
- pycti/entities/opencti_note.py +12 -4
- pycti/entities/opencti_observed_data.py +4 -0
- pycti/entities/opencti_opinion.py +19 -3
- pycti/entities/opencti_report.py +4 -0
- pycti/entities/opencti_stix_core_relationship.py +22 -0
- pycti/entities/opencti_stix_sighting_relationship.py +28 -5
- pycti/entities/opencti_task.py +5 -2
- pycti/entities/opencti_threat_actor.py +10 -3
- pycti/entities/opencti_threat_actor_group.py +4 -0
- pycti/entities/opencti_threat_actor_individual.py +4 -0
- pycti/entities/opencti_tool.py +4 -0
- pycti/entities/opencti_vocabulary.py +15 -0
- pycti/entities/opencti_vulnerability.py +4 -0
- pycti/utils/opencti_stix2.py +75 -50
- {pycti-6.3.13.dist-info → pycti-6.4.1.dist-info}/METADATA +5 -5
- pycti-6.4.1.dist-info/RECORD +74 -0
- {pycti-6.3.13.dist-info → pycti-6.4.1.dist-info}/WHEEL +1 -1
- pycti-6.3.13.dist-info/RECORD +0 -74
- {pycti-6.3.13.dist-info → pycti-6.4.1.dist-info}/LICENSE +0 -0
- {pycti-6.3.13.dist-info → pycti-6.4.1.dist-info}/top_level.txt +0 -0
|
@@ -336,6 +336,7 @@ class StixCoreRelationship:
|
|
|
336
336
|
start_time = start_time.isoformat()
|
|
337
337
|
if isinstance(stop_time, datetime.datetime):
|
|
338
338
|
stop_time = stop_time.isoformat()
|
|
339
|
+
|
|
339
340
|
if start_time is not None and stop_time is not None:
|
|
340
341
|
data = {
|
|
341
342
|
"relationship_type": relationship_type,
|
|
@@ -376,6 +377,16 @@ class StixCoreRelationship:
|
|
|
376
377
|
:return List of stix_core_relationship objects
|
|
377
378
|
"""
|
|
378
379
|
|
|
380
|
+
@staticmethod
|
|
381
|
+
def generate_id_from_data(data):
|
|
382
|
+
return StixCoreRelationship.generate_id(
|
|
383
|
+
data["relationship_type"],
|
|
384
|
+
data["source_ref"],
|
|
385
|
+
data["target_ref"],
|
|
386
|
+
data.get("start_time"),
|
|
387
|
+
data.get("stop_time"),
|
|
388
|
+
)
|
|
389
|
+
|
|
379
390
|
def list(self, **kwargs):
|
|
380
391
|
from_or_to_id = kwargs.get("fromOrToId", None)
|
|
381
392
|
element_with_target_types = kwargs.get("elementWithTargetTypes", None)
|
|
@@ -599,6 +610,7 @@ class StixCoreRelationship:
|
|
|
599
610
|
kill_chain_phases = kwargs.get("killChainPhases", None)
|
|
600
611
|
granted_refs = kwargs.get("objectOrganization", None)
|
|
601
612
|
x_opencti_workflow_id = kwargs.get("x_opencti_workflow_id", None)
|
|
613
|
+
x_opencti_stix_ids = kwargs.get("x_opencti_stix_ids", None)
|
|
602
614
|
update = kwargs.get("update", False)
|
|
603
615
|
|
|
604
616
|
self.opencti.app_logger.info(
|
|
@@ -642,6 +654,7 @@ class StixCoreRelationship:
|
|
|
642
654
|
"externalReferences": external_references,
|
|
643
655
|
"killChainPhases": kill_chain_phases,
|
|
644
656
|
"x_opencti_workflow_id": x_opencti_workflow_id,
|
|
657
|
+
"x_opencti_stix_ids": x_opencti_stix_ids,
|
|
645
658
|
"update": update,
|
|
646
659
|
}
|
|
647
660
|
},
|
|
@@ -1132,6 +1145,10 @@ class StixCoreRelationship:
|
|
|
1132
1145
|
default_date = kwargs.get("defaultDate", False)
|
|
1133
1146
|
if stix_relation is not None:
|
|
1134
1147
|
# Search in extensions
|
|
1148
|
+
if "x_opencti_stix_ids" not in stix_relation:
|
|
1149
|
+
stix_relation["x_opencti_stix_ids"] = (
|
|
1150
|
+
self.opencti.get_attribute_in_extension("stix_ids", stix_relation)
|
|
1151
|
+
)
|
|
1135
1152
|
if "x_opencti_granted_refs" not in stix_relation:
|
|
1136
1153
|
stix_relation["x_opencti_granted_refs"] = (
|
|
1137
1154
|
self.opencti.get_attribute_in_extension(
|
|
@@ -1213,6 +1230,11 @@ class StixCoreRelationship:
|
|
|
1213
1230
|
if "x_opencti_workflow_id" in stix_relation
|
|
1214
1231
|
else None
|
|
1215
1232
|
),
|
|
1233
|
+
x_opencti_stix_ids=(
|
|
1234
|
+
stix_relation["x_opencti_stix_ids"]
|
|
1235
|
+
if "x_opencti_stix_ids" in stix_relation
|
|
1236
|
+
else None
|
|
1237
|
+
),
|
|
1216
1238
|
update=update,
|
|
1217
1239
|
)
|
|
1218
1240
|
else:
|
|
@@ -262,7 +262,12 @@ class StixSightingRelationship:
|
|
|
262
262
|
"""
|
|
263
263
|
|
|
264
264
|
@staticmethod
|
|
265
|
-
def generate_id(
|
|
265
|
+
def generate_id(
|
|
266
|
+
sighting_of_ref,
|
|
267
|
+
where_sighted_refs,
|
|
268
|
+
first_seen=None,
|
|
269
|
+
last_seen=None,
|
|
270
|
+
):
|
|
266
271
|
if isinstance(first_seen, datetime.datetime):
|
|
267
272
|
first_seen = first_seen.isoformat()
|
|
268
273
|
if isinstance(last_seen, datetime.datetime):
|
|
@@ -270,20 +275,38 @@ class StixSightingRelationship:
|
|
|
270
275
|
|
|
271
276
|
if first_seen is not None and last_seen is not None:
|
|
272
277
|
data = {
|
|
273
|
-
"
|
|
274
|
-
"
|
|
278
|
+
"type": "sighting",
|
|
279
|
+
"sighting_of_ref": sighting_of_ref,
|
|
280
|
+
"where_sighted_refs": where_sighted_refs,
|
|
275
281
|
"first_seen": first_seen,
|
|
276
282
|
"last_seen": last_seen,
|
|
277
283
|
}
|
|
284
|
+
elif first_seen is not None:
|
|
285
|
+
data = {
|
|
286
|
+
"type": "sighting",
|
|
287
|
+
"sighting_of_ref": sighting_of_ref,
|
|
288
|
+
"where_sighted_refs": where_sighted_refs,
|
|
289
|
+
"first_seen": first_seen,
|
|
290
|
+
}
|
|
278
291
|
else:
|
|
279
292
|
data = {
|
|
280
|
-
"
|
|
281
|
-
"
|
|
293
|
+
"type": "sighting",
|
|
294
|
+
"sighting_of_ref": sighting_of_ref,
|
|
295
|
+
"where_sighted_refs": where_sighted_refs,
|
|
282
296
|
}
|
|
283
297
|
data = canonicalize(data, utf8=False)
|
|
284
298
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
285
299
|
return "sighting--" + id
|
|
286
300
|
|
|
301
|
+
@staticmethod
|
|
302
|
+
def generate_id_from_data(data):
|
|
303
|
+
return StixSightingRelationship.generate_id(
|
|
304
|
+
data["sighting_of_ref"],
|
|
305
|
+
data["where_sighted_refs"],
|
|
306
|
+
data.get("first_seen"),
|
|
307
|
+
data.get("last_seen"),
|
|
308
|
+
)
|
|
309
|
+
|
|
287
310
|
"""
|
|
288
311
|
List stix_sightings objects
|
|
289
312
|
|
pycti/entities/opencti_task.py
CHANGED
|
@@ -226,14 +226,17 @@ class Task:
|
|
|
226
226
|
|
|
227
227
|
@staticmethod
|
|
228
228
|
def generate_id(name, created):
|
|
229
|
-
name = name.lower().strip()
|
|
230
229
|
if isinstance(created, datetime.datetime):
|
|
231
230
|
created = created.isoformat()
|
|
232
|
-
data = {"name": name, "created": created}
|
|
231
|
+
data = {"name": name.lower().strip(), "created": created}
|
|
233
232
|
data = canonicalize(data, utf8=False)
|
|
234
233
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
235
234
|
return "task--" + id
|
|
236
235
|
|
|
236
|
+
@staticmethod
|
|
237
|
+
def generate_id_from_data(data):
|
|
238
|
+
return Task.generate_id(data["name"], data["created"])
|
|
239
|
+
|
|
237
240
|
"""
|
|
238
241
|
List Task objects
|
|
239
242
|
|
|
@@ -142,13 +142,20 @@ class ThreatActor:
|
|
|
142
142
|
"""
|
|
143
143
|
|
|
144
144
|
@staticmethod
|
|
145
|
-
def generate_id(name):
|
|
146
|
-
|
|
147
|
-
data = {"name": name}
|
|
145
|
+
def generate_id(name, opencti_type):
|
|
146
|
+
data = {"name": name.lower().strip(), "opencti_type": opencti_type}
|
|
148
147
|
data = canonicalize(data, utf8=False)
|
|
149
148
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
150
149
|
return "threat-actor--" + id
|
|
151
150
|
|
|
151
|
+
def generate_id_from_data(self, data):
|
|
152
|
+
data_type = "Threat-Actor-Group"
|
|
153
|
+
if "x_opencti_type" in data:
|
|
154
|
+
data_type = data["x_opencti_type"]
|
|
155
|
+
elif self.opencti.get_attribute_in_extension("type", data) is not None:
|
|
156
|
+
data_type = self.opencti.get_attribute_in_extension("type", data)
|
|
157
|
+
return ThreatActor.generate_id(data["name"], data_type)
|
|
158
|
+
|
|
152
159
|
def list(self, **kwargs) -> dict:
|
|
153
160
|
"""List Threat-Actor objects
|
|
154
161
|
|
|
@@ -145,6 +145,10 @@ class ThreatActorGroup:
|
|
|
145
145
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
146
146
|
return "threat-actor--" + id
|
|
147
147
|
|
|
148
|
+
@staticmethod
|
|
149
|
+
def generate_id_from_data(data):
|
|
150
|
+
return ThreatActorGroup.generate_id(data["name"])
|
|
151
|
+
|
|
148
152
|
def list(self, **kwargs) -> dict:
|
|
149
153
|
"""List Threat-Actor-Group objects
|
|
150
154
|
|
|
@@ -145,6 +145,10 @@ class ThreatActorIndividual:
|
|
|
145
145
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
146
146
|
return "threat-actor--" + id
|
|
147
147
|
|
|
148
|
+
@staticmethod
|
|
149
|
+
def generate_id_from_data(data):
|
|
150
|
+
return ThreatActorIndividual.generate_id(data["name"])
|
|
151
|
+
|
|
148
152
|
def list(self, **kwargs) -> dict:
|
|
149
153
|
"""List Threat-Actor-Individual objects
|
|
150
154
|
|
pycti/entities/opencti_tool.py
CHANGED
|
@@ -134,6 +134,10 @@ class Tool:
|
|
|
134
134
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
135
135
|
return "tool--" + id
|
|
136
136
|
|
|
137
|
+
@staticmethod
|
|
138
|
+
def generate_id_from_data(data):
|
|
139
|
+
return Tool.generate_id(data["name"])
|
|
140
|
+
|
|
137
141
|
"""
|
|
138
142
|
List Tool objects
|
|
139
143
|
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import uuid
|
|
3
|
+
|
|
4
|
+
from stix2.canonicalization.Canonicalize import canonicalize
|
|
2
5
|
|
|
3
6
|
|
|
4
7
|
class Vocabulary:
|
|
@@ -15,6 +18,18 @@ class Vocabulary:
|
|
|
15
18
|
}
|
|
16
19
|
"""
|
|
17
20
|
|
|
21
|
+
@staticmethod
|
|
22
|
+
def generate_id(name, category):
|
|
23
|
+
name = name.lower().strip()
|
|
24
|
+
data = {"name": name, "category": category}
|
|
25
|
+
data = canonicalize(data, utf8=False)
|
|
26
|
+
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
27
|
+
return "vocabulary--" + id
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def generate_id_from_data(data):
|
|
31
|
+
return Vocabulary.generate_id(data["name"], data["category"])
|
|
32
|
+
|
|
18
33
|
def list(self, **kwargs):
|
|
19
34
|
filters = kwargs.get("filters", None)
|
|
20
35
|
self.opencti.app_logger.info(
|
|
@@ -131,6 +131,10 @@ class Vulnerability:
|
|
|
131
131
|
id = str(uuid.uuid5(uuid.UUID("00abedb4-aa42-466c-9c01-fed23315a9b7"), data))
|
|
132
132
|
return "vulnerability--" + id
|
|
133
133
|
|
|
134
|
+
@staticmethod
|
|
135
|
+
def generate_id_from_data(data):
|
|
136
|
+
return Vulnerability.generate_id(data["name"])
|
|
137
|
+
|
|
134
138
|
"""
|
|
135
139
|
List Vulnerability objects
|
|
136
140
|
|
pycti/utils/opencti_stix2.py
CHANGED
|
@@ -176,7 +176,10 @@ class OpenCTIStix2:
|
|
|
176
176
|
return None
|
|
177
177
|
|
|
178
178
|
def import_bundle_from_file(
|
|
179
|
-
self,
|
|
179
|
+
self,
|
|
180
|
+
file_path: str,
|
|
181
|
+
update: bool = False,
|
|
182
|
+
types: List = None,
|
|
180
183
|
) -> Optional[List]:
|
|
181
184
|
"""import a stix2 bundle from a file
|
|
182
185
|
|
|
@@ -194,7 +197,7 @@ class OpenCTIStix2:
|
|
|
194
197
|
return None
|
|
195
198
|
with open(os.path.join(file_path), encoding="utf-8") as file:
|
|
196
199
|
data = json.load(file)
|
|
197
|
-
return self.import_bundle(data, update, types)
|
|
200
|
+
return self.import_bundle(data, update, types, None)
|
|
198
201
|
|
|
199
202
|
def import_bundle_from_json(
|
|
200
203
|
self,
|
|
@@ -856,6 +859,59 @@ class OpenCTIStix2:
|
|
|
856
859
|
|
|
857
860
|
# endregion
|
|
858
861
|
|
|
862
|
+
def get_stix_helper(self):
|
|
863
|
+
# Import
|
|
864
|
+
return {
|
|
865
|
+
# entities
|
|
866
|
+
"attack-pattern": self.opencti.attack_pattern,
|
|
867
|
+
"campaign": self.opencti.campaign,
|
|
868
|
+
"note": self.opencti.note,
|
|
869
|
+
"observed-data": self.opencti.observed_data,
|
|
870
|
+
"opinion": self.opencti.opinion,
|
|
871
|
+
"report": self.opencti.report,
|
|
872
|
+
"course-of-action": self.opencti.course_of_action,
|
|
873
|
+
"identity": self.opencti.identity,
|
|
874
|
+
"infrastructure": self.opencti.infrastructure,
|
|
875
|
+
"intrusion-set": self.opencti.intrusion_set,
|
|
876
|
+
"location": self.opencti.location,
|
|
877
|
+
"malware": self.opencti.malware,
|
|
878
|
+
"threat-actor": self.opencti.threat_actor,
|
|
879
|
+
"tool": self.opencti.tool,
|
|
880
|
+
"vulnerability": self.opencti.vulnerability,
|
|
881
|
+
"incident": self.opencti.incident,
|
|
882
|
+
"marking-definition": self.opencti.marking_definition,
|
|
883
|
+
"case-rfi": self.opencti.case_rfi,
|
|
884
|
+
"x-opencti-case-rfi": self.opencti.case_rfi,
|
|
885
|
+
"case-rft": self.opencti.case_rft,
|
|
886
|
+
"x-opencti-case-rft": self.opencti.case_rft,
|
|
887
|
+
"case-incident": self.opencti.case_incident,
|
|
888
|
+
"x-opencti-case-incident": self.opencti.case_incident,
|
|
889
|
+
"feedback": self.opencti.feedback,
|
|
890
|
+
"x-opencti-feedback": self.opencti.feedback,
|
|
891
|
+
"channel": self.opencti.channel,
|
|
892
|
+
"data-component": self.opencti.data_component,
|
|
893
|
+
"x-mitre-data-component": self.opencti.data_component,
|
|
894
|
+
"data-source": self.opencti.data_source,
|
|
895
|
+
"x-mitre-data-source": self.opencti.data_source,
|
|
896
|
+
"event": self.opencti.event,
|
|
897
|
+
"grouping": self.opencti.grouping,
|
|
898
|
+
"indicator": self.opencti.indicator,
|
|
899
|
+
"language": self.opencti.language,
|
|
900
|
+
"malware-analysis": self.opencti.malware_analysis,
|
|
901
|
+
"narrative": self.opencti.narrative,
|
|
902
|
+
"task": self.opencti.task,
|
|
903
|
+
"x-opencti-task": self.opencti.task,
|
|
904
|
+
"vocabulary": self.opencti.vocabulary,
|
|
905
|
+
# relationships
|
|
906
|
+
"relationship": self.opencti.stix_core_relationship,
|
|
907
|
+
"sighting": self.opencti.stix_sighting_relationship,
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
def generate_standard_id_from_stix(self, data):
|
|
911
|
+
stix_helpers = self.get_stix_helper()
|
|
912
|
+
helper = stix_helpers.get(data["type"])
|
|
913
|
+
return helper.generate_id_from_data(data)
|
|
914
|
+
|
|
859
915
|
# region import
|
|
860
916
|
def import_object(
|
|
861
917
|
self, stix_object: Dict, update: bool = False, types: List = None
|
|
@@ -902,53 +958,16 @@ class OpenCTIStix2:
|
|
|
902
958
|
"sample_ids": sample_refs_ids,
|
|
903
959
|
}
|
|
904
960
|
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
"report": self.opencti.report.import_from_stix2,
|
|
916
|
-
"grouping": self.opencti.grouping.import_from_stix2,
|
|
917
|
-
"case-rfi": self.opencti.case_rfi.import_from_stix2,
|
|
918
|
-
"x-opencti-case-rfi": self.opencti.case_rfi.import_from_stix2,
|
|
919
|
-
"case-rft": self.opencti.case_rft.import_from_stix2,
|
|
920
|
-
"x-opencti-case-rft": self.opencti.case_rft.import_from_stix2,
|
|
921
|
-
"task": self.opencti.task.import_from_stix2,
|
|
922
|
-
"x-opencti-task": self.opencti.task.import_from_stix2,
|
|
923
|
-
"case-incident": self.opencti.case_incident.import_from_stix2,
|
|
924
|
-
"x-opencti-case-incident": self.opencti.case_incident.import_from_stix2,
|
|
925
|
-
"feedback": self.opencti.feedback.import_from_stix2,
|
|
926
|
-
"x-opencti-feedback": self.opencti.feedback.import_from_stix2,
|
|
927
|
-
"course-of-action": self.opencti.course_of_action.import_from_stix2,
|
|
928
|
-
"data-component": self.opencti.data_component.import_from_stix2,
|
|
929
|
-
"x-mitre-data-component": self.opencti.data_component.import_from_stix2,
|
|
930
|
-
"data-source": self.opencti.data_source.import_from_stix2,
|
|
931
|
-
"x-mitre-data-source": self.opencti.data_source.import_from_stix2,
|
|
932
|
-
"identity": self.opencti.identity.import_from_stix2,
|
|
933
|
-
"indicator": self.opencti.indicator.import_from_stix2,
|
|
934
|
-
"infrastructure": self.opencti.infrastructure.import_from_stix2,
|
|
935
|
-
"intrusion-set": self.opencti.intrusion_set.import_from_stix2,
|
|
936
|
-
"location": self.opencti.location.import_from_stix2,
|
|
937
|
-
"malware": self.opencti.malware.import_from_stix2,
|
|
938
|
-
"malware-analysis": self.opencti.malware_analysis.import_from_stix2,
|
|
939
|
-
"threat-actor": self.opencti.threat_actor.import_from_stix2,
|
|
940
|
-
"tool": self.opencti.tool.import_from_stix2,
|
|
941
|
-
"narrative": self.opencti.narrative.import_from_stix2,
|
|
942
|
-
"vulnerability": self.opencti.vulnerability.import_from_stix2,
|
|
943
|
-
"incident": self.opencti.incident.import_from_stix2,
|
|
944
|
-
}
|
|
945
|
-
do_import = importer.get(
|
|
946
|
-
stix_object["type"],
|
|
947
|
-
lambda **kwargs: self.unknown_type(stix_object),
|
|
948
|
-
)
|
|
949
|
-
stix_object_results = do_import(
|
|
950
|
-
stixObject=stix_object, extras=extras, update=update
|
|
951
|
-
)
|
|
961
|
+
stix_helper = self.get_stix_helper().get(stix_object["type"])
|
|
962
|
+
if stix_helper:
|
|
963
|
+
stix_object_results = stix_helper.import_from_stix2(
|
|
964
|
+
stixObject=stix_object, extras=extras, update=update
|
|
965
|
+
)
|
|
966
|
+
else:
|
|
967
|
+
stix_object_results = None
|
|
968
|
+
self.opencti.app_logger.error(
|
|
969
|
+
"Unknown object type, doing nothing...", {"type": stix_object["type"]}
|
|
970
|
+
)
|
|
952
971
|
|
|
953
972
|
if stix_object_results is None:
|
|
954
973
|
return None
|
|
@@ -1381,6 +1400,11 @@ class OpenCTIStix2:
|
|
|
1381
1400
|
if "x_opencti_workflow_id" in stix_sighting
|
|
1382
1401
|
else None
|
|
1383
1402
|
),
|
|
1403
|
+
x_opencti_stix_ids=(
|
|
1404
|
+
stix_sighting["x_opencti_stix_ids"]
|
|
1405
|
+
if "x_opencti_stix_ids" in stix_sighting
|
|
1406
|
+
else None
|
|
1407
|
+
),
|
|
1384
1408
|
update=update,
|
|
1385
1409
|
ignore_dates=(
|
|
1386
1410
|
stix_sighting["x_opencti_ignore_dates"]
|
|
@@ -2411,7 +2435,7 @@ class OpenCTIStix2:
|
|
|
2411
2435
|
# region Resolve the to
|
|
2412
2436
|
to_ids = []
|
|
2413
2437
|
if "x_opencti_where_sighted_refs" in item:
|
|
2414
|
-
for where_sighted_ref in item["
|
|
2438
|
+
for where_sighted_ref in item["x_opencti_where_sighted_refs"]:
|
|
2415
2439
|
to_ids.append(where_sighted_ref)
|
|
2416
2440
|
elif "where_sighted_refs" in item:
|
|
2417
2441
|
for where_sighted_ref in item["where_sighted_refs"]:
|
|
@@ -2631,6 +2655,7 @@ class OpenCTIStix2:
|
|
|
2631
2655
|
if "x_opencti_event_version" in stix_bundle
|
|
2632
2656
|
else None
|
|
2633
2657
|
)
|
|
2658
|
+
|
|
2634
2659
|
stix2_splitter = OpenCTIStix2Splitter()
|
|
2635
2660
|
_, bundles = stix2_splitter.split_bundle_with_expectations(
|
|
2636
2661
|
stix_bundle, False, event_version
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycti
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.4.1
|
|
4
4
|
Summary: Python API client for OpenCTI.
|
|
5
5
|
Home-page: https://github.com/OpenCTI-Platform/client-python
|
|
6
6
|
Author: Filigran
|
|
@@ -24,7 +24,9 @@ License-File: LICENSE
|
|
|
24
24
|
Requires-Dist: datefinder~=0.7.3
|
|
25
25
|
Requires-Dist: pika~=1.3.0
|
|
26
26
|
Requires-Dist: pydantic~=2.8.2
|
|
27
|
-
Requires-Dist: python-
|
|
27
|
+
Requires-Dist: python-magic~=0.4.27; sys_platform == "linux" or sys_platform == "darwin"
|
|
28
|
+
Requires-Dist: python-magic-bin~=0.4.14; sys_platform == "win32"
|
|
29
|
+
Requires-Dist: python_json_logger~=2.0.4
|
|
28
30
|
Requires-Dist: PyYAML~=6.0
|
|
29
31
|
Requires-Dist: requests~=2.32.2
|
|
30
32
|
Requires-Dist: setuptools~=71.1.0
|
|
@@ -35,8 +37,6 @@ Requires-Dist: opentelemetry-sdk~=1.22.0
|
|
|
35
37
|
Requires-Dist: deprecation~=2.1.0
|
|
36
38
|
Requires-Dist: filigran-sseclient~=1.0.0
|
|
37
39
|
Requires-Dist: stix2~=3.0.1
|
|
38
|
-
Requires-Dist: python-magic~=0.4.27; sys_platform == "linux" or sys_platform == "darwin"
|
|
39
|
-
Requires-Dist: python-magic-bin~=0.4.14; sys_platform == "win32"
|
|
40
40
|
Provides-Extra: dev
|
|
41
41
|
Requires-Dist: black~=24.4.0; extra == "dev"
|
|
42
42
|
Requires-Dist: build~=1.2.1; extra == "dev"
|
|
@@ -45,7 +45,7 @@ Requires-Dist: types-pytz~=2024.1.0.20240203; extra == "dev"
|
|
|
45
45
|
Requires-Dist: pre-commit~=3.7.0; extra == "dev"
|
|
46
46
|
Requires-Dist: pytest-cases~=3.8.0; extra == "dev"
|
|
47
47
|
Requires-Dist: pytest-cov~=5.0.0; extra == "dev"
|
|
48
|
-
Requires-Dist:
|
|
48
|
+
Requires-Dist: pytest_randomly~=3.15.0; extra == "dev"
|
|
49
49
|
Requires-Dist: pytest~=8.2.0; extra == "dev"
|
|
50
50
|
Requires-Dist: types-python-dateutil~=2.9.0; extra == "dev"
|
|
51
51
|
Requires-Dist: wheel~=0.43.0; extra == "dev"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
pycti/__init__.py,sha256=pY7vX3z0BSzJHOL0T-REcB8v0M8d8w2a5kJO4wgY5Cg,5218
|
|
2
|
+
pycti/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
pycti/api/opencti_api_client.py,sha256=zTpdwD592cm_cpZmnK8Ba6CRyDK1Xe2jqaT2-HvTuKE,32187
|
|
4
|
+
pycti/api/opencti_api_connector.py,sha256=ubM_zPjTD8L33TEugCQgf_YF9zugDFg_7FgNubGlwJw,5447
|
|
5
|
+
pycti/api/opencti_api_playbook.py,sha256=456We78vESukfSOi_CctfZ9dbBJEi76EHClRc2f21Js,1628
|
|
6
|
+
pycti/api/opencti_api_work.py,sha256=JLfl7oy6Cq9IrYW_kUrqwzN46FoVzyIn1JJQKyK0h_w,7615
|
|
7
|
+
pycti/connector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
pycti/connector/opencti_connector.py,sha256=5oVvS27KWhzRiofJAeQPDtba-EP83FziSistyEd5l-U,2561
|
|
9
|
+
pycti/connector/opencti_connector_helper.py,sha256=b-6ymDF3e4pfVxRhB13vj8Vwzo3h2TcV1iud6pPrKOk,80672
|
|
10
|
+
pycti/connector/opencti_metric_handler.py,sha256=4jXHeJflomtHjuQ_YU0b36TG7o26vOWbY_jvU8Ezobs,3725
|
|
11
|
+
pycti/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
pycti/entities/opencti_attack_pattern.py,sha256=rj3o2bFCoXniLmD9Ithi09S9Us8ab1G-GFLgqS8jll0,22237
|
|
13
|
+
pycti/entities/opencti_campaign.py,sha256=QPvAPeydaIKFIl7ig3XUpfZCoRuiLABqoHSZG0uKbCE,17789
|
|
14
|
+
pycti/entities/opencti_case_incident.py,sha256=KaJenRG8k0SCHL8jhThI1gSDsUvrJjNRSIBdmfRzosA,33826
|
|
15
|
+
pycti/entities/opencti_case_rfi.py,sha256=PmXmzUqz2_VKJyrDh4_dceCcMR_WpD39E6LDaWJhwmo,32575
|
|
16
|
+
pycti/entities/opencti_case_rft.py,sha256=yxhGdVOx40pAFpT2n0IBsZrWFaNXC3tg50gZHhlb9T0,33459
|
|
17
|
+
pycti/entities/opencti_channel.py,sha256=6_R3e6WRnNe-qbZ4XHgXo7IalIRBd8l2YmKyNHpFtYM,16713
|
|
18
|
+
pycti/entities/opencti_course_of_action.py,sha256=uOTik5-nykN83q7fqG-ClgJt3axwHy6DkAWA2ToTaT4,18697
|
|
19
|
+
pycti/entities/opencti_data_component.py,sha256=8VpFJMr1fNmZg51kaHbzvmc_7KOZu_lMcwQsZylVQM4,19269
|
|
20
|
+
pycti/entities/opencti_data_source.py,sha256=ATOz3B-pv8m6CkUq93MY6sg5zA8H-Q5SJRKwmna85Wk,18154
|
|
21
|
+
pycti/entities/opencti_event.py,sha256=WUptWDmxMbuL-Mp0wX-BLTi15KJua1AO8L4n6tcSbTM,16809
|
|
22
|
+
pycti/entities/opencti_external_reference.py,sha256=iffppZFJPRy0pZjdbfYYNlKp5PXS2VIWiyxeBMdGuuI,13568
|
|
23
|
+
pycti/entities/opencti_feedback.py,sha256=t_4KnCi53lADEV-O_isD74v7GOMpoFz9Kf-eWJIBFoA,32420
|
|
24
|
+
pycti/entities/opencti_grouping.py,sha256=q6zRDF_Oc2sIt6iKecxbqa8bh50UzJ8HixYouhem7Cc,30279
|
|
25
|
+
pycti/entities/opencti_identity.py,sha256=QVXNBedhZ5jnQxx3w9IsrghvtRGpRhttpLdZ474TVZA,23803
|
|
26
|
+
pycti/entities/opencti_incident.py,sha256=R0LYEBll5gv83pJloUcWRqTR5tmr2gF0kRGUAtg8w40,18676
|
|
27
|
+
pycti/entities/opencti_indicator.py,sha256=cpz7Geiy7zkxPudnzdiVwRM5tUKs57LU7qTnl-M7wOE,20952
|
|
28
|
+
pycti/entities/opencti_infrastructure.py,sha256=9rL9Rk7470gvjG6wuTbqUqtjsGxmvDId1NksudArb94,20041
|
|
29
|
+
pycti/entities/opencti_intrusion_set.py,sha256=z5ziqushqrWFBL4ub8HrOxIYXIonZCsQH12F-R35in0,19067
|
|
30
|
+
pycti/entities/opencti_kill_chain_phase.py,sha256=Uk4phq-l8TJTpPKmHJa6_1zTJb59-lah2HDaYWqMOTk,8081
|
|
31
|
+
pycti/entities/opencti_label.py,sha256=6RZJPIa_dXf_YNNU4xXKghfBnpNjhU5YXOaSIcB4YrM,8800
|
|
32
|
+
pycti/entities/opencti_language.py,sha256=KugOaUMnygo8wDnv4RPJTv_EleNGWyEfsAOxI7NitLk,16282
|
|
33
|
+
pycti/entities/opencti_location.py,sha256=dbsqkgZbcnrh2mrG5u59kZmCv6HrclwUIgSb9BPm4DI,18395
|
|
34
|
+
pycti/entities/opencti_malware.py,sha256=JkwOhee1uqs9_OptLG9qiwPlwWo4WuI1v2VGomNPfDg,20460
|
|
35
|
+
pycti/entities/opencti_malware_analysis.py,sha256=Oz1rPrF6rUczmaKNB8j8k6JDsp-1UOcJN-2fIfckXNI,21798
|
|
36
|
+
pycti/entities/opencti_marking_definition.py,sha256=Q_WdW_LyS7H8MuhCiFOwCFzj-1r5zFCev13FhY2iyvc,13030
|
|
37
|
+
pycti/entities/opencti_narrative.py,sha256=jJz9v3DtApHS6gmpg6K8-jOG6E3s--K5ipzwc3WXF8A,17151
|
|
38
|
+
pycti/entities/opencti_note.py,sha256=vYgooFvqWI9d9586HEQjp0xEzsrdLYQ_I9kKetw41Pg,30776
|
|
39
|
+
pycti/entities/opencti_observed_data.py,sha256=9cTUTDB7DG7dKdyQsm30ucOUs8xxu6-r-VqVAYKzl68,31243
|
|
40
|
+
pycti/entities/opencti_opinion.py,sha256=Znwkqx1gUYYu-Rx7jIidDC3yj0PQfLA-G3gz_IVXZbs,22503
|
|
41
|
+
pycti/entities/opencti_report.py,sha256=W6lRCnW7J7vE5U_07X81wR6ff2Tk_GzeOV1B--NBiPA,35347
|
|
42
|
+
pycti/entities/opencti_stix.py,sha256=uMheSg8i1f2Ozx2Mk0iShWzHHjj6MMWDtV5nDjVxKEE,2275
|
|
43
|
+
pycti/entities/opencti_stix_core_object.py,sha256=Lc0-lytsEjQRWD9VkVTHPrWPgqOzqT99qwndOQIRYCw,51683
|
|
44
|
+
pycti/entities/opencti_stix_core_relationship.py,sha256=Jebd-pp5aMu-HE58jisBBsQm0D3U03HBmi3ZePcRmtc,44786
|
|
45
|
+
pycti/entities/opencti_stix_cyber_observable.py,sha256=ywZHND5Kfykurn-EUO2k0-hdpsrCHHFjpb4xONVGEt8,92094
|
|
46
|
+
pycti/entities/opencti_stix_domain_object.py,sha256=LyKy5DbhtffO_sHJO3Xo1_PcuPi27pTKp_ETYhdU_zs,78894
|
|
47
|
+
pycti/entities/opencti_stix_nested_ref_relationship.py,sha256=eGCF7yaEDqMsJbgvTDle0tVzRCF78CmEhE02jioUTCc,12605
|
|
48
|
+
pycti/entities/opencti_stix_object_or_stix_relationship.py,sha256=5qutzML6SyYzDhZ-QpI9Vh23hzLEs-xeFAAZOpGHZ2g,18049
|
|
49
|
+
pycti/entities/opencti_stix_sighting_relationship.py,sha256=FyvEcOwcSyVY_oYVqAVfi_VeeNLl7QJlTigM09tpXu0,28780
|
|
50
|
+
pycti/entities/opencti_task.py,sha256=vNergoXqXd5FeNM75-cqtI__u2jG0462sRhakXG3-p0,24711
|
|
51
|
+
pycti/entities/opencti_threat_actor.py,sha256=oo-WovanGdO_Ic9X1_uHBQB-4R25shLD1-6Sa7HJZKo,10365
|
|
52
|
+
pycti/entities/opencti_threat_actor_group.py,sha256=lo60v-3qFRxtTmQ5Bq_csQchzE8spsdHmhMgXRDBM-4,19724
|
|
53
|
+
pycti/entities/opencti_threat_actor_individual.py,sha256=hPcOrHKERTpcnVmFF8h8Dwe4gebWBK7h35BAMFf8P7g,19976
|
|
54
|
+
pycti/entities/opencti_tool.py,sha256=PVI7fOz1t8cNfF6wvlO1LLWZqS26m8Ayn3-s-XQpaWg,15339
|
|
55
|
+
pycti/entities/opencti_vocabulary.py,sha256=xupdHJ6TznCmvI3sVYU261SnfblSNc1nwg19MG9yrao,6499
|
|
56
|
+
pycti/entities/opencti_vulnerability.py,sha256=PxlfRKrwmkqU5E8o8WF04YRXJtCxBu5QBKbxvd96loY,22658
|
|
57
|
+
pycti/entities/indicator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
+
pycti/entities/indicator/opencti_indicator_properties.py,sha256=8X8YkCshM0gkHc9sQZ_WSNvVxOA4aTJmLta8ZG93HOU,5087
|
|
59
|
+
pycti/entities/stix_cyber_observable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
pycti/entities/stix_cyber_observable/opencti_stix_cyber_observable_deprecated.py,sha256=BH65h6xBz7naG61t5nvBdhnGYnobNuiUZf8CJC4-nnc,1847
|
|
61
|
+
pycti/entities/stix_cyber_observable/opencti_stix_cyber_observable_properties.py,sha256=MN56CW8RWZwB0Pr8UiHZy_4nSzbgFbwdhSFKpsZ_d1Y,11293
|
|
62
|
+
pycti/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
pycti/utils/constants.py,sha256=ZgOVxY5bnrHiNvPgOfZLWk16sSDnaE_tg8JVjZpw24Q,11831
|
|
64
|
+
pycti/utils/opencti_logger.py,sha256=0dvB75V0SuPFGxL539dAQrxTt1N5Acx0A3Ogwl5WMJ8,2199
|
|
65
|
+
pycti/utils/opencti_stix2.py,sha256=oNB49_CB2cXjQ-a94zNOHJOZ86EcpexfJjkzToWRook,117554
|
|
66
|
+
pycti/utils/opencti_stix2_identifier.py,sha256=k8L1z4q1xdCBfxqUba4YS_kT-MmbJFxYh0RvfGOmrOs,837
|
|
67
|
+
pycti/utils/opencti_stix2_splitter.py,sha256=etnAWMDzNi2JCovSUJ5Td-XLVdzgKRdsV1XfpXOGols,11070
|
|
68
|
+
pycti/utils/opencti_stix2_update.py,sha256=CnMyqkeVA0jgyxEcgqna8sABU4YPMjkEJ228GVurIn4,14658
|
|
69
|
+
pycti/utils/opencti_stix2_utils.py,sha256=xgBZzm7HC76rLQYwTKkaUd_w9jJnVMoryHx7KDDIB_g,5065
|
|
70
|
+
pycti-6.4.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
71
|
+
pycti-6.4.1.dist-info/METADATA,sha256=KOFxignwDobbRHe9wNLppLrcoqGsvHQi-sd5_LfhOZ8,5418
|
|
72
|
+
pycti-6.4.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
73
|
+
pycti-6.4.1.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
|
|
74
|
+
pycti-6.4.1.dist-info/RECORD,,
|
pycti-6.3.13.dist-info/RECORD
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
pycti/__init__.py,sha256=1gK3lh7du2Wua8ScY7_IHbGL4QWiCIGAk0YeY1DLL3Y,5219
|
|
2
|
-
pycti/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
pycti/api/opencti_api_client.py,sha256=WpJs3GtEO0kV29KXmKY-2JmtiL6JSPD-746-FbnIcik,31027
|
|
4
|
-
pycti/api/opencti_api_connector.py,sha256=ubM_zPjTD8L33TEugCQgf_YF9zugDFg_7FgNubGlwJw,5447
|
|
5
|
-
pycti/api/opencti_api_playbook.py,sha256=456We78vESukfSOi_CctfZ9dbBJEi76EHClRc2f21Js,1628
|
|
6
|
-
pycti/api/opencti_api_work.py,sha256=JLfl7oy6Cq9IrYW_kUrqwzN46FoVzyIn1JJQKyK0h_w,7615
|
|
7
|
-
pycti/connector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
pycti/connector/opencti_connector.py,sha256=5oVvS27KWhzRiofJAeQPDtba-EP83FziSistyEd5l-U,2561
|
|
9
|
-
pycti/connector/opencti_connector_helper.py,sha256=KUir7ioe-5dhh9E8weZ_dRHu2j_lCpDsc0ORZJgZhz4,79371
|
|
10
|
-
pycti/connector/opencti_metric_handler.py,sha256=4jXHeJflomtHjuQ_YU0b36TG7o26vOWbY_jvU8Ezobs,3725
|
|
11
|
-
pycti/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
pycti/entities/opencti_attack_pattern.py,sha256=AP_lTsHk0NscvFsXdxjzXWLCpg0ZaHTUT-Yg2JyB4YU,22047
|
|
13
|
-
pycti/entities/opencti_campaign.py,sha256=WXY9wOJYqmW7tbRHQPlFX-vNYsx5w9Gz_olS4vJ0MDM,17683
|
|
14
|
-
pycti/entities/opencti_case_incident.py,sha256=BEP22Itt7-ZxMBwMNMHO7sbS8XfNSfiy0Y7chuOgWJ4,33699
|
|
15
|
-
pycti/entities/opencti_case_rfi.py,sha256=3coAKmkyc6rmk6D9Co3JvggtpOcOCFJJRgR4TuGSpcI,32453
|
|
16
|
-
pycti/entities/opencti_case_rft.py,sha256=cO-DJAJThKHMYAMvKH8yGGIPXu1C40h9qZaNbwVXfzo,33337
|
|
17
|
-
pycti/entities/opencti_channel.py,sha256=cA8ltYJpB43rUSKvCPyLUJvtdb_RSJ4tuuUdi_EMF2Q,16608
|
|
18
|
-
pycti/entities/opencti_course_of_action.py,sha256=j_yZqvfeCba2FBSf0Pf2ZoDYUL_qpntMAUwpc_AJ4ow,18577
|
|
19
|
-
pycti/entities/opencti_data_component.py,sha256=081y2bc4lz5E8esNloLNrZnIUCDicD3vKycIETwsyuE,19158
|
|
20
|
-
pycti/entities/opencti_data_source.py,sha256=QeBDLuH5BZs0_rnQmXZGs0wWfxfC6qPcRFEWuAuaSaM,18046
|
|
21
|
-
pycti/entities/opencti_event.py,sha256=Pam3eeR_Ytl_the-kV9IxXcfJKs2vRqN61igyDAlVE4,16706
|
|
22
|
-
pycti/entities/opencti_external_reference.py,sha256=t54oKLvhbg6wY_GN10AAmJzPRjOi97zBk8m4SHoM7d4,13378
|
|
23
|
-
pycti/entities/opencti_feedback.py,sha256=tK_Y3ZK2h33xQTzsjxu3x8Za3cBsgkBth_xNzEj2Hms,32314
|
|
24
|
-
pycti/entities/opencti_grouping.py,sha256=Er4931oZy4rQzH4HOOOPOQotqH9HsDFoVKFXRNF-5J4,30034
|
|
25
|
-
pycti/entities/opencti_identity.py,sha256=Bt6z8cNNnmPdV4iPSHb_FvO_9CGZdOHvhw9pT0llWH4,23685
|
|
26
|
-
pycti/entities/opencti_incident.py,sha256=KAaqn0mnlyIKJ2whtbK0Eg8AbfQfxKvppS9hyfn_04s,18553
|
|
27
|
-
pycti/entities/opencti_indicator.py,sha256=gh69C4Wu2Z08PcI2LC9p_FtKC1Qq8I1DjVsukz17kGI,20842
|
|
28
|
-
pycti/entities/opencti_infrastructure.py,sha256=-hgDXR3ld2B6Man9WkFFuXOY8ELprLgNIUcyE03TSDA,19929
|
|
29
|
-
pycti/entities/opencti_intrusion_set.py,sha256=MXubQhDZ6LE69z1Wj8agAZNOrGeKiXU4IZs_9B0Expg,18957
|
|
30
|
-
pycti/entities/opencti_kill_chain_phase.py,sha256=643ffNdq-ZaVZPUqqLm1S6ITgKEf7N3XVAJxJM6bbbQ,7938
|
|
31
|
-
pycti/entities/opencti_label.py,sha256=6RZJPIa_dXf_YNNU4xXKghfBnpNjhU5YXOaSIcB4YrM,8800
|
|
32
|
-
pycti/entities/opencti_language.py,sha256=eHB7qzf_l2Mno_Wy9kF0QUdcBktWgr4kRHhb9AxT0c0,16176
|
|
33
|
-
pycti/entities/opencti_location.py,sha256=QSC8klDklTcXziulPFCpn8-UqeSIzPX287vfUYVDVbY,17776
|
|
34
|
-
pycti/entities/opencti_malware.py,sha256=T8P3cuG_5wVqpD8ArNnfZ1vk5CKfMCvaY8ZjskQHGnY,20355
|
|
35
|
-
pycti/entities/opencti_malware_analysis.py,sha256=iHw5G1mK9LGGuuFP7Wb0740336GR5btedK2lmy8lX84,21480
|
|
36
|
-
pycti/entities/opencti_marking_definition.py,sha256=2HkU58XWOZHuEFXrscshQIHW-KVyZSr02JRzBQYZirI,12862
|
|
37
|
-
pycti/entities/opencti_narrative.py,sha256=tUoq5h9VleK6Q-Wt1KSXAtcLsBUEvQ559rDhgg4y-E0,17044
|
|
38
|
-
pycti/entities/opencti_note.py,sha256=2VzLIxiOIT5MVWQbfNkSyooTuKvwJH7sguRrUOVNpTY,30514
|
|
39
|
-
pycti/entities/opencti_observed_data.py,sha256=123sp3_Xbu1HVZW5-5_Tu8DYo_wBf6RVGPYyCIuDBtw,31126
|
|
40
|
-
pycti/entities/opencti_opinion.py,sha256=SPcY8-0zRJCMle-eDLka-CFPyAqU3CnVVBtfVYhzyJE,21837
|
|
41
|
-
pycti/entities/opencti_report.py,sha256=y-in19XqQ1BN0MZjKfxiOWe_0Q4Wakrj2MLrqzFpokU,35224
|
|
42
|
-
pycti/entities/opencti_stix.py,sha256=uMheSg8i1f2Ozx2Mk0iShWzHHjj6MMWDtV5nDjVxKEE,2275
|
|
43
|
-
pycti/entities/opencti_stix_core_object.py,sha256=Lc0-lytsEjQRWD9VkVTHPrWPgqOzqT99qwndOQIRYCw,51683
|
|
44
|
-
pycti/entities/opencti_stix_core_relationship.py,sha256=ldhS0rJ9L6LrY1wvX28f9TMpVD1rVxsK-GYhH06qJFo,43944
|
|
45
|
-
pycti/entities/opencti_stix_cyber_observable.py,sha256=ywZHND5Kfykurn-EUO2k0-hdpsrCHHFjpb4xONVGEt8,92094
|
|
46
|
-
pycti/entities/opencti_stix_domain_object.py,sha256=LyKy5DbhtffO_sHJO3Xo1_PcuPi27pTKp_ETYhdU_zs,78894
|
|
47
|
-
pycti/entities/opencti_stix_nested_ref_relationship.py,sha256=eGCF7yaEDqMsJbgvTDle0tVzRCF78CmEhE02jioUTCc,12605
|
|
48
|
-
pycti/entities/opencti_stix_object_or_stix_relationship.py,sha256=5qutzML6SyYzDhZ-QpI9Vh23hzLEs-xeFAAZOpGHZ2g,18049
|
|
49
|
-
pycti/entities/opencti_stix_sighting_relationship.py,sha256=OPbdanElqnAj7cLu2eh1P5PBh_54xfxnW36HX_5wnEs,28077
|
|
50
|
-
pycti/entities/opencti_task.py,sha256=gDlUVyeRcIlIoh5bKtar-NmFa5_3OmMd4OkRVi_AYco,24612
|
|
51
|
-
pycti/entities/opencti_threat_actor.py,sha256=lRdPhXX_HsNSE5rTwkke_U5T_FAPGD22ow2-YeZdaYc,9950
|
|
52
|
-
pycti/entities/opencti_threat_actor_group.py,sha256=RLwufTb8vFvOHgV81VXf2cA1sREz12Tzwp9uRXONu88,19610
|
|
53
|
-
pycti/entities/opencti_threat_actor_individual.py,sha256=b4Zqd40ehrFeaU6f_bSY6343Dg5vq6PuiDtKLXUrv78,19857
|
|
54
|
-
pycti/entities/opencti_tool.py,sha256=5A20xY0fDBNLkbQP_32srjS3FXEVYGNxhe1I1YnaIbA,15237
|
|
55
|
-
pycti/entities/opencti_vocabulary.py,sha256=6JfOByggvSxvkfIXk1b60T7fyWOhxZ6YFkGbSeV8F-4,5988
|
|
56
|
-
pycti/entities/opencti_vulnerability.py,sha256=B-7H9_gRNDnjfspkAq3o4z8WJg_3EQ7y0iAXa9WHWkg,22547
|
|
57
|
-
pycti/entities/indicator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
-
pycti/entities/indicator/opencti_indicator_properties.py,sha256=2HJiBkBzbLe75Yu5AeSrTZCSKikPwwM_DeDgJCl7wm4,4953
|
|
59
|
-
pycti/entities/stix_cyber_observable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
pycti/entities/stix_cyber_observable/opencti_stix_cyber_observable_deprecated.py,sha256=BH65h6xBz7naG61t5nvBdhnGYnobNuiUZf8CJC4-nnc,1847
|
|
61
|
-
pycti/entities/stix_cyber_observable/opencti_stix_cyber_observable_properties.py,sha256=MN56CW8RWZwB0Pr8UiHZy_4nSzbgFbwdhSFKpsZ_d1Y,11293
|
|
62
|
-
pycti/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
-
pycti/utils/constants.py,sha256=ZgOVxY5bnrHiNvPgOfZLWk16sSDnaE_tg8JVjZpw24Q,11831
|
|
64
|
-
pycti/utils/opencti_logger.py,sha256=0dvB75V0SuPFGxL539dAQrxTt1N5Acx0A3Ogwl5WMJ8,2199
|
|
65
|
-
pycti/utils/opencti_stix2.py,sha256=NIesCMOGpBFUCNCEqyV2JexZX0-ww5E9VNfeF7xVSpc,117315
|
|
66
|
-
pycti/utils/opencti_stix2_identifier.py,sha256=k8L1z4q1xdCBfxqUba4YS_kT-MmbJFxYh0RvfGOmrOs,837
|
|
67
|
-
pycti/utils/opencti_stix2_splitter.py,sha256=etnAWMDzNi2JCovSUJ5Td-XLVdzgKRdsV1XfpXOGols,11070
|
|
68
|
-
pycti/utils/opencti_stix2_update.py,sha256=CnMyqkeVA0jgyxEcgqna8sABU4YPMjkEJ228GVurIn4,14658
|
|
69
|
-
pycti/utils/opencti_stix2_utils.py,sha256=xgBZzm7HC76rLQYwTKkaUd_w9jJnVMoryHx7KDDIB_g,5065
|
|
70
|
-
pycti-6.3.13.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
71
|
-
pycti-6.3.13.dist-info/METADATA,sha256=FaTSiHgjaDMCkJe3y_4cOD-eN5dPIAfzaaZMGIIGfmk,5419
|
|
72
|
-
pycti-6.3.13.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
|
|
73
|
-
pycti-6.3.13.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
|
|
74
|
-
pycti-6.3.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|