mal-toolbox 0.3.1__py3-none-any.whl → 0.3.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mal-toolbox
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: A collection of tools used to create MAL models and attack graphs.
5
5
  Author-email: Andrei Buhaiu <buhaiu@kth.se>, Joakim Loxdal <loxdal@kth.se>, Nikolaos Kakouros <nkak@kth.se>, Jakob Nyberg <jaknyb@kth.se>, Giuseppe Nebbione <nebbione@kth.se>
6
6
  License: Apache Software License
@@ -1,4 +1,4 @@
1
- maltoolbox/__init__.py,sha256=JmrqZmqbiImekYytS9PpNX0-39yY2hC5Qjfm2QzebD8,2088
1
+ maltoolbox/__init__.py,sha256=KOtf1beGjcKq7VUvCHLBIam5toxmKjgI6EuEpGpk_aA,2088
2
2
  maltoolbox/__main__.py,sha256=PSg8vFS8X-klJBJdSzrg0aLh9ykZgbcoSSEy3DTQoQQ,3499
3
3
  maltoolbox/exceptions.py,sha256=0YjPx2v1yYumZ2o7pVZ1s_jS-GAb3Ng979KEFhROSNY,1399
4
4
  maltoolbox/file_utils.py,sha256=tBR8Kjl8IoFzAtYaLNHNALuQrdMT3pD1ZpczHm1pu2g,1875
@@ -9,9 +9,9 @@ maltoolbox/attackgraph/attackgraph.py,sha256=5ejaqeTF6QNc_75p_jgvC9-33-4J0PaaHUF
9
9
  maltoolbox/attackgraph/node.py,sha256=Ec67_u_8qf_MgCHaUg4wIbZFC013GWxbIsC8EjoguzE,6465
10
10
  maltoolbox/attackgraph/query.py,sha256=s66EQcHlldn7XLCWxZ2FRjZTgk8o3V0mD4LnRaImdCw,6836
11
11
  maltoolbox/attackgraph/analyzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- maltoolbox/attackgraph/analyzers/apriori.py,sha256=iH1KvKbMi9J3_1qia8FXI80O3ZMQ1LP67HkXbqweq-c,8802
12
+ maltoolbox/attackgraph/analyzers/apriori.py,sha256=pLTZBJDOMbmMQpHQ7V-hocvaNvtFnjklr3TJ0sdEakc,8986
13
13
  maltoolbox/ingestors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- maltoolbox/ingestors/neo4j.py,sha256=gjQQqk0HVI8ojIqwS1ymt7-_ZvDOTNi8AcczDAlvsGs,8310
14
+ maltoolbox/ingestors/neo4j.py,sha256=W3AH3nymRQHI9N65HsSyyeQKcETPXmY_SLKc-iB4sBI,8328
15
15
  maltoolbox/language/__init__.py,sha256=9p5nvVqDCKEhXbDMIz1MtwZ9GN7x1jmUUXbpjEwuqnw,269
16
16
  maltoolbox/language/languagegraph.py,sha256=npP1lX1EE1rqqKNr9qTb4Jylvdn5JYApNyJhjwSebJs,67785
17
17
  maltoolbox/language/compiler/__init__.py,sha256=JQyAgDwJh1pU7AmuOhd1-d2b2PYXpgMVPtxnav8QHVc,15872
@@ -20,10 +20,10 @@ maltoolbox/language/compiler/mal_parser.py,sha256=sUoaE43l2VKg-Dou30mk2wlVS1FvdO
20
20
  maltoolbox/translators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  maltoolbox/translators/securicad.py,sha256=PJYjieioWN5tE_oKm83dtgV5UkC8EUH9Vsy3-FxBtUo,7017
22
22
  maltoolbox/translators/updater.py,sha256=8bisZnzMWjGaG5tu8jdF-Oq6bPwIjXkVO-_yZDGc6cA,8652
23
- mal_toolbox-0.3.1.dist-info/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
24
- mal_toolbox-0.3.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
25
- mal_toolbox-0.3.1.dist-info/METADATA,sha256=qc3QLH0gdSniqbHAUn2egs5x0_BE2xVP7FRW3GIeMMU,6158
26
- mal_toolbox-0.3.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
- mal_toolbox-0.3.1.dist-info/entry_points.txt,sha256=oqby5O6cUP_OHCm70k_iYPA6UlbTBf7se1i3XwdK3uU,56
28
- mal_toolbox-0.3.1.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
29
- mal_toolbox-0.3.1.dist-info/RECORD,,
23
+ mal_toolbox-0.3.3.dist-info/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
24
+ mal_toolbox-0.3.3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
25
+ mal_toolbox-0.3.3.dist-info/METADATA,sha256=dZnRcj2VHu_oL87Zu4aA8XwG8lygJck0ulYHSV6NvAQ,6158
26
+ mal_toolbox-0.3.3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
27
+ mal_toolbox-0.3.3.dist-info/entry_points.txt,sha256=oqby5O6cUP_OHCm70k_iYPA6UlbTBf7se1i3XwdK3uU,56
28
+ mal_toolbox-0.3.3.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
29
+ mal_toolbox-0.3.3.dist-info/RECORD,,
maltoolbox/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # MAL Toolbox v0.3.1
2
+ # MAL Toolbox v0.3.3
3
3
  # Copyright 2024, Andrei Buhaiu.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,7 +21,7 @@ MAL-Toolbox Framework
21
21
  """
22
22
 
23
23
  __title__ = "maltoolbox"
24
- __version__ = "0.3.1"
24
+ __version__ = "0.3.3"
25
25
  __authors__ = [
26
26
  "Andrei Buhaiu",
27
27
  "Giuseppe Nebbione",
@@ -178,11 +178,19 @@ def prune_unviable_and_unnecessary_nodes(graph: AttackGraph) -> None:
178
178
  graph - the attack graph for which we wish to remove the
179
179
  the nodes which are not viable or necessary.
180
180
  """
181
- logger.debug('Prune unviable and unnecessary nodes from the attack graph.')
181
+ logger.debug(
182
+ 'Prune unviable and unnecessary nodes from the attack graph.')
183
+
184
+ nodes_to_remove = set()
182
185
  for node in graph.nodes.values():
183
- if (node.type == 'or' or node.type == 'and') and \
186
+ if node.type in ('or', 'and') and \
184
187
  (not node.is_viable or not node.is_necessary):
185
- graph.remove_node(node)
188
+ nodes_to_remove.add(node)
189
+
190
+ # Do the removal separatly so we don't remove
191
+ # nodes from a set we are looping over
192
+ for node in nodes_to_remove:
193
+ graph.remove_node(node)
186
194
 
187
195
 
188
196
  def propagate_viability_from_unviable_node(
@@ -35,7 +35,7 @@ def ingest_attack_graph(graph,
35
35
 
36
36
  nodes = {}
37
37
  rels = []
38
- for node in graph.nodes:
38
+ for node in graph.nodes.values():
39
39
  node_dict = node.to_dict()
40
40
  nodes[node.id] = Node(
41
41
  node_dict['asset'] if 'asset' in node_dict else node_dict['id'],
@@ -50,7 +50,7 @@ def ingest_attack_graph(graph,
50
50
  in node_dict else 'N/A')
51
51
 
52
52
 
53
- for node in graph.nodes:
53
+ for node in graph.nodes.values():
54
54
  for child in node.children:
55
55
  rels.append(Relationship(nodes[node.id], nodes[child.id]))
56
56