Node
- class bhopengraph.Node.Node(id, kinds=None, properties=None)[source]
Bases:
objectNode class representing a node in the OpenGraph.
Follows BloodHound OpenGraph schema requirements with unique IDs, kinds, and properties.
Sources: - https://bloodhound.specterops.io/opengraph/schema#nodes - https://bloodhound.specterops.io/opengraph/schema#minimal-working-json
- Parameters:
id (str)
kinds (list)
properties (Properties)
- __init__(id, kinds=None, properties=None)[source]
Initialize a Node.
- Parameters:
id (-) – Universally unique identifier for the node
kinds (-) – List of node types/classes
properties (-) – Node properties
- remove_kind(kind)[source]
Remove a kind/type from the node.
- Parameters:
kind (-) – Kind/type to remove
- has_kind(kind)[source]
Check if node has a specific kind/type.
- Parameters:
kind (-) – Kind/type to check
- Returns:
True if node has the kind, False otherwise
- Return type:
bool
- set_property(key, value)[source]
Set a property on the node.
- Parameters:
key (-) – Property name
value (-) – Property value
- get_property(key, default=None)[source]
Get a property from the node.
- Parameters:
key (-) – Property name
default (-) – Default value if property doesn’t exist
- Returns:
Property value or default
- remove_property(key)[source]
Remove a property from the node.
- Parameters:
key (-) – Property name to remove
- to_dict()[source]
Convert node to dictionary for JSON serialization.
- Returns:
Node as dictionary following BloodHound OpenGraph schema
- Return type:
dict
- classmethod from_dict(node_data)[source]
Create a Node instance from a dictionary.
- Parameters:
node_data (-) – Dictionary containing node data
- Returns:
Node instance or None if data is invalid
- Return type:
Node
- __eq__(other)[source]
Check if two nodes are equal based on their ID.
- Parameters:
other (-) – The other node to compare to
- Returns:
True if the nodes are equal, False otherwise
- Return type:
bool