mal-toolbox 0.1.12__py3-none-any.whl → 0.2.0__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.1.12
3
+ Version: 0.2.0
4
4
  Summary: A collection of tools used to create MAL models and attack graphs.
5
5
  Author-email: Andrei Buhaiu <buhaiu@kth.se>, Giuseppe Nebbione <nebbione@kth.se>, Nikolaos Kakouros <nkak@kth.se>, Jakob Nyberg <jaknyb@kth.se>, Joakim Loxdal <loxdal@kth.se>
6
6
  License: Apache Software License
@@ -1,22 +1,22 @@
1
- maltoolbox/__init__.py,sha256=Gkuzd3_D5OscXXfTzYQf5Vdcmooe67qcYyScGAeFpcQ,2778
1
+ maltoolbox/__init__.py,sha256=4y4QJcwl6OKw8pCiPaUrOWtXRpEgFrKeoNLajc9p2Iw,2776
2
2
  maltoolbox/__main__.py,sha256=1lOOOme_y56VWrEE1jkarTt-WoUo9yilCo8sUrivyns,2680
3
3
  maltoolbox/default.conf,sha256=YLGBSJh2q8hn3RzRRBbib9F6E6pcvquoHeALMRtA0wU,295
4
4
  maltoolbox/exceptions.py,sha256=0YjPx2v1yYumZ2o7pVZ1s_jS-GAb3Ng979KEFhROSNY,1399
5
- maltoolbox/file_utils.py,sha256=6KFEEZvf9x8yfNAq7hadF7lUGlLimNFMJ0W_DK2rh6Q,2024
6
- maltoolbox/model.py,sha256=gYGFdjkHPYpBuEngBRsj_Ki6fFSJtfBG9p8oCARz7gk,30556
5
+ maltoolbox/file_utils.py,sha256=TFLm32_RLfB4uEsToZ8ypDcRbbdFZMso34mfvqAb1bY,2139
6
+ maltoolbox/model.py,sha256=mQqwx0cSLV6E8wGBSDDKkKnFdbcPeBcjqIpFdBjtkYE,31042
7
7
  maltoolbox/wrappers.py,sha256=BYYNcIdTlyumADQCPcy1xmPEabfmi0P1l9RcbdVWm9w,2002
8
8
  maltoolbox/attackgraph/__init__.py,sha256=Oqqj5iCwnrzjDoJEFZnVI_kebjJPVbPXK-mWHy0lf-8,209
9
9
  maltoolbox/attackgraph/attacker.py,sha256=OaBNDYZF8shbFuQctzuNYVkOrpNb_KhxxV19k0SRa50,3541
10
- maltoolbox/attackgraph/attackgraph.py,sha256=T9snTC8kzgN017leI29CYj2YdlrU8IDxYiV69yDgz7o,30060
11
- maltoolbox/attackgraph/node.py,sha256=oFaGCz4QPvDcS7xM5lxaG_-GUR-PKT2xtQ1ryzYRWaU,5869
10
+ maltoolbox/attackgraph/attackgraph.py,sha256=HLAjF8Qx9W2iv6uSWRULL16ieuy7UM5fLZNwxIr544s,31348
11
+ maltoolbox/attackgraph/node.py,sha256=xrnY_YlX9ZFXDRsj92I9PZMGJR6s1LpTnOIppR6TGXo,6074
12
12
  maltoolbox/attackgraph/query.py,sha256=JnoNTUEIlLv2VIk3u5Rq3GpleOn9TZVGBVijniRY_44,6802
13
13
  maltoolbox/attackgraph/analyzers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- maltoolbox/attackgraph/analyzers/apriori.py,sha256=Af4NOSiE6Z0UnI_fuhxBA6YtSkDUj1kMie1rj09I0qM,8548
14
+ maltoolbox/attackgraph/analyzers/apriori.py,sha256=8dRZL22oym5goXBYtYA1ZYXxk8VwQS0RlNCvNCUhCAY,8743
15
15
  maltoolbox/ingestors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  maltoolbox/ingestors/neo4j.py,sha256=jdulYsQ2eZT2r0Af_yYjyGkmVx4l5h8viu1Z70NjVAM,8811
17
- maltoolbox/language/__init__.py,sha256=0tvCJDayrLwpqKRny7LBkMOrvcDE6JfJj7U7Jd64Okg,140
18
- maltoolbox/language/classes_factory.py,sha256=0QFF5Z9e4UeWwavvH1jM4BkeDZqKKZ4Ij7leGmSfXn4,10063
19
- maltoolbox/language/languagegraph.py,sha256=f79ovmrGQb6tvY9ze-zqP031N6rApB9WsbZd5LRyhk8,47031
17
+ maltoolbox/language/__init__.py,sha256=WNoPtcYHJE799vR6x269Gx5KPWxBgLOHQoycE1vhOF4,257
18
+ maltoolbox/language/classes_factory.py,sha256=-s4xxwcCGgKj1wzrgsrn-ndLhgU4VoEjrrSuGx8qvYE,10217
19
+ maltoolbox/language/languagegraph.py,sha256=ctoxS33DM7F4DF50SNDB2lTtokUJKyWMhMhss46yv_g,68123
20
20
  maltoolbox/language/compiler/__init__.py,sha256=fJ22-FlXfr907WCPkqlr_eBTzPqsrg6m3i7J_ZWpuAo,840
21
21
  maltoolbox/language/compiler/mal_lexer.py,sha256=wocRzBkLbqYefpGvq2W77x7439-AdZKVgPWhRiRubXg,10776
22
22
  maltoolbox/language/compiler/mal_parser.py,sha256=M1EVZFV73TNfQHz2KJ8-iloqOD4KUhHyajszD8UrNow,91349
@@ -24,9 +24,9 @@ maltoolbox/language/compiler/mal_visitor.py,sha256=9gG06D7GZKlBY-62SmbIkRYkGBUBI
24
24
  maltoolbox/translators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  maltoolbox/translators/securicad.py,sha256=FAIHnoqFTmNYbCGxLsK6pX5g1oiNFfPTqkT_3qq3GG8,6692
26
26
  maltoolbox/translators/updater.py,sha256=Ap08-AsU_7or5ESQvZL2i4nWz3B5pvgfftZyc_-Gd8M,4766
27
- mal_toolbox-0.1.12.dist-info/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
28
- mal_toolbox-0.1.12.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
29
- mal_toolbox-0.1.12.dist-info/METADATA,sha256=XNkHzeC0F3E4Mtp4GhxAm2d2SWqDteCPNVZ1Px0q2rw,6002
30
- mal_toolbox-0.1.12.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
- mal_toolbox-0.1.12.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
32
- mal_toolbox-0.1.12.dist-info/RECORD,,
27
+ mal_toolbox-0.2.0.dist-info/AUTHORS,sha256=zxLrLe8EY39WtRKlAY4Oorx4Z2_LHV2ApRvDGZgY7xY,127
28
+ mal_toolbox-0.2.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
29
+ mal_toolbox-0.2.0.dist-info/METADATA,sha256=AWtN4435t5ycp5k-dPfRSVRU4rhpyb6e_z1FBE2PYpY,6001
30
+ mal_toolbox-0.2.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
31
+ mal_toolbox-0.2.0.dist-info/top_level.txt,sha256=phqRVLRKGdSUgRY03mcpi2cmbbDo5YGjkV4gkqHFFcM,11
32
+ mal_toolbox-0.2.0.dist-info/RECORD,,
maltoolbox/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # MAL Toolbox v0.1.12
2
+ # MAL Toolbox v0.2.0
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.1.12'
24
+ __version__ = '0.2.0'
25
25
  __authors__ = ['Andrei Buhaiu',
26
26
  'Giuseppe Nebbione',
27
27
  'Nikolaos Kakouros',
@@ -55,11 +55,13 @@ def propagate_necessity_from_node(node: AttackGraphNode) -> None:
55
55
  )
56
56
 
57
57
  if node.ttc and 'name' in node.ttc:
58
- if node.ttc['name'] not in ['Enabled', 'Disabled']:
58
+ if node.ttc['name'] not in ['Enabled', 'Disabled', 'Instant']:
59
59
  # Do not propagate unnecessary state from nodes that have a TTC
60
60
  # probability distribution associated with them.
61
61
  # TODO: Evaluate this more carefully, how do we want to have TTCs
62
62
  # impact necessity and viability.
63
+ # TODO: Have this condition be any probability that has a
64
+ # Bernoulli component
63
65
  return
64
66
 
65
67
  for child in node.children:
@@ -175,6 +177,7 @@ def prune_unviable_and_unnecessary_nodes(graph: AttackGraph) -> None:
175
177
  graph - the attack graph for which we wish to remove the
176
178
  the nodes which are not viable or necessary.
177
179
  """
180
+ logger.debug('Prune unviable and unnecessary nodes from the attack graph.')
178
181
  for node in graph.nodes:
179
182
  if (node.type == 'or' or node.type == 'and') and \
180
183
  (not node.is_viable or not node.is_necessary):