prelude-sdk-beta 1447__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.
@@ -0,0 +1,654 @@
1
+ import logging
2
+
3
+ from enum import Enum, EnumMeta
4
+
5
+
6
+ class MissingItem(EnumMeta):
7
+ def __getitem__(cls, name):
8
+ try:
9
+ return super().__getitem__(name.upper())
10
+ except (AttributeError, KeyError):
11
+ try:
12
+ return cls(int(name))
13
+ except ValueError:
14
+ return cls(name)
15
+
16
+
17
+ class RunCode(Enum, metaclass=MissingItem):
18
+ INVALID = -1
19
+ DAILY = 1
20
+ WEEKLY = 2
21
+ MONTHLY = 3
22
+ SMART = 4
23
+ DEBUG = 5
24
+ RUN_ONCE = 6
25
+ MONDAY = 10
26
+ TUESDAY = 11
27
+ WEDNESDAY = 12
28
+ THURSDAY = 13
29
+ FRIDAY = 14
30
+ SATURDAY = 15
31
+ SUNDAY = 16
32
+ MONTH_1 = 20
33
+
34
+ @classmethod
35
+ def _missing_(cls, value):
36
+ return RunCode.DAILY
37
+
38
+
39
+ class Mode(Enum, metaclass=MissingItem):
40
+ MANUAL = 0
41
+ FROZEN = 1
42
+ AUTOPILOT = 2
43
+
44
+ @classmethod
45
+ def _missing_(cls, value):
46
+ return Mode.MANUAL
47
+
48
+
49
+ class Permission(Enum, metaclass=MissingItem):
50
+ INVALID = -1
51
+ ADMIN = 0
52
+ EXECUTIVE = 1
53
+ BUILD = 2
54
+ SERVICE = 3
55
+ SUPPORT = 5
56
+
57
+ @classmethod
58
+ def _missing_(cls, value):
59
+ return Permission.INVALID
60
+
61
+
62
+ class ExitCode(Enum):
63
+ MISSING = -1
64
+ UNKNOWN_ERROR = 1
65
+ MALFORMED_TEST = 2
66
+ UNREPORTED = 3
67
+ PROCESS_BLOCKED = 9
68
+ PROCESS_BLOCKED_GRACEFULLY = 15
69
+ PROTECTED = 100
70
+ UNPROTECTED = 101
71
+ TIMED_OUT = 102
72
+ FAILED_CLEANUP = 103
73
+ TEST_NOT_RELEVANT = 104
74
+ DYNAMIC_QUARANTINE = 105
75
+ BLOCKED_AT_PERIMETER = 106
76
+ EXPLOIT_PREVENTED = 107
77
+ ENDPOINT_NOT_RELEVANT = 108
78
+ INSUFFICIENT_PRIVILEGES = 109
79
+ INCORRECTLY_BLOCKED = 110
80
+ PREVENTED_EXECUTION = 126
81
+ STATIC_QUARANTINE = 127
82
+ BLOCKED = 137
83
+ UNEXPECTED_ERROR = 256
84
+
85
+ @classmethod
86
+ def _missing_(cls, value):
87
+ if value and not isinstance(value, int):
88
+ return cls(int(value))
89
+ logging.warning("Unknown ExitCode: %s", str(value))
90
+ return ExitCode.MISSING
91
+
92
+ @property
93
+ def state(self):
94
+ for k, v in State.mapping().items():
95
+ if self in v:
96
+ return k
97
+ return State.NONE
98
+
99
+
100
+ class State(Enum):
101
+ NONE = 0
102
+ PROTECTED = 1
103
+ UNPROTECTED = 2
104
+ ERROR = 3
105
+ NOT_RELEVANT = 4
106
+
107
+ @classmethod
108
+ def mapping(cls):
109
+ return {
110
+ State.ERROR: [
111
+ ExitCode.FAILED_CLEANUP,
112
+ ExitCode.INCORRECTLY_BLOCKED,
113
+ ExitCode.MALFORMED_TEST,
114
+ ExitCode.TIMED_OUT,
115
+ ExitCode.UNEXPECTED_ERROR,
116
+ ExitCode.UNKNOWN_ERROR,
117
+ ExitCode.UNREPORTED,
118
+ ],
119
+ State.NONE: [ExitCode.MISSING],
120
+ State.NOT_RELEVANT: [
121
+ ExitCode.ENDPOINT_NOT_RELEVANT,
122
+ ExitCode.INSUFFICIENT_PRIVILEGES,
123
+ ExitCode.TEST_NOT_RELEVANT,
124
+ ],
125
+ State.PROTECTED: [
126
+ ExitCode.BLOCKED,
127
+ ExitCode.BLOCKED_AT_PERIMETER,
128
+ ExitCode.DYNAMIC_QUARANTINE,
129
+ ExitCode.EXPLOIT_PREVENTED,
130
+ ExitCode.PREVENTED_EXECUTION,
131
+ ExitCode.PROCESS_BLOCKED,
132
+ ExitCode.PROCESS_BLOCKED_GRACEFULLY,
133
+ ExitCode.PROTECTED,
134
+ ExitCode.STATIC_QUARANTINE,
135
+ ],
136
+ State.UNPROTECTED: [
137
+ ExitCode.UNPROTECTED,
138
+ ],
139
+ }
140
+
141
+
142
+ class DOS(Enum):
143
+ none = "none"
144
+ arm64 = "arm64"
145
+ x86_64 = "x86_64"
146
+ aarch64 = "arm64"
147
+ amd64 = "x86_64"
148
+ x86 = "x86_64"
149
+
150
+ @classmethod
151
+ def normalize(cls, dos: str):
152
+ try:
153
+ arch = dos.split("-", 1)[-1]
154
+ return dos[: -len(arch)].lower() + cls[arch.lower()].value
155
+ except (KeyError, IndexError, AttributeError):
156
+ return cls.none.value
157
+
158
+
159
+ class Control(Enum, metaclass=MissingItem):
160
+ INVALID = -1
161
+ NONE = 0
162
+ CROWDSTRIKE = 1
163
+ DEFENDER = 2
164
+ SPLUNK = 3
165
+ SENTINELONE = 4
166
+ VECTR = 5
167
+ S3 = 6
168
+ INTUNE = 7
169
+ SERVICENOW = 8
170
+ OKTA = 9
171
+ M365 = 10
172
+ ENTRA = 11
173
+ JAMF = 12
174
+ GMAIL = 14
175
+ GOOGLE_IDENTITY = 15
176
+ DEFENDER_DISCOVERY = 16
177
+ TENABLE = 17
178
+ EC2 = 18
179
+ AWS_SSM = 19
180
+ AZURE_VM = 20
181
+ GITHUB = 21
182
+ TENABLE_DISCOVERY = 22
183
+ QUALYS = 23
184
+ QUALYS_DISCOVERY = 24
185
+ RAPID7 = 25
186
+ RAPID7_DISCOVERY = 26
187
+ INTEL_INTUNE = 28
188
+ CISCO_MERAKI = 29
189
+ CISCO_MERAKI_IDENTITY = 30
190
+
191
+ @classmethod
192
+ def _missing_(cls, value):
193
+ return Control.INVALID
194
+
195
+ @property
196
+ def control_category(self):
197
+ for k, v in ControlCategory.mapping().items():
198
+ if self in v:
199
+ return k
200
+ return ControlCategory.NONE
201
+
202
+ @property
203
+ def scm_category(self):
204
+ for k, v in SCMCategory.control_mapping().items():
205
+ if self in v:
206
+ return k
207
+ return SCMCategory.NONE
208
+
209
+ @property
210
+ def parent(self):
211
+ match self:
212
+ case Control.CISCO_MERAKI_IDENTITY:
213
+ return Control.CISCO_MERAKI
214
+ case Control.DEFENDER_DISCOVERY:
215
+ return Control.DEFENDER
216
+ case Control.QUALYS_DISCOVERY:
217
+ return Control.QUALYS
218
+ case Control.RAPID7_DISCOVERY:
219
+ return Control.RAPID7
220
+ case Control.TENABLE_DISCOVERY:
221
+ return Control.TENABLE
222
+
223
+ @property
224
+ def children(self):
225
+ match self:
226
+ case Control.CISCO_MERAKI:
227
+ return [Control.CISCO_MERAKI_IDENTITY]
228
+ case Control.DEFENDER:
229
+ return [Control.DEFENDER_DISCOVERY]
230
+ case Control.QUALYS:
231
+ return [Control.QUALYS_DISCOVERY]
232
+ case Control.RAPID7:
233
+ return [Control.RAPID7_DISCOVERY]
234
+ case Control.TENABLE:
235
+ return [Control.TENABLE_DISCOVERY]
236
+ case _:
237
+ return []
238
+
239
+ @property
240
+ def display_name(self):
241
+ match self:
242
+ case Control.CROWDSTRIKE:
243
+ return "CrowdStrike"
244
+ case Control.DEFENDER:
245
+ return "Microsoft Defender"
246
+ case Control.SPLUNK:
247
+ return "Splunk"
248
+ case Control.SENTINELONE:
249
+ return "SentinelOne"
250
+ case Control.VECTR:
251
+ return "VECTR"
252
+ case Control.S3:
253
+ return "Amazon S3"
254
+ case Control.INTUNE:
255
+ return "Microsoft Intune"
256
+ case Control.SERVICENOW:
257
+ return "ServiceNow"
258
+ case Control.OKTA:
259
+ return "Okta"
260
+ case Control.M365:
261
+ return "Microsoft 365"
262
+ case Control.ENTRA:
263
+ return "Microsoft Entra ID"
264
+ case Control.JAMF:
265
+ return "Jamf"
266
+ case Control.GMAIL:
267
+ return "Gmail"
268
+ case Control.GOOGLE_IDENTITY:
269
+ return "Google Cloud Identity Platform"
270
+ case Control.DEFENDER_DISCOVERY:
271
+ return "Microsoft Defender Discovery"
272
+ case Control.TENABLE:
273
+ return "Tenable"
274
+ case Control.EC2:
275
+ return "Amazon EC2"
276
+ case Control.AWS_SSM:
277
+ return "Amazon SSM"
278
+ case Control.AZURE_VM:
279
+ return "Azure VM"
280
+ case Control.GITHUB:
281
+ return "GitHub"
282
+ case Control.TENABLE_DISCOVERY:
283
+ return "Tenable Discovery"
284
+ case Control.QUALYS:
285
+ return "Qualys"
286
+ case Control.QUALYS_DISCOVERY:
287
+ return "Qualys Discovery"
288
+ case Control.RAPID7:
289
+ return "Rapid7"
290
+ case Control.RAPID7_DISCOVERY:
291
+ return "Rapid7 Discovery"
292
+ case Control.INTEL_INTUNE:
293
+ return "Intel"
294
+ case Control.CISCO_MERAKI:
295
+ return "Cisco Meraki"
296
+ case Control.CISCO_MERAKI_IDENTITY:
297
+ return "Cisco Meraki Identity"
298
+ case _:
299
+ return "Unknown Control"
300
+
301
+
302
+ class ControlCategory(Enum, metaclass=MissingItem):
303
+ INVALID = -1
304
+ NONE = 0
305
+ CLOUD = 1
306
+ EMAIL = 2
307
+ IDENTITY = 3
308
+ NETWORK = 4
309
+ XDR = 5
310
+ ASSET_MANAGER = 6
311
+ DISCOVERED_DEVICES = 7
312
+ VULN_MANAGER = 8
313
+ SIEM = 9
314
+ PRIVATE_REPO = 10
315
+ HARDWARE = 11
316
+
317
+ @classmethod
318
+ def _missing_(cls, value):
319
+ return ControlCategory.INVALID
320
+
321
+ @classmethod
322
+ def mapping(cls):
323
+ return {
324
+ ControlCategory.ASSET_MANAGER: [
325
+ Control.AWS_SSM,
326
+ Control.INTUNE,
327
+ Control.JAMF,
328
+ ],
329
+ ControlCategory.CLOUD: [],
330
+ ControlCategory.DISCOVERED_DEVICES: [
331
+ Control.AZURE_VM,
332
+ Control.DEFENDER_DISCOVERY,
333
+ Control.EC2,
334
+ Control.QUALYS_DISCOVERY,
335
+ Control.RAPID7_DISCOVERY,
336
+ Control.SERVICENOW,
337
+ Control.TENABLE_DISCOVERY,
338
+ ],
339
+ ControlCategory.EMAIL: [
340
+ Control.GMAIL,
341
+ Control.M365,
342
+ ],
343
+ ControlCategory.HARDWARE: [
344
+ Control.INTEL_INTUNE,
345
+ ],
346
+ ControlCategory.IDENTITY: [
347
+ Control.CISCO_MERAKI_IDENTITY,
348
+ Control.ENTRA,
349
+ Control.GOOGLE_IDENTITY,
350
+ Control.OKTA,
351
+ ],
352
+ ControlCategory.NETWORK: [Control.CISCO_MERAKI],
353
+ ControlCategory.PRIVATE_REPO: [
354
+ Control.GITHUB,
355
+ ],
356
+ ControlCategory.SIEM: [
357
+ Control.S3,
358
+ Control.SPLUNK,
359
+ Control.VECTR,
360
+ ],
361
+ ControlCategory.VULN_MANAGER: [
362
+ Control.QUALYS,
363
+ Control.RAPID7,
364
+ Control.TENABLE,
365
+ ],
366
+ ControlCategory.XDR: [
367
+ Control.CROWDSTRIKE,
368
+ Control.DEFENDER,
369
+ Control.SENTINELONE,
370
+ ],
371
+ }
372
+
373
+ @property
374
+ def display_name(self):
375
+ match self:
376
+ case ControlCategory.CLOUD:
377
+ return "Cloud"
378
+ case ControlCategory.EMAIL:
379
+ return "Email"
380
+ case ControlCategory.IDENTITY:
381
+ return "Identity Provider"
382
+ case ControlCategory.NETWORK:
383
+ return "Network"
384
+ case ControlCategory.XDR:
385
+ return "EDR"
386
+ case ControlCategory.ASSET_MANAGER:
387
+ return "Endpoint Management"
388
+ case ControlCategory.DISCOVERED_DEVICES:
389
+ return "Discovered Devices"
390
+ case ControlCategory.VULN_MANAGER:
391
+ return "Vulnerability Management"
392
+ case ControlCategory.SIEM:
393
+ return "SIEM"
394
+ case ControlCategory.PRIVATE_REPO:
395
+ return "Private Repository"
396
+ case ControlCategory.HARDWARE:
397
+ return "Client Hardware Security"
398
+ case _:
399
+ return "Unknown Control Category"
400
+
401
+
402
+ class SCMCategory(Enum, metaclass=MissingItem):
403
+ INVALID = -1
404
+ NONE = 0
405
+ ENDPOINT = 1
406
+ INBOX = 2
407
+ USER = 3
408
+ NETWORK_DEVICE = 4
409
+
410
+ @classmethod
411
+ def _missing_(cls, value):
412
+ return SCMCategory.INVALID
413
+
414
+ @classmethod
415
+ def control_mapping(cls):
416
+ return {
417
+ SCMCategory.ENDPOINT: [
418
+ Control.AWS_SSM,
419
+ Control.AZURE_VM,
420
+ Control.CROWDSTRIKE,
421
+ Control.DEFENDER,
422
+ Control.DEFENDER_DISCOVERY,
423
+ Control.EC2,
424
+ Control.INTEL_INTUNE,
425
+ Control.INTUNE,
426
+ Control.JAMF,
427
+ Control.QUALYS,
428
+ Control.QUALYS_DISCOVERY,
429
+ Control.RAPID7,
430
+ Control.RAPID7_DISCOVERY,
431
+ Control.SENTINELONE,
432
+ Control.SERVICENOW,
433
+ Control.TENABLE,
434
+ Control.TENABLE_DISCOVERY,
435
+ ],
436
+ SCMCategory.INBOX: [
437
+ Control.GMAIL,
438
+ Control.M365,
439
+ ],
440
+ SCMCategory.NETWORK_DEVICE: [
441
+ Control.CISCO_MERAKI,
442
+ ],
443
+ SCMCategory.USER: [
444
+ Control.CISCO_MERAKI_IDENTITY,
445
+ Control.ENTRA,
446
+ Control.GOOGLE_IDENTITY,
447
+ Control.OKTA,
448
+ ],
449
+ }
450
+
451
+ @classmethod
452
+ def category_mapping(cls):
453
+ return {
454
+ SCMCategory.ENDPOINT: [
455
+ ControlCategory.ASSET_MANAGER,
456
+ ControlCategory.DISCOVERED_DEVICES,
457
+ ControlCategory.HARDWARE,
458
+ ControlCategory.VULN_MANAGER,
459
+ ControlCategory.XDR,
460
+ ],
461
+ SCMCategory.INBOX: [ControlCategory.EMAIL],
462
+ SCMCategory.NETWORK_DEVICE: [ControlCategory.NETWORK],
463
+ SCMCategory.USER: [ControlCategory.IDENTITY],
464
+ }
465
+
466
+
467
+ class BackgroundJobTypes(Enum, metaclass=MissingItem):
468
+ INVALID = -1
469
+ UPDATE_SCM = 1
470
+ DEPLOY_PROBE = 2
471
+ OBSERVED_DETECTED = 3
472
+ PRELUDE_ENDPOINT_SYNC = 4
473
+ EXPORT_SCM = 5
474
+ PARTNER_GROUPS = 6
475
+
476
+ @classmethod
477
+ def _missing_(cls, value):
478
+ return BackgroundJobTypes.INVALID
479
+
480
+
481
+ class EDRResponse(Enum, metaclass=MissingItem):
482
+ INVALID = -1
483
+ OBSERVE = 1
484
+ DETECT = 2
485
+ PREVENT = 3
486
+
487
+ @classmethod
488
+ def _missing_(cls, value):
489
+ return EDRResponse.INVALID
490
+
491
+
492
+ class PartnerEvents(Enum, metaclass=MissingItem):
493
+ INVALID = -1
494
+ REDUCED_FUNCTIONALITY_MODE = 1
495
+ MISSING_EDR = 2
496
+ NO_EDR_POLICY = 3
497
+ NO_AV_POLICY = 4
498
+ MISSING_MFA = 5
499
+ MISSING_ASSET_MANAGER = 6
500
+ MISCONFIGURED_POLICY_SETTING = 7
501
+ MISSING_VULN_SCAN = 8
502
+ OUT_OF_DATE_SCAN = 9
503
+ MISSING_VULN_MANAGER = 10
504
+ USER_MISSING_ASSET_MANAGER = 11
505
+ USER_MISSING_EDR = 12
506
+ USER_MISSING_VULN_MANAGER = 13
507
+ MISSING_SERVER_MANAGER = 14
508
+ NO_HOST_FIREWALL_POLICY = 16
509
+ OUT_OF_DATE_FIRMWARE = 18
510
+ NO_DISK_ENCRYPTION_POLICY = 19
511
+ NO_DISK_ENCRYPTION = 20
512
+ NO_REGISTERED_DEVICES = 21
513
+ NO_DEVICE_COMPLIANCE_POLICY = 22
514
+ NONCOMPLIANT = 23
515
+ NO_ASR_POLICY = 24
516
+
517
+ @classmethod
518
+ def _missing_(cls, value):
519
+ return PartnerEvents.INVALID
520
+
521
+ @classmethod
522
+ def control_category_mapping(cls):
523
+ return {
524
+ PartnerEvents.MISCONFIGURED_POLICY_SETTING: [
525
+ ControlCategory.ASSET_MANAGER,
526
+ ControlCategory.EMAIL,
527
+ ControlCategory.IDENTITY,
528
+ ControlCategory.XDR,
529
+ ],
530
+ PartnerEvents.MISSING_ASSET_MANAGER: [ControlCategory.ASSET_MANAGER],
531
+ PartnerEvents.MISSING_EDR: [ControlCategory.XDR],
532
+ PartnerEvents.MISSING_MFA: [ControlCategory.IDENTITY],
533
+ PartnerEvents.MISSING_SERVER_MANAGER: [ControlCategory.ASSET_MANAGER],
534
+ PartnerEvents.MISSING_VULN_MANAGER: [ControlCategory.VULN_MANAGER],
535
+ PartnerEvents.MISSING_VULN_SCAN: [ControlCategory.VULN_MANAGER],
536
+ PartnerEvents.NO_ASR_POLICY: [ControlCategory.ASSET_MANAGER],
537
+ PartnerEvents.NO_AV_POLICY: [ControlCategory.XDR],
538
+ PartnerEvents.NO_DEVICE_COMPLIANCE_POLICY: [ControlCategory.ASSET_MANAGER],
539
+ PartnerEvents.NO_DISK_ENCRYPTION: [ControlCategory.ASSET_MANAGER],
540
+ PartnerEvents.NO_DISK_ENCRYPTION_POLICY: [ControlCategory.ASSET_MANAGER],
541
+ PartnerEvents.NO_EDR_POLICY: [ControlCategory.XDR],
542
+ PartnerEvents.NO_HOST_FIREWALL_POLICY: [ControlCategory.ASSET_MANAGER],
543
+ PartnerEvents.NO_REGISTERED_DEVICES: [ControlCategory.IDENTITY],
544
+ PartnerEvents.NONCOMPLIANT: [ControlCategory.ASSET_MANAGER],
545
+ PartnerEvents.OUT_OF_DATE_FIRMWARE: [ControlCategory.NETWORK],
546
+ PartnerEvents.OUT_OF_DATE_SCAN: [ControlCategory.VULN_MANAGER],
547
+ PartnerEvents.REDUCED_FUNCTIONALITY_MODE: [ControlCategory.XDR],
548
+ PartnerEvents.USER_MISSING_ASSET_MANAGER: [ControlCategory.IDENTITY],
549
+ PartnerEvents.USER_MISSING_EDR: [ControlCategory.IDENTITY],
550
+ PartnerEvents.USER_MISSING_VULN_MANAGER: [ControlCategory.IDENTITY],
551
+ }
552
+
553
+
554
+ class AlertTypes(Enum, metaclass=MissingItem):
555
+ INVALID = -1
556
+ NEW_REDUCED_FUNCTIONALITY_MODE_ENDPOINTS = 1
557
+ NEW_MISSING_EDR_ENDPOINTS = 2
558
+ NEW_NO_EDR_POLICY_ENDPOINTS = 3
559
+ NEW_NO_AV_POLICY_ENDPOINTS = 4
560
+ NEW_MISSING_MFA_USERS = 5
561
+ NEW_MISSING_ASSET_MANAGER_ENDPOINTS = 6
562
+ NEW_POLICY_SETTING_FAILURE = 7
563
+ NEW_POLICY_SETTING_PASS = 8
564
+ NEW_MISSING_VULN_SCAN_ENDPOINTS = 9
565
+ NEW_MISSING_VULN_MANAGER_ENDPOINTS = 10
566
+ NEW_OUT_OF_DATE_SCAN_ENDPOINTS = 11
567
+ NEW_MISSING_ASSET_MANAGER_USERS = 12
568
+ NEW_MISSING_EDR_USERS = 13
569
+ NEW_MISSING_VULN_MANAGER_USERS = 14
570
+ NEW_MISSING_SERVER_MANAGER_ENDPOINTS = 15
571
+ NEW_NO_HOST_FIREWALL_POLICY_ENDPOINTS = 17
572
+ NEW_OUT_OF_DATE_FIRMWARE_NETWORK_DEVICES = 19
573
+ NEW_NO_DISK_ENCRYPTION_POLICY_ENDPOINTS = 20
574
+ NEW_NO_DISK_ENCRYPTION_ENDPOINTS = 21
575
+ NEW_NO_REGISTERED_DEVICES_USERS = 22
576
+ NEW_NO_DEVICE_COMPLIANCE_POLICY_ENDPOINTS = 23
577
+ NEW_NONCOMPLIANT_ENDPOINTS = 24
578
+ NEW_NO_ASR_POLICY_ENDPOINTS = 25
579
+
580
+ @classmethod
581
+ def _missing_(cls, value):
582
+ return AlertTypes.INVALID
583
+
584
+
585
+ class PolicyType(Enum, metaclass=MissingItem):
586
+ INVALID = 0
587
+ EDR = 1
588
+ AV = 2
589
+ IDENTITY_PASSWORD = 3
590
+ EMAIL_ANTIPHISH = 4
591
+ EMAIL_OUTBOUND = 5
592
+ EMAIL_CONTENT = 6
593
+ EMAIL_MALWARE = 7
594
+ EMAIL_ATTACHMENT = 8
595
+ EMAIL_LINKS = 9
596
+ EMAIL_DKIM = 10
597
+ DEVICE_COMPLIANCE = 11
598
+ IDENTITY_MFA = 12
599
+ HOST_FIREWALL = 13
600
+ NETWORK_FIREWALL = 15
601
+ INTEL_BELOW_OS = 16
602
+ INTEL_OS = 17
603
+ INTEL_TDT = 18
604
+ INTEL_CHIP = 19
605
+ DISK_ENCRYPTION = 20
606
+ ASR = 21
607
+
608
+ @classmethod
609
+ def _missing_(cls, value):
610
+ return PolicyType.INVALID
611
+
612
+
613
+ class Platform(Enum, metaclass=MissingItem):
614
+ INVALID = 0
615
+ WINDOWS = 1
616
+ DARWIN = 2
617
+ LINUX = 3
618
+ ALL = 4
619
+
620
+ @classmethod
621
+ def _missing_(cls, value):
622
+ return Platform.INVALID
623
+
624
+
625
+ class NotationType(Enum, metaclass=MissingItem):
626
+ INVALID = -1
627
+ OBJECT_EXCEPTION_CREATED = 1
628
+ OBJECT_EXCEPTION_DELETED = 2
629
+ OBJECT_EXCEPTION_UPDATED = 3
630
+ OBJECT_EXCEPTION_EXPIRED = 4
631
+ POLICY_EXCEPTION_CREATED = 10
632
+ POLICY_EXCEPTION_DELETED = 11
633
+ POLICY_EXCEPTION_UPDATED = 5
634
+ POLICY_EXCEPTION_EXPIRED = 6
635
+ PARTNER_ATTACHED = 7
636
+ PARTNER_DETACHED = 8
637
+ PARTNER_UPDATED = 9
638
+ # Next value: 12
639
+
640
+ @classmethod
641
+ def _missing_(cls, value):
642
+ return NotationType.INVALID
643
+
644
+
645
+ class ChartType(Enum, metaclass=MissingItem):
646
+ INVALID = -1
647
+ NUMBER = 1
648
+ COLUMN = 2
649
+ BAR = 3
650
+ PIE = 4
651
+
652
+ @classmethod
653
+ def _missing_(cls, value):
654
+ return ChartType.INVALID
@@ -0,0 +1,46 @@
1
+ Metadata-Version: 2.4
2
+ Name: prelude-sdk-beta
3
+ Version: 1447
4
+ Summary: For interacting with the Prelude API
5
+ Home-page: https://github.com/preludeorg
6
+ Author: Prelude Research
7
+ Author-email: support@preludesecurity.com
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: requests
15
+ Dynamic: license-file
16
+
17
+ # Prelude SDK
18
+
19
+ Interact with the Prelude Service API via Python.
20
+
21
+ > The prelude-cli utility wraps around this SDK to provide a rich command line experience.
22
+
23
+ Install this package to write your own tooling that works with Build or Detect functionality.
24
+
25
+ - IAM: manage your account
26
+ - Build: write and maintain your collection of security tests
27
+ - Detect: schedule security tests for your endpoints
28
+
29
+ ## Quick start
30
+
31
+ ```bash
32
+ pip install prelude-sdk
33
+ ```
34
+
35
+ ## Documentation
36
+
37
+ TBD
38
+
39
+ ## Testing
40
+
41
+ To test the Python SDK and Probes, run the following commands from the python/sdk/ directory:
42
+
43
+ ```bash
44
+ pip install -r tests/requirements.txt
45
+ pytest tests --api https://api.preludesecurity.com --email <EMAIL>
46
+ ```
@@ -0,0 +1,20 @@
1
+ prelude_sdk_beta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ prelude_sdk_beta/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ prelude_sdk_beta/controllers/build_controller.py,sha256=_O-pPkB22vnvT5nh40TUIv9VmRNX8qBMkS4wqtAdtxg,9099
4
+ prelude_sdk_beta/controllers/detect_controller.py,sha256=aBF_552-DLK6zGg49dNMzqBgtkPB0ksIWWGQr44Agh8,8121
5
+ prelude_sdk_beta/controllers/export_controller.py,sha256=sTbRGmMa0xa7pB8AjSlJgifpXzutPHWw4bJBGygoAc4,862
6
+ prelude_sdk_beta/controllers/generate_controller.py,sha256=gNSr2yV1o8kdTy7heJ9bI31efEKyTKdacIkKl_eRIRg,1319
7
+ prelude_sdk_beta/controllers/http_controller.py,sha256=zomZo8OCWcJ-8zQIlBtukXbnJeqM9PkQn303APojLSA,3160
8
+ prelude_sdk_beta/controllers/iam_controller.py,sha256=sbkq1xzAGefmUnRrAQ811fRBiNzyE7cwgHKFlpG7bd0,8203
9
+ prelude_sdk_beta/controllers/jobs_controller.py,sha256=cYsqXViDycVgUAjN0GuJrNUMaTFC-dUTJSpIYHcfUgs,1165
10
+ prelude_sdk_beta/controllers/partner_controller.py,sha256=bT4gSvGdikm1yMuqUXj_K747K6zJ5FUfwWBxEEtJmoE,4757
11
+ prelude_sdk_beta/controllers/probe_controller.py,sha256=d2Aa74Css1uMNgBKGWqavbkEbXtVcOkYIIWbhDxzLS0,411
12
+ prelude_sdk_beta/controllers/scm_controller.py,sha256=Eqy3PHKa0d6W1l51K4hCB3QT8I60OP06v2nxxqB48To,20246
13
+ prelude_sdk_beta/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ prelude_sdk_beta/models/account.py,sha256=dRKhX6_mrqDTyqyfIsvHFVavcedgZ5hZAIDYVF7YlZI,8962
15
+ prelude_sdk_beta/models/codes.py,sha256=owX-h3DNEU9buAQ8u4_GhgINOIgPNAG01o8E7eyZLuU,18672
16
+ prelude_sdk_beta-1447.dist-info/licenses/LICENSE,sha256=ttdT5omfN6LNmtQoIjUhkkFhz6i44SDMRNwKrbfyTf8,1069
17
+ prelude_sdk_beta-1447.dist-info/METADATA,sha256=XmgyM_ji9M0gWK_N7b2B9yQ6ClO_hcje82MFnLerQsM,1190
18
+ prelude_sdk_beta-1447.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
+ prelude_sdk_beta-1447.dist-info/top_level.txt,sha256=pqXTtEd5ElvJKoO6HAz232H9FW5j6X7gW4kEEakfSFM,17
20
+ prelude_sdk_beta-1447.dist-info/RECORD,,