pycti 6.5.1__py3-none-any.whl → 6.5.3__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.

Files changed (51) hide show
  1. pycti/__init__.py +1 -1
  2. pycti/api/opencti_api_client.py +17 -12
  3. pycti/connector/opencti_connector_helper.py +12 -0
  4. pycti/entities/opencti_attack_pattern.py +0 -2
  5. pycti/entities/opencti_campaign.py +0 -2
  6. pycti/entities/opencti_case_incident.py +1 -3
  7. pycti/entities/opencti_case_rfi.py +3 -5
  8. pycti/entities/opencti_case_rft.py +3 -5
  9. pycti/entities/opencti_channel.py +0 -2
  10. pycti/entities/opencti_course_of_action.py +0 -2
  11. pycti/entities/opencti_data_component.py +0 -2
  12. pycti/entities/opencti_data_source.py +0 -2
  13. pycti/entities/opencti_event.py +0 -2
  14. pycti/entities/opencti_external_reference.py +0 -2
  15. pycti/entities/opencti_feedback.py +0 -2
  16. pycti/entities/opencti_grouping.py +0 -2
  17. pycti/entities/opencti_identity.py +0 -2
  18. pycti/entities/opencti_incident.py +0 -2
  19. pycti/entities/opencti_infrastructure.py +0 -2
  20. pycti/entities/opencti_intrusion_set.py +0 -2
  21. pycti/entities/opencti_kill_chain_phase.py +0 -3
  22. pycti/entities/opencti_label.py +0 -2
  23. pycti/entities/opencti_language.py +0 -2
  24. pycti/entities/opencti_location.py +0 -3
  25. pycti/entities/opencti_malware.py +0 -2
  26. pycti/entities/opencti_malware_analysis.py +0 -2
  27. pycti/entities/opencti_marking_definition.py +0 -3
  28. pycti/entities/opencti_narrative.py +0 -2
  29. pycti/entities/opencti_note.py +0 -2
  30. pycti/entities/opencti_observed_data.py +4 -7
  31. pycti/entities/opencti_opinion.py +0 -2
  32. pycti/entities/opencti_report.py +0 -2
  33. pycti/entities/opencti_stix_core_object.py +0 -2
  34. pycti/entities/opencti_stix_core_relationship.py +0 -2
  35. pycti/entities/opencti_stix_cyber_observable.py +0 -3
  36. pycti/entities/opencti_stix_domain_object.py +0 -2
  37. pycti/entities/opencti_stix_nested_ref_relationship.py +4 -7
  38. pycti/entities/opencti_stix_sighting_relationship.py +0 -2
  39. pycti/entities/opencti_task.py +0 -2
  40. pycti/entities/opencti_threat_actor.py +0 -4
  41. pycti/entities/opencti_threat_actor_group.py +0 -4
  42. pycti/entities/opencti_threat_actor_individual.py +0 -4
  43. pycti/entities/opencti_tool.py +0 -2
  44. pycti/entities/opencti_vulnerability.py +0 -2
  45. pycti/utils/opencti_logger.py +3 -3
  46. {pycti-6.5.1.dist-info → pycti-6.5.3.dist-info}/METADATA +6 -6
  47. pycti-6.5.3.dist-info/RECORD +74 -0
  48. pycti-6.5.1.dist-info/RECORD +0 -74
  49. {pycti-6.5.1.dist-info → pycti-6.5.3.dist-info}/LICENSE +0 -0
  50. {pycti-6.5.1.dist-info → pycti-6.5.3.dist-info}/WHEEL +0 -0
  51. {pycti-6.5.1.dist-info → pycti-6.5.3.dist-info}/top_level.txt +0 -0
pycti/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
- __version__ = "6.5.1"
2
+ __version__ = "6.5.3"
3
3
 
4
4
  from .api.opencti_api_client import OpenCTIApiClient
5
5
  from .api.opencti_api_connector import OpenCTIApiConnector
@@ -3,7 +3,7 @@ import base64
3
3
  import datetime
4
4
  import io
5
5
  import json
6
- from typing import Union
6
+ from typing import Dict, Tuple, Union
7
7
 
8
8
  import magic
9
9
  import requests
@@ -83,13 +83,13 @@ class OpenCTIApiClient:
83
83
  :param log_level: log level for the client
84
84
  :type log_level: str, optional
85
85
  :param ssl_verify: Requiring the requests to verify the TLS certificate at the server.
86
- :type ssl_verify: bool, optional
86
+ :type ssl_verify: bool, str, optional
87
87
  :param proxies:
88
88
  :type proxies: dict, optional, The proxy configuration, would have `http` and `https` attributes. Defaults to {}
89
89
  ```
90
90
  proxies: {
91
- "http: "http://my_proxy:8080"
92
- "https: "http://my_proxy:8080"
91
+ "http": "http://my_proxy:8080"
92
+ "https": "http://my_proxy:8080"
93
93
  }
94
94
  ```
95
95
  :param json_logging: format the logs as json if set to True
@@ -102,14 +102,14 @@ class OpenCTIApiClient:
102
102
 
103
103
  def __init__(
104
104
  self,
105
- url,
106
- token,
105
+ url: str,
106
+ token: str,
107
107
  log_level="info",
108
- ssl_verify=False,
109
- proxies=None,
108
+ ssl_verify: Union[bool, str] = False,
109
+ proxies: Union[Dict[str, str], None] = None,
110
110
  json_logging=False,
111
111
  bundle_send_to_queue=True,
112
- cert=None,
112
+ cert: Union[str, Tuple[str, str], None] = None,
113
113
  auth=None,
114
114
  perform_health_check=True,
115
115
  ):
@@ -712,12 +712,13 @@ class OpenCTIApiClient:
712
712
  data = kwargs.get("data", None)
713
713
  mime_type = kwargs.get("mime_type", "text/plain")
714
714
  entity_id = kwargs.get("entity_id", None)
715
+ file_markings = kwargs.get("file_markings", [])
715
716
 
716
717
  if file_name is not None:
717
718
  self.app_logger.info("Uploading a file.")
718
719
  query = """
719
- mutation UploadPending($file: Upload!, $entityId: String) {
720
- uploadPending(file: $file, entityId: $entityId) {
720
+ mutation UploadPending($file: Upload!, $entityId: String, $file_markings: [String!]) {
721
+ uploadPending(file: $file, entityId: $entityId, file_markings: $file_markings) {
721
722
  id
722
723
  name
723
724
  }
@@ -731,7 +732,11 @@ class OpenCTIApiClient:
731
732
  mime_type = magic.from_file(file_name, mime=True)
732
733
  return self.query(
733
734
  query,
734
- {"file": (File(file_name, data, mime_type)), "entityId": entity_id},
735
+ {
736
+ "file": (File(file_name, data, mime_type)),
737
+ "entityId": entity_id,
738
+ "file_markings": file_markings,
739
+ },
735
740
  )
736
741
  else:
737
742
  self.app_logger.error("[upload] Missing parameter: file_name")
@@ -769,6 +769,9 @@ class OpenCTIConnectorHelper: # pylint: disable=too-many-public-methods
769
769
  def __init__(self, config: Dict, playbook_compatible=False) -> None:
770
770
  sys.excepthook = killProgramHook
771
771
 
772
+ # Cache
773
+ self.stream_collections = {}
774
+
772
775
  # Load API config
773
776
  self.config = config
774
777
  self.opencti_url = get_config_variable(
@@ -1063,6 +1066,9 @@ class OpenCTIConnectorHelper: # pylint: disable=too-many-public-methods
1063
1066
  "stream_live": True,
1064
1067
  "stream_public": False,
1065
1068
  }
1069
+ # Get from cache
1070
+ elif self.connect_live_stream_id in self.stream_collections:
1071
+ return self.stream_collections[self.connect_live_stream_id]
1066
1072
  else:
1067
1073
  query = """
1068
1074
  query StreamCollection($id: String!) {
@@ -1076,6 +1082,10 @@ class OpenCTIConnectorHelper: # pylint: disable=too-many-public-methods
1076
1082
  }
1077
1083
  """
1078
1084
  result = self.api.query(query, {"id": self.connect_live_stream_id})
1085
+ # Put in cache
1086
+ self.stream_collections[self.connect_live_stream_id] = result["data"][
1087
+ "streamCollection"
1088
+ ]
1079
1089
  return result["data"]["streamCollection"]
1080
1090
  else:
1081
1091
  raise ValueError("This connector is not connected to any stream")
@@ -1581,6 +1591,7 @@ class OpenCTIConnectorHelper: # pylint: disable=too-many-public-methods
1581
1591
  event_version = kwargs.get("event_version", None)
1582
1592
  bypass_validation = kwargs.get("bypass_validation", False)
1583
1593
  entity_id = kwargs.get("entity_id", None)
1594
+ file_markings = kwargs.get("file_markings", None)
1584
1595
  file_name = kwargs.get("file_name", None)
1585
1596
  bundle_send_to_queue = kwargs.get("send_to_queue", self.bundle_send_to_queue)
1586
1597
  cleanup_inconsistent_bundle = kwargs.get("cleanup_inconsistent_bundle", False)
@@ -1648,6 +1659,7 @@ class OpenCTIConnectorHelper: # pylint: disable=too-many-public-methods
1648
1659
  data=bundle,
1649
1660
  mime_type="application/json",
1650
1661
  entity_id=entity_id,
1662
+ file_markings=file_markings,
1651
1663
  )
1652
1664
  return []
1653
1665
  elif validation_mode == "draft" and not draft_id:
@@ -256,8 +256,6 @@ class AttackPattern:
256
256
  get_all = kwargs.get("getAll", False)
257
257
  with_pagination = kwargs.get("withPagination", False)
258
258
  with_files = kwargs.get("withFiles", False)
259
- if get_all:
260
- first = 500
261
259
 
262
260
  self.opencti.app_logger.info(
263
261
  "Listing Attack-Patterns with filters", {"filters": json.dumps(filters)}
@@ -241,8 +241,6 @@ class Campaign:
241
241
  get_all = kwargs.get("getAll", False)
242
242
  with_pagination = kwargs.get("withPagination", False)
243
243
  with_files = kwargs.get("withFiles", False)
244
- if get_all:
245
- first = 100
246
244
 
247
245
  self.opencti.app_logger.info(
248
246
  "Listing Campaigns with filters", {"filters": json.dumps(filters)}
@@ -467,7 +467,7 @@ class CaseIncident:
467
467
 
468
468
  """
469
469
  List Case Incident objects
470
-
470
+
471
471
  :param filters: the filters to apply
472
472
  :param search: the search keyword
473
473
  :param first: return the first n rows from the after ID (or the beginning if not set)
@@ -486,8 +486,6 @@ class CaseIncident:
486
486
  get_all = kwargs.get("getAll", False)
487
487
  with_pagination = kwargs.get("withPagination", False)
488
488
  with_files = kwargs.get("withFiles", False)
489
- if get_all:
490
- first = 500
491
489
 
492
490
  self.opencti.app_logger.info(
493
491
  "Listing Case Incidents with filters", {"filters": json.dumps(filters)}
@@ -206,7 +206,7 @@ class CaseRfi:
206
206
  }
207
207
  ... on StixCyberObservable {
208
208
  observable_value
209
- }
209
+ }
210
210
  ... on StixCoreRelationship {
211
211
  standard_id
212
212
  spec_version
@@ -417,7 +417,7 @@ class CaseRfi:
417
417
  }
418
418
  ... on StixCyberObservable {
419
419
  observable_value
420
- }
420
+ }
421
421
  ... on StixCoreRelationship {
422
422
  standard_id
423
423
  spec_version
@@ -465,7 +465,7 @@ class CaseRfi:
465
465
 
466
466
  """
467
467
  List Case Rfi objects
468
-
468
+
469
469
  :param filters: the filters to apply
470
470
  :param search: the search keyword
471
471
  :param first: return the first n rows from the after ID (or the beginning if not set)
@@ -484,8 +484,6 @@ class CaseRfi:
484
484
  get_all = kwargs.get("getAll", False)
485
485
  with_pagination = kwargs.get("withPagination", False)
486
486
  with_files = kwargs.get("withFiles", False)
487
- if get_all:
488
- first = 500
489
487
 
490
488
  self.opencti.app_logger.info(
491
489
  "Listing Case Rfis with filters", {"filters": json.dumps(filters)}
@@ -206,7 +206,7 @@ class CaseRft:
206
206
  }
207
207
  ... on StixCyberObservable {
208
208
  observable_value
209
- }
209
+ }
210
210
  ... on StixCoreRelationship {
211
211
  standard_id
212
212
  spec_version
@@ -417,7 +417,7 @@ class CaseRft:
417
417
  }
418
418
  ... on StixCyberObservable {
419
419
  observable_value
420
- }
420
+ }
421
421
  ... on StixCoreRelationship {
422
422
  standard_id
423
423
  spec_version
@@ -465,7 +465,7 @@ class CaseRft:
465
465
 
466
466
  """
467
467
  List Case Rft objects
468
-
468
+
469
469
  :param filters: the filters to apply
470
470
  :param search: the search keyword
471
471
  :param first: return the first n rows from the after ID (or the beginning if not set)
@@ -484,8 +484,6 @@ class CaseRft:
484
484
  get_all = kwargs.get("getAll", False)
485
485
  with_pagination = kwargs.get("withPagination", False)
486
486
  with_files = kwargs.get("withFiles", False)
487
- if get_all:
488
- first = 500
489
487
  self.opencti.app_logger.info(
490
488
  "Listing Case Rfts with filters", {"filters": json.dumps(filters)}
491
489
  )
@@ -237,8 +237,6 @@ class Channel:
237
237
  get_all = kwargs.get("getAll", False)
238
238
  with_pagination = kwargs.get("withPagination", False)
239
239
  with_files = kwargs.get("withFiles", False)
240
- if get_all:
241
- first = 100
242
240
 
243
241
  self.opencti.app_logger.info(
244
242
  "Listing Channels with filters", {"filters": json.dumps(filters)}
@@ -229,8 +229,6 @@ class CourseOfAction:
229
229
  get_all = kwargs.get("getAll", False)
230
230
  with_pagination = kwargs.get("withPagination", False)
231
231
  with_files = kwargs.get("withFiles", False)
232
- if get_all:
233
- first = 100
234
232
 
235
233
  self.opencti.app_logger.info(
236
234
  "Listing Courses-Of-Action with filters", {"filters": json.dumps(filters)}
@@ -271,8 +271,6 @@ class DataComponent:
271
271
  get_all = kwargs.get("getAll", False)
272
272
  with_pagination = kwargs.get("withPagination", False)
273
273
  with_files = kwargs.get("withFiles", False)
274
- if get_all:
275
- first = 100
276
274
 
277
275
  self.opencti.app_logger.info(
278
276
  "Listing Data-Components with filters", {"filters": json.dumps(filters)}
@@ -229,8 +229,6 @@ class DataSource:
229
229
  get_all = kwargs.get("getAll", False)
230
230
  with_pagination = kwargs.get("withPagination", False)
231
231
  with_files = kwargs.get("withFiles", False)
232
- if get_all:
233
- first = 100
234
232
 
235
233
  self.opencti.app_logger.info(
236
234
  "Listing Data-Sources with filters", {"filters": json.dumps(filters)}
@@ -241,8 +241,6 @@ class Event:
241
241
  get_all = kwargs.get("getAll", False)
242
242
  with_pagination = kwargs.get("withPagination", False)
243
243
  with_files = kwargs.get("withFiles", False)
244
- if get_all:
245
- first = 100
246
244
 
247
245
  self.opencti.app_logger.info(
248
246
  "Listing Events with filters", {"filters": json.dumps(filters)}
@@ -93,8 +93,6 @@ class ExternalReference:
93
93
  get_all = kwargs.get("getAll", False)
94
94
  with_pagination = kwargs.get("withPagination", False)
95
95
  with_files = kwargs.get("withFiles", False)
96
- if get_all:
97
- first = 100
98
96
 
99
97
  self.opencti.app_logger.info(
100
98
  "Listing External-Reference with filters", {"filters": json.dumps(filters)}
@@ -444,8 +444,6 @@ class Feedback:
444
444
  get_all = kwargs.get("getAll", False)
445
445
  with_pagination = kwargs.get("withPagination", False)
446
446
  with_files = kwargs.get("withFiles", False)
447
- if get_all:
448
- first = 500
449
447
 
450
448
  self.opencti.app_logger.info(
451
449
  "Listing Feedbacks with filters", {"filters": json.dumps(filters)}
@@ -434,8 +434,6 @@ class Grouping:
434
434
  get_all = kwargs.get("getAll", False)
435
435
  with_pagination = kwargs.get("withPagination", False)
436
436
  with_files = kwargs.get("withFiles", False)
437
- if get_all:
438
- first = 100
439
437
 
440
438
  self.opencti.app_logger.info(
441
439
  "Listing Groupings with filters", {"filters": json.dumps(filters)}
@@ -258,8 +258,6 @@ class Identity:
258
258
  get_all = kwargs.get("getAll", False)
259
259
  with_pagination = kwargs.get("withPagination", False)
260
260
  with_files = kwargs.get("withFiles", False)
261
- if get_all:
262
- first = 500
263
261
 
264
262
  self.opencti.app_logger.info(
265
263
  "Listing Identities with filters", {"filters": json.dumps(filters)}
@@ -250,8 +250,6 @@ class Incident:
250
250
  get_all = kwargs.get("getAll", False)
251
251
  with_pagination = kwargs.get("withPagination", False)
252
252
  with_files = kwargs.get("withFiles", False)
253
- if get_all:
254
- first = 100
255
253
 
256
254
  self.opencti.app_logger.info(
257
255
  "Listing Incidents with filters", {"filters": json.dumps(filters)}
@@ -270,8 +270,6 @@ class Infrastructure:
270
270
  get_all = kwargs.get("getAll", False)
271
271
  with_pagination = kwargs.get("withPagination", False)
272
272
  with_files = kwargs.get("withFiles", False)
273
- if get_all:
274
- first = 500
275
273
 
276
274
  self.opencti.app_logger.info(
277
275
  "Listing Infrastructures with filters", {"filters": json.dumps(filters)}
@@ -247,8 +247,6 @@ class IntrusionSet:
247
247
  get_all = kwargs.get("getAll", False)
248
248
  with_pagination = kwargs.get("withPagination", False)
249
249
  with_files = kwargs.get("withFiles", False)
250
- if get_all:
251
- first = 500
252
250
 
253
251
  self.opencti.app_logger.info(
254
252
  "Listing Intrusion-Sets with filters", {"filters": json.dumps(filters)}
@@ -48,10 +48,7 @@ class KillChainPhase:
48
48
  order_by = kwargs.get("orderBy", None)
49
49
  order_mode = kwargs.get("orderMode", None)
50
50
  custom_attributes = kwargs.get("customAttributes", None)
51
- get_all = kwargs.get("getAll", False)
52
51
  with_pagination = kwargs.get("withPagination", False)
53
- if get_all:
54
- first = 500
55
52
 
56
53
  self.opencti.app_logger.info(
57
54
  "Listing Kill-Chain-Phase with filters", {"filters": json.dumps(filters)}
@@ -44,8 +44,6 @@ class Label:
44
44
  custom_attributes = kwargs.get("customAttributes", None)
45
45
  get_all = kwargs.get("getAll", False)
46
46
  with_pagination = kwargs.get("withPagination", False)
47
- if get_all:
48
- first = 100
49
47
 
50
48
  self.opencti.app_logger.info(
51
49
  "Listing Labels with filters", {"filters": json.dumps(filters)}
@@ -249,8 +249,6 @@ class Language:
249
249
  get_all = kwargs.get("getAll", False)
250
250
  with_pagination = kwargs.get("withPagination", False)
251
251
  with_files = kwargs.get("withFiles", False)
252
- if get_all:
253
- first = 100
254
252
 
255
253
  self.opencti.app_logger.info(
256
254
  "Listing Languages with filters", {"filters": json.dumps(filters)}
@@ -257,11 +257,8 @@ class Location:
257
257
  order_by = kwargs.get("orderBy", None)
258
258
  order_mode = kwargs.get("orderMode", None)
259
259
  custom_attributes = kwargs.get("customAttributes", None)
260
- get_all = kwargs.get("getAll", False)
261
260
  with_pagination = kwargs.get("withPagination", False)
262
261
  with_files = kwargs.get("withFiles", False)
263
- if get_all:
264
- first = 500
265
262
 
266
263
  self.opencti.app_logger.info(
267
264
  "Listing Locations with filters", {"filters": json.dumps(filters)}
@@ -275,8 +275,6 @@ class Malware:
275
275
  get_all = kwargs.get("getAll", False)
276
276
  with_pagination = kwargs.get("withPagination", False)
277
277
  with_files = kwargs.get("withFiles", False)
278
- if get_all:
279
- first = 500
280
278
 
281
279
  self.opencti.app_logger.info(
282
280
  "Listing Malwares with filters", {"filters": json.dumps(filters)}
@@ -255,8 +255,6 @@ class MalwareAnalysis:
255
255
  get_all = kwargs.get("getAll", False)
256
256
  with_pagination = kwargs.get("withPagination", False)
257
257
  with_files = kwargs.get("withFiles", False)
258
- if get_all:
259
- first = 500
260
258
 
261
259
  self.opencti.app_logger.info(
262
260
  "Listing Malware analyses with filters", {"filters": json.dumps(filters)}
@@ -66,10 +66,7 @@ class MarkingDefinition:
66
66
  order_by = kwargs.get("orderBy", None)
67
67
  order_mode = kwargs.get("orderMode", None)
68
68
  custom_attributes = kwargs.get("customAttributes", None)
69
- get_all = kwargs.get("getAll", False)
70
69
  with_pagination = kwargs.get("withPagination", False)
71
- if get_all:
72
- first = 500
73
70
 
74
71
  self.opencti.app_logger.info(
75
72
  "Listing Marking-Definitions with filters", {"filters": json.dumps(filters)}
@@ -227,8 +227,6 @@ class Narrative:
227
227
  get_all = kwargs.get("getAll", False)
228
228
  with_pagination = kwargs.get("withPagination", False)
229
229
  with_files = kwargs.get("withFiles", False)
230
- if get_all:
231
- first = 100
232
230
 
233
231
  self.opencti.app_logger.info(
234
232
  "Listing Narratives with filters", {"filters": json.dumps(filters)}
@@ -473,8 +473,6 @@ class Note:
473
473
  get_all = kwargs.get("getAll", False)
474
474
  with_pagination = kwargs.get("withPagination", False)
475
475
  with_files = kwargs.get("withFiles", False)
476
- if get_all:
477
- first = 100
478
476
 
479
477
  self.opencti.app_logger.info(
480
478
  "Listing Notes with filters", {"filters": json.dumps(filters)}
@@ -190,7 +190,7 @@ class ObservedData:
190
190
  }
191
191
  ... on StixCyberObservable {
192
192
  observable_value
193
- }
193
+ }
194
194
  ... on StixCoreRelationship {
195
195
  standard_id
196
196
  spec_version
@@ -202,7 +202,7 @@ class ObservedData:
202
202
  spec_version
203
203
  created_at
204
204
  updated_at
205
- }
205
+ }
206
206
  }
207
207
  }
208
208
  }
@@ -401,7 +401,7 @@ class ObservedData:
401
401
  }
402
402
  ... on StixCyberObservable {
403
403
  observable_value
404
- }
404
+ }
405
405
  ... on StixCoreRelationship {
406
406
  standard_id
407
407
  spec_version
@@ -413,7 +413,7 @@ class ObservedData:
413
413
  spec_version
414
414
  created_at
415
415
  updated_at
416
- }
416
+ }
417
417
  }
418
418
  }
419
419
  }
@@ -461,11 +461,8 @@ class ObservedData:
461
461
  order_by = kwargs.get("orderBy", None)
462
462
  order_mode = kwargs.get("orderMode", None)
463
463
  custom_attributes = kwargs.get("customAttributes", None)
464
- get_all = kwargs.get("getAll", False)
465
464
  with_pagination = kwargs.get("withPagination", False)
466
465
  with_files = kwargs.get("withFiles", False)
467
- if get_all:
468
- first = 500
469
466
 
470
467
  self.opencti.app_logger.info(
471
468
  "Listing ObservedDatas with filters", {"filters": json.dumps(filters)}
@@ -250,8 +250,6 @@ class Opinion:
250
250
  custom_attributes = kwargs.get("customAttributes", None)
251
251
  get_all = kwargs.get("getAll", False)
252
252
  with_pagination = kwargs.get("withPagination", False)
253
- if get_all:
254
- first = 100
255
253
 
256
254
  self.opencti.app_logger.info(
257
255
  "Listing Opinions with filters", {"filters": json.dumps(filters)}
@@ -504,8 +504,6 @@ class Report:
504
504
  get_all = kwargs.get("getAll", False)
505
505
  with_pagination = kwargs.get("withPagination", False)
506
506
  with_files = kwargs.get("withFiles", False)
507
- if get_all:
508
- first = 100
509
507
 
510
508
  self.opencti.app_logger.info(
511
509
  "Listing Reports with filters",
@@ -1340,8 +1340,6 @@ class StixCoreObject:
1340
1340
  get_all = kwargs.get("getAll", False)
1341
1341
  with_pagination = kwargs.get("withPagination", False)
1342
1342
  with_files = kwargs.get("withFiles", False)
1343
- if get_all:
1344
- first = 100
1345
1343
 
1346
1344
  self.opencti.app_logger.info(
1347
1345
  "Listing Stix-Core-Objects with filters", {"filters": json.dumps(filters)}
@@ -408,8 +408,6 @@ class StixCoreRelationship:
408
408
  get_all = kwargs.get("getAll", False)
409
409
  with_pagination = kwargs.get("withPagination", False)
410
410
  search = kwargs.get("search", None)
411
- if get_all:
412
- first = 100
413
411
 
414
412
  self.opencti.app_logger.info(
415
413
  "Listing stix_core_relationships",
@@ -48,9 +48,6 @@ class StixCyberObservable(StixCyberObservableDeprecatedMixin):
48
48
  with_pagination = kwargs.get("withPagination", False)
49
49
  with_files = kwargs.get("withFiles", False)
50
50
 
51
- if get_all:
52
- first = 100
53
-
54
51
  self.opencti.app_logger.info(
55
52
  "Listing StixCyberObservables with filters",
56
53
  {"filters": json.dumps(filters)},
@@ -1030,8 +1030,6 @@ class StixDomainObject:
1030
1030
  get_all = kwargs.get("getAll", False)
1031
1031
  with_pagination = kwargs.get("withPagination", False)
1032
1032
  with_files = kwargs.get("withFiles", False)
1033
- if get_all:
1034
- first = 100
1035
1033
 
1036
1034
  self.opencti.app_logger.info(
1037
1035
  "Listing Stix-Domain-Objects with filters", {"filters": json.dumps(filters)}
@@ -24,13 +24,13 @@ class StixNestedRefRelationship:
24
24
  standard_id
25
25
  entity_type
26
26
  parent_types
27
- }
27
+ }
28
28
  ... on StixSightingRelationship {
29
29
  id
30
30
  standard_id
31
31
  entity_type
32
32
  parent_types
33
- }
33
+ }
34
34
  ... on StixCyberObservable {
35
35
  observable_value
36
36
  }
@@ -47,13 +47,13 @@ class StixNestedRefRelationship:
47
47
  standard_id
48
48
  entity_type
49
49
  parent_types
50
- }
50
+ }
51
51
  ... on StixSightingRelationship {
52
52
  id
53
53
  standard_id
54
54
  entity_type
55
55
  parent_types
56
- }
56
+ }
57
57
  ... on StixCyberObservable {
58
58
  observable_value
59
59
  }
@@ -92,10 +92,7 @@ class StixNestedRefRelationship:
92
92
  order_by = kwargs.get("orderBy", None)
93
93
  order_mode = kwargs.get("orderMode", None)
94
94
  custom_attributes = kwargs.get("customAttributes", None)
95
- get_all = kwargs.get("getAll", False)
96
95
  with_pagination = kwargs.get("withPagination", False)
97
- if get_all:
98
- first = 500
99
96
 
100
97
  self.opencti.app_logger.info(
101
98
  "Listing stix_nested_ref_relationships",
@@ -340,8 +340,6 @@ class StixSightingRelationship:
340
340
  get_all = kwargs.get("getAll", False)
341
341
  with_pagination = kwargs.get("withPagination", False)
342
342
  search = kwargs.get("search", None)
343
- if get_all:
344
- first = 100
345
343
 
346
344
  self.opencti.app_logger.info(
347
345
  "Listing stix_sighting with {type: stix_sighting}",
@@ -257,8 +257,6 @@ class Task:
257
257
  custom_attributes = kwargs.get("customAttributes", None)
258
258
  get_all = kwargs.get("getAll", False)
259
259
  with_pagination = kwargs.get("withPagination", False)
260
- if get_all:
261
- first = 500
262
260
 
263
261
  self.opencti.app_logger.info(
264
262
  "Listing Tasks with filters", {"filters": json.dumps(filters)}
@@ -168,7 +168,6 @@ class ThreatActor:
168
168
  :param str after: (optional) OpenCTI object ID of the first row for pagination
169
169
  :param str orderBy: (optional) the field to order the response on
170
170
  :param bool orderMode: (optional) either "`asc`" or "`desc`"
171
- :param bool getAll: (optional) switch to return all entries (be careful to use this without any other filters)
172
171
  :param bool withPagination: (optional) switch to use pagination
173
172
  """
174
173
 
@@ -179,10 +178,7 @@ class ThreatActor:
179
178
  order_by = kwargs.get("orderBy", None)
180
179
  order_mode = kwargs.get("orderMode", None)
181
180
  custom_attributes = kwargs.get("customAttributes", None)
182
- get_all = kwargs.get("getAll", False)
183
181
  with_pagination = kwargs.get("withPagination", False)
184
- if get_all:
185
- first = 500
186
182
 
187
183
  self.opencti.app_logger.info(
188
184
  "Listing Threat-Actors with filters", {"filters": json.dumps(filters)}
@@ -161,7 +161,6 @@ class ThreatActorGroup:
161
161
  :param str after: (optional) OpenCTI object ID of the first row for pagination
162
162
  :param str orderBy: (optional) the field to order the response on
163
163
  :param bool orderMode: (optional) either "`asc`" or "`desc`"
164
- :param bool getAll: (optional) switch to return all entries (be careful to use this without any other filters)
165
164
  :param bool withPagination: (optional) switch to use pagination
166
165
  """
167
166
 
@@ -172,10 +171,7 @@ class ThreatActorGroup:
172
171
  order_by = kwargs.get("orderBy", None)
173
172
  order_mode = kwargs.get("orderMode", None)
174
173
  custom_attributes = kwargs.get("customAttributes", None)
175
- get_all = kwargs.get("getAll", False)
176
174
  with_pagination = kwargs.get("withPagination", False)
177
- if get_all:
178
- first = 500
179
175
 
180
176
  self.opencti.app_logger.info(
181
177
  "Listing Threat-Actors-Group with filters", {"filters": json.dumps(filters)}
@@ -161,7 +161,6 @@ class ThreatActorIndividual:
161
161
  :param str after: (optional) OpenCTI object ID of the first row for pagination
162
162
  :param str orderBy: (optional) the field to order the response on
163
163
  :param bool orderMode: (optional) either "`asc`" or "`desc`"
164
- :param bool getAll: (optional) switch to return all entries (be careful to use this without any other filters)
165
164
  :param bool withPagination: (optional) switch to use pagination
166
165
  """
167
166
 
@@ -172,10 +171,7 @@ class ThreatActorIndividual:
172
171
  order_by = kwargs.get("orderBy", None)
173
172
  order_mode = kwargs.get("orderMode", None)
174
173
  custom_attributes = kwargs.get("customAttributes", None)
175
- get_all = kwargs.get("getAll", False)
176
174
  with_pagination = kwargs.get("withPagination", False)
177
- if get_all:
178
- first = 500
179
175
 
180
176
  self.opencti.app_logger.info(
181
177
  "Listing Threat-Actors-Individual with filters",
@@ -158,8 +158,6 @@ class Tool:
158
158
  custom_attributes = kwargs.get("customAttributes", None)
159
159
  get_all = kwargs.get("getAll", False)
160
160
  with_pagination = kwargs.get("withPagination", False)
161
- if get_all:
162
- first = 100
163
161
 
164
162
  self.opencti.app_logger.info(
165
163
  "Listing Tools with filters", {"filters": json.dumps(filters)}
@@ -155,8 +155,6 @@ class Vulnerability:
155
155
  custom_attributes = kwargs.get("customAttributes", None)
156
156
  get_all = kwargs.get("getAll", False)
157
157
  with_pagination = kwargs.get("withPagination", False)
158
- if get_all:
159
- first = 100
160
158
 
161
159
  self.opencti.app_logger.info(
162
160
  "Listing Vulnerabilities with filters", {"filters": json.dumps(filters)}
@@ -1,5 +1,5 @@
1
- import datetime
2
1
  import logging
2
+ from datetime import datetime, timezone
3
3
 
4
4
  from pythonjsonlogger import jsonlogger
5
5
 
@@ -9,8 +9,8 @@ class CustomJsonFormatter(jsonlogger.JsonFormatter):
9
9
  super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
10
10
  if not log_record.get("timestamp"):
11
11
  # This doesn't use record.created, so it is slightly off
12
- now = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ")
13
- log_record["timestamp"] = now
12
+ now = datetime.now(tz=timezone.utc)
13
+ log_record["timestamp"] = now.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
14
14
  if log_record.get("level"):
15
15
  log_record["level"] = log_record["level"].upper()
16
16
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycti
3
- Version: 6.5.1
3
+ Version: 6.5.3
4
4
  Summary: Python API client for OpenCTI.
5
5
  Home-page: https://github.com/OpenCTI-Platform/client-python
6
6
  Author: Filigran
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
24
  Requires-Dist: datefinder~=0.7.3
25
25
  Requires-Dist: pika~=1.3.0
26
- Requires-Dist: pydantic~=2.10.4
26
+ Requires-Dist: pydantic<2.11.0,>=2.8.2
27
27
  Requires-Dist: python-magic~=0.4.27; sys_platform == "linux" or sys_platform == "darwin"
28
28
  Requires-Dist: python-magic-bin~=0.4.14; sys_platform == "win32"
29
29
  Requires-Dist: python_json_logger~=2.0.4
@@ -32,16 +32,16 @@ Requires-Dist: requests~=2.32.2
32
32
  Requires-Dist: setuptools~=71.1.0
33
33
  Requires-Dist: cachetools~=5.5.0
34
34
  Requires-Dist: prometheus-client~=0.21.1
35
- Requires-Dist: opentelemetry-api~=1.22.0
36
- Requires-Dist: opentelemetry-sdk~=1.22.0
35
+ Requires-Dist: opentelemetry-api<=1.30.0,>=1.22.0
36
+ Requires-Dist: opentelemetry-sdk<=1.30.0,>=1.22.0
37
37
  Requires-Dist: deprecation~=2.1.0
38
38
  Requires-Dist: filigran-sseclient>=1.0.2
39
39
  Requires-Dist: stix2~=3.0.1
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"
43
- Requires-Dist: isort~=5.13.0; extra == "dev"
44
- Requires-Dist: types-pytz~=2024.2.0.20241221; extra == "dev"
43
+ Requires-Dist: isort~=6.0.0; extra == "dev"
44
+ Requires-Dist: types-pytz~=2025.1.0.20250204; extra == "dev"
45
45
  Requires-Dist: pre-commit~=3.8.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"
@@ -0,0 +1,74 @@
1
+ pycti/__init__.py,sha256=gFIAyITucXs9B2UYyjuwCbbSPJtseEVYqbXLKUcYnUs,5218
2
+ pycti/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ pycti/api/opencti_api_client.py,sha256=6TKvtgAk0iYQL2RaLTUV6cxCBefEgwmlL_iVHgzf_ow,32745
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=qIRJMCfyC9odXf7LMRg9ImYizqF2WHUOU7Ty5IUFGg8,8351
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=ee8Ej43Ox9W7G44PEfHNGZuU_NmBVNl7dE3V3BzE4sE,81286
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=QXJaMMZlnVCxxHGZNGSKPLmHL3TgM08aUIS8SypmIek,22193
13
+ pycti/entities/opencti_campaign.py,sha256=y2kk95eQxRyE3iu1FJ-RV_hEWCg_XDUgYuWbAyakRx0,17745
14
+ pycti/entities/opencti_case_incident.py,sha256=6duPTxOPkwRlygH_lF7f34cNe7oOn929w0f48lBu1ag,34397
15
+ pycti/entities/opencti_case_rfi.py,sha256=v8n2iHFeTZE87tTWtrVyamlUGzZZxWym5upFyaxaFUM,34055
16
+ pycti/entities/opencti_case_rft.py,sha256=yV9fqNa9juLocJtOtylLM_Nuj4dPSWkTjEmT_89szbY,34946
17
+ pycti/entities/opencti_channel.py,sha256=JPVy-DYcQnyxpySaX9xP8LkXmD6WZxEEnbJDfYVTlWY,16669
18
+ pycti/entities/opencti_course_of_action.py,sha256=BFxnt55QWjq88fKxAuH0nv0TFIAS4uPtotmSPMH2PfY,18653
19
+ pycti/entities/opencti_data_component.py,sha256=cdFxleWYBRxiLBTqklNHJIBIid8YPGJ0FDHBr-7LgEI,19225
20
+ pycti/entities/opencti_data_source.py,sha256=abXeSHtBeaViuCqh5sZRZ6PZ_QchPBfUev0tvRKRpkw,18110
21
+ pycti/entities/opencti_event.py,sha256=owGBWodcYFfurAq1LxaTSj3JIMXbdvFG4cr-joy-nak,16765
22
+ pycti/entities/opencti_external_reference.py,sha256=zSsGOUajrTgSG9T0MHUzq-16XalJ0BHHC54RvBaTD48,13524
23
+ pycti/entities/opencti_feedback.py,sha256=Duu3oXiQcTbJ6Tyk7k8wWt0wTK0U1Dtow1Hhht7tZeo,32376
24
+ pycti/entities/opencti_grouping.py,sha256=WPLIt3dB4jMFkai4sDxaUq27VxjouOP1FT6LJQ8td2E,30235
25
+ pycti/entities/opencti_identity.py,sha256=trQsvyzc2kIoZcZQn5GMQmutCNt7qRt39twg1EmWD2o,23759
26
+ pycti/entities/opencti_incident.py,sha256=OFWUX1mtQ2lM2f15DU6FlriTZ9bXkb3Ql7oLCVLEmFk,18632
27
+ pycti/entities/opencti_indicator.py,sha256=YL--rUsSy-7YGyE9eeT8jexg_pouBH-6SgNob901M8Y,20908
28
+ pycti/entities/opencti_infrastructure.py,sha256=TXnofpQskioYSKAhVzH5bj17aWk2y7rsmlG57uhoxK4,19997
29
+ pycti/entities/opencti_intrusion_set.py,sha256=2vIk2jfvrTL8H83UkpdpHwax_DYhO4lUAAlz_Ec1N3k,19023
30
+ pycti/entities/opencti_kill_chain_phase.py,sha256=acNzuFdxhwI_8fvZOTEHhP8fC6EGY_r6jcKpA-nKa8Q,7991
31
+ pycti/entities/opencti_label.py,sha256=vB6Qf6isxWBgFS8-lsPE_Zb56qsrt9JyPlB2TUcHuKA,8756
32
+ pycti/entities/opencti_language.py,sha256=yViPa5qJ9lC_Cd8_iYVdmiNsK42DCeStnCgJ1NclaqQ,16238
33
+ pycti/entities/opencti_location.py,sha256=NmUQR1C-w--nBMON0FMpLkC_TDGYKdrmulQJffQ-W0Q,18305
34
+ pycti/entities/opencti_malware.py,sha256=hK7gjUDwb3c0XyBisQTP3bZXTXRp24AXM-HgvrjZgn4,20416
35
+ pycti/entities/opencti_malware_analysis.py,sha256=sHGDTiY2xSNtSyI1Wej3QlwU_fmx9-nTXUMpx-5K7sk,21754
36
+ pycti/entities/opencti_marking_definition.py,sha256=JYNodKOe94a22NbNf8YNI3xhh2q-D-5JuohLMM1njlE,13695
37
+ pycti/entities/opencti_narrative.py,sha256=udkZK0ezfBoX0T0zmTsRgA3-3oYGvZZURAPUuKInU6E,17107
38
+ pycti/entities/opencti_note.py,sha256=QHmA-067V1kXdgWpQD3m_GtSyv7Y5d-MqpQ-PIur7Og,30732
39
+ pycti/entities/opencti_observed_data.py,sha256=va8frxFZfHVGR6vgmcZpB8blATmQ-zXhy4bQEsfwAp8,31043
40
+ pycti/entities/opencti_opinion.py,sha256=SHD6oepJYF7dS5yorbaEilRdnasWmjDGcnAxHZnGdfk,22459
41
+ pycti/entities/opencti_report.py,sha256=LY2wB6zcdchBD8URYoNqGWENMqnalOrmxoNKz306EDM,35303
42
+ pycti/entities/opencti_stix.py,sha256=uMheSg8i1f2Ozx2Mk0iShWzHHjj6MMWDtV5nDjVxKEE,2275
43
+ pycti/entities/opencti_stix_core_object.py,sha256=eyhsNAWaQO5X55Wn91b21j_d6bydBxfN29s2eQHrXkI,51639
44
+ pycti/entities/opencti_stix_core_relationship.py,sha256=Ab3jJhhpmGFSTA4GaC11XoAsuUnujDCc8zSvwRUEwiQ,44742
45
+ pycti/entities/opencti_stix_cyber_observable.py,sha256=W_vs-VmO7HMVu7kGcL9NPuHXhioCeEwDJRBB8Q3XsBI,92049
46
+ pycti/entities/opencti_stix_domain_object.py,sha256=-7Dec8kTqeJA_sr1KrRohgQzitOC51dOd4035EXRALw,78850
47
+ pycti/entities/opencti_stix_nested_ref_relationship.py,sha256=7USJlfTanPFY16aFIH2YONdRakrfoBuIbB0d0I52PSM,12479
48
+ pycti/entities/opencti_stix_object_or_stix_relationship.py,sha256=5qutzML6SyYzDhZ-QpI9Vh23hzLEs-xeFAAZOpGHZ2g,18049
49
+ pycti/entities/opencti_stix_sighting_relationship.py,sha256=PO4RK3UBkA2b_xcqjiqWnLSKgvaQy291al_yunQ96h4,28736
50
+ pycti/entities/opencti_task.py,sha256=rYfiUKtsSEq8A-Qa2wi7QBias1oiiHsaq3g_aLcWgl0,25290
51
+ pycti/entities/opencti_threat_actor.py,sha256=Fk33LU8lsCP0SMMaA0SkT7fLZLmjddMi_-9PUJToDuM,10156
52
+ pycti/entities/opencti_threat_actor_group.py,sha256=DuLT4DlAEtS7yQVbkFcAbPcyWsrdwYX5XBevsVuprxY,19515
53
+ pycti/entities/opencti_threat_actor_individual.py,sha256=IhfsRBXvR73fwUQ5JYZ2GsRHuzVb92l6JaKvaqTdKp0,19767
54
+ pycti/entities/opencti_tool.py,sha256=YbOp0Ur5Do7ToLzfIKGX-MtlBQf-Dt9Qtgk1lI9Q7aU,15295
55
+ pycti/entities/opencti_vocabulary.py,sha256=xupdHJ6TznCmvI3sVYU261SnfblSNc1nwg19MG9yrao,6499
56
+ pycti/entities/opencti_vulnerability.py,sha256=ssMH7EB7WC--Nv2bq-D-_wLBGXMgP3ZLK-X8SslpVJQ,22614
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=q-2G6OOqvUC1U2hSKxD8uT5T18M_IDkl72Tn1KoumQI,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=BHNy9fJuTUTn_JEYSCmyvVwd6y-9ZJKxO40mY4iZ0bc,2226
65
+ pycti/utils/opencti_stix2.py,sha256=pUx1Oglb1EnREheMzmJBrmRS17vGnZzF8PCmB-pjNM0,117680
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.5.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
71
+ pycti-6.5.3.dist-info/METADATA,sha256=_wJQlaIzlrzMj0sFHIqd3yOVbzutOVMIhFWaonbqpXY,5443
72
+ pycti-6.5.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
73
+ pycti-6.5.3.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
74
+ pycti-6.5.3.dist-info/RECORD,,
@@ -1,74 +0,0 @@
1
- pycti/__init__.py,sha256=EDjdNBXpv2xU_AQbYOiHSi_MofEgIVd8wu2Da6VISF8,5218
2
- pycti/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- pycti/api/opencti_api_client.py,sha256=OBXRNBbkYsbgqjxeY5iltHXIDeWqpFN3-SKsinkr66U,32402
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=qIRJMCfyC9odXf7LMRg9ImYizqF2WHUOU7Ty5IUFGg8,8351
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=Az_scgGMBsZ5_m6_DNsKL84pWgJbD_Lksa2CkWkWipg,80772
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=1nEOSO9KkahekMDlPsqo4Tsh9xpNQmNx3zw8sOAH-4Y,34449
15
- pycti/entities/opencti_case_rfi.py,sha256=eXxq26qRQvE4KAMaXllRmVrST88eOpLIhQ2WLeeaXCY,34155
16
- pycti/entities/opencti_case_rft.py,sha256=wMwIFeOaU0XJ07P5Lv4qjbHcyHv532Si36XQZ1n9obc,35046
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=YL--rUsSy-7YGyE9eeT8jexg_pouBH-6SgNob901M8Y,20908
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=zYrlmf83xQgh7dkH2y0v0XdFDw9HY9O7l6zGip2O4Jg,13785
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=s1vmv1HBuyC9i8ujruMZ5kBDKXuCtf19_0IVTKoBS9Q,25334
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=q-2G6OOqvUC1U2hSKxD8uT5T18M_IDkl72Tn1KoumQI,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=pUx1Oglb1EnREheMzmJBrmRS17vGnZzF8PCmB-pjNM0,117680
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.5.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
71
- pycti-6.5.1.dist-info/METADATA,sha256=MAlkjZwkBgaOT5zmyFolpyg3y_eYxFlIx-7ngO-l9Dk,5419
72
- pycti-6.5.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
73
- pycti-6.5.1.dist-info/top_level.txt,sha256=cqEpxitAhHP4VgSA6xmrak6Yk9MeBkwoMTB6k7d2ZnE,6
74
- pycti-6.5.1.dist-info/RECORD,,
File without changes
File without changes