Spaces:
Runtime error
Runtime error
| from typing import Any | |
| import cachetools | |
| import gradio as gr | |
| from attackcti import attack_client | |
| _CACHE_MAX_SIZE = 4096 | |
| _CACHE_TTL_SECONDS = 3600 | |
| def get_stix_object_of_attack_id( | |
| attack_id: str, | |
| object_type: str = "attack-pattern", | |
| ) -> dict[str, Any]: | |
| """Retrieves a STIX object identified by an ATT&CK ID in all ATT&CK matrices. | |
| Args: | |
| attack_id (str): The ATT&CK ID (e.g., 'T1234') of the STIX object to retrieve. | |
| object_type (str): The type of STIX object to retrieve, such as | |
| 'attack-pattern', 'course-of-action', 'intrusion-set', | |
| 'malware', 'tool', or 'x-mitre-data-component'. Default is 'attack-pattern' | |
| Returns: | |
| A list containing the matched STIX object, either in its raw STIX format | |
| or as a custom dictionary following the structure defined by the relevant | |
| Pydantic model, depending on the 'stix_format' flag. | |
| """ | |
| try: | |
| lift = attack_client() | |
| return lift.get_object_by_attack_id( | |
| object_type=object_type.strip(), | |
| attack_id=attack_id.strip(), | |
| stix_format=False, | |
| )[0] | |
| except Exception as e: # noqa: BLE001 | |
| return {"Exception": str(e)} | |
| gr_get_stix_of_attack_id = gr.Interface( | |
| fn=get_stix_object_of_attack_id, | |
| inputs=[ | |
| gr.Textbox(label="Mitre technique ID"), | |
| gr.Textbox(label="Mitre object type"), | |
| ], | |
| outputs=gr.JSON(label="Mitre report"), | |
| title="MITRE ATT&CK STIX information", | |
| description=( | |
| "Retrieves a specific STIX object identified by an ATT&CK ID across all ATT&CK" | |
| " matrices" | |
| ), | |
| examples=[ | |
| ["T1568.002", "attack-pattern"], | |
| ["M1042", "course-of-action"], | |
| ], | |
| ) | |