Skip to content

Commit 5a7ce4f

Browse files
committed
docs(examples): cleanup example scripts
1 parent 3cb19aa commit 5a7ce4f

6 files changed

Lines changed: 39 additions & 89 deletions

examples/attack-object-counter.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from mitreattack.stix20 import MitreAttackData
77

88
# Get STIX base directory from environment or use default
9-
STIX_BASE_DIR = os.environ.get("STIX_BASE_DIR", "attack-releases/stix-2.0/v17.1")
9+
STIX_BASE_DIR = os.environ.get("STIX_BASE_DIR", "attack-releases/stix-2.0/v18.0")
1010

1111

1212
@dataclass
@@ -22,7 +22,10 @@ class DomainStatistics:
2222
campaigns: int
2323
mitigations: int
2424
datasources: int
25-
assets: int = 0
25+
assets: int
26+
datacomponents: int
27+
analytics: int
28+
detectionstrategies: int
2629

2730
def format_output(self) -> str:
2831
"""
@@ -44,6 +47,9 @@ def format_output(self) -> str:
4447
(self.mitigations, "Mitigations"),
4548
(self.assets, "Assets"),
4649
(self.datasources, "Data Sources"),
50+
(self.detectionstrategies, "Detection Strategies"),
51+
(self.analytics, "Analytics"),
52+
(self.datacomponents, "Data Components"),
4753
]
4854

4955
# Build parts list, only including items with count > 0
@@ -99,11 +105,10 @@ def collect_domain_statistics(data: MitreAttackData, domain_name: str) -> Domain
99105
campaigns = data.get_campaigns(remove_revoked_deprecated=True)
100106
mitigations = data.get_mitigations(remove_revoked_deprecated=True)
101107
datasources = data.get_datasources(remove_revoked_deprecated=True)
102-
103-
# ICS domain has assets
104-
assets = 0
105-
if domain_name == "ICS":
106-
assets = len(data.get_assets(remove_revoked_deprecated=True))
108+
datacomponents = data.get_datacomponents(remove_revoked_deprecated=True)
109+
analytics = data.get_analytics(remove_revoked_deprecated=True)
110+
detectionstrategies = data.get_detectionstrategies(remove_revoked_deprecated=True)
111+
assets = data.get_assets(remove_revoked_deprecated=True)
107112

108113
return DomainStatistics(
109114
name=domain_name,
@@ -115,7 +120,10 @@ def collect_domain_statistics(data: MitreAttackData, domain_name: str) -> Domain
115120
campaigns=len(campaigns),
116121
mitigations=len(mitigations),
117122
datasources=len(datasources),
118-
assets=assets,
123+
datacomponents=len(datacomponents),
124+
assets=len(assets),
125+
analytics=len(analytics),
126+
detectionstrategies=len(detectionstrategies),
119127
)
120128

121129

examples/get_all_datacomponents_detecting_all_techniques.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

examples/get_all_datasources.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

examples/get_all_techniques_detected_by_all_datacomponents.py

Lines changed: 0 additions & 19 deletions
This file was deleted.

examples/get_techniques_detected_by_datacomponent.py

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import os
2+
3+
from mitreattack.stix20 import MitreAttackData
4+
5+
6+
def main():
7+
stix_filepath = os.environ.get("STIX_BUNDLE", "enterprise-attack.json")
8+
mitre_attack_data = MitreAttackData(stix_filepath=stix_filepath)
9+
10+
# get technique detected by detection strategy
11+
detectionstrategy_stix_id = "x-mitre-detection-strategy--00060b87-7f99-45aa-9553-a4d94139195c"
12+
techniques_detected_by_det = mitre_attack_data.get_techniques_detected_by_detection_strategy(
13+
detectionstrategy_stix_id
14+
)
15+
16+
print("Techniques detected by DET0103:")
17+
for t in techniques_detected_by_det:
18+
technique = t["object"]
19+
print(f"* {technique.name} ({mitre_attack_data.get_attack_id(technique.id)})")
20+
21+
22+
if __name__ == "__main__":
23+
main()

0 commit comments

Comments
 (0)