mal-toolbox 1.2.0__py3-none-any.whl → 1.2.1__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.4
2
2
  Name: mal-toolbox
3
- Version: 1.2.0
3
+ Version: 1.2.1
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>, Sandor Berglund <sandor@kth.se>
6
6
  License: Apache Software License
@@ -1,6 +1,6 @@
1
- mal_toolbox-1.2.0.dist-info/licenses/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
2
- mal_toolbox-1.2.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
3
- maltoolbox/__init__.py,sha256=477nzX87CW6thDBJ4BfSLW2xzvpqIHKL0llR7bJxXds,2132
1
+ mal_toolbox-1.2.1.dist-info/licenses/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
2
+ mal_toolbox-1.2.1.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
3
+ maltoolbox/__init__.py,sha256=649BOg_Bo4OazvePvnuF2tjM0q4VbyS2Fsz9em_KEtM,2132
4
4
  maltoolbox/__main__.py,sha256=aAm6NcZ-HtPmY9hfFlGNnTs5rydoI6NAc88RgXt1G9U,3515
5
5
  maltoolbox/exceptions.py,sha256=4rwqzu8Cgj0ShjUoCXP2yik-bJaqYqj6Y-0tqxHy4vs,1316
6
6
  maltoolbox/file_utils.py,sha256=IXA0cvyopjRFGGKqRPkRQ0RJOtKzq_XF13aHgcz-TFc,1911
@@ -23,11 +23,11 @@ maltoolbox/translators/networkx.py,sha256=v1JQAqO7st6-ktx5P3oy93DsL2SEUPly_3zcAL
23
23
  maltoolbox/translators/updater.py,sha256=mFmTT2GHCw6nsoHe_ChnvAHd5j6UxKnvAqLFDSziqC4,8566
24
24
  maltoolbox/visualization/__init__.py,sha256=7rrGclkGdP6LrxpfSh1esYFG_MnvnVruuEdUJI-DX-g,350
25
25
  maltoolbox/visualization/draw_io_utils.py,sha256=CgsD0HEFpxZ6ZIWtUZtMekdPB2Irtmvhz0TNEm7x1ig,14378
26
- maltoolbox/visualization/graphviz_utils.py,sha256=gA5WGnukZiis5RXIXtWyCy0QMFeSPucZMnFJSbbM8Xc,4687
26
+ maltoolbox/visualization/graphviz_utils.py,sha256=87B2pxRMrlmm2RHu0JM7nQRHWZD0Yt3zCmEwl8xUXdU,4709
27
27
  maltoolbox/visualization/neo4j_utils.py,sha256=R2Qm2gC5GDpfiPhhB3oymuBI2W580SRXGVtQuFRYiIA,3496
28
28
  maltoolbox/visualization/utils.py,sha256=EZWsxukO5hbRwGFW9GM9ZemKT-nYg-VMCup-SsntaQM,1480
29
- mal_toolbox-1.2.0.dist-info/METADATA,sha256=b2NVXhY7knTCzoQrNpJXrHAIChJir16tQBFt2v4rjJk,6696
30
- mal_toolbox-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
- mal_toolbox-1.2.0.dist-info/entry_points.txt,sha256=oqby5O6cUP_OHCm70k_iYPA6UlbTBf7se1i3XwdK3uU,56
32
- mal_toolbox-1.2.0.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
33
- mal_toolbox-1.2.0.dist-info/RECORD,,
29
+ mal_toolbox-1.2.1.dist-info/METADATA,sha256=Nlsaw-sJu-Pqz6hWme_f6K-hryjFK8-QHYyMqfXBfWA,6696
30
+ mal_toolbox-1.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
31
+ mal_toolbox-1.2.1.dist-info/entry_points.txt,sha256=oqby5O6cUP_OHCm70k_iYPA6UlbTBf7se1i3XwdK3uU,56
32
+ mal_toolbox-1.2.1.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
33
+ mal_toolbox-1.2.1.dist-info/RECORD,,
maltoolbox/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- # MAL Toolbox v1.2.0
1
+ # MAL Toolbox v1.2.1
2
2
  # Copyright 2025, Andrei Buhaiu.
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@
19
19
  """
20
20
 
21
21
  __title__ = "maltoolbox"
22
- __version__ = "1.2.0"
22
+ __version__ = "1.2.1"
23
23
  __authors__ = [
24
24
  "Andrei Buhaiu",
25
25
  "Giuseppe Nebbione",
@@ -88,7 +88,7 @@ def render_attack_graph(attack_graph: AttackGraph, path: Optional[PathLike] = No
88
88
  assert attack_graph.model, "Attack graph needs a model"
89
89
 
90
90
  name = attack_graph.model.name + "-attack_graph"
91
- dot = graphviz.Graph(name)
91
+ dot = graphviz.Digraph(name)
92
92
  dot.graph_attr["nodesep"] = "3.0"
93
93
  dot.graph_attr["ratio"] = "compress"
94
94
 
@@ -123,7 +123,7 @@ def render_attack_graph(attack_graph: AttackGraph, path: Optional[PathLike] = No
123
123
  # Create edges
124
124
  for parent in attack_graph.nodes.values():
125
125
  for child in parent.children:
126
- dot.edge(str(parent.id), str(child.id))
126
+ dot.edge(str(parent.id), str(child.id), arrowhead="normal")
127
127
 
128
128
  directory, filename = _resolve_graphviz_path(path, name)
129
129
  dot.render(directory=directory, filename=f"{filename}.gv", view=view, format="pdf")