-
Notifications
You must be signed in to change notification settings - Fork 31
Description
Dear DHALSIM Team,
I am a Security Researcher Engineer at the KIOS Research and Innovation Center of Excellence and we want to run DHALSIM for our own topology similar to Mini Town for research purposes . While using DHALSIM for testing and research, I encountered the following errors and warnings and i would like some insights.
General
Across different topologies while trying to simulate the results of the Two papers mentioned we get different warrnings as you can see below
@ALL warning
@minitown : Possible yaml file error
@wadi: Topology does not converge even, when i open the .inp file in EPANET tool and run it standalone does not work
MiniTown:
Desktop/DHALSIM/examples/minitown_topology$ sudo dhalsim minitown_config.yaml
Key 'attacks' error:
Key 'network_attacks' error:
Or(Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'naive_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d954c0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Optional('direction'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('source', 'destination'))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95550>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'server_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d955e0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tags': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}]}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'concealment_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95670>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tags': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}], 'concealment_data': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'path'), 'path': Schema(<class 'str'>)}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'value'), 'concealment_value': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}]}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'payload_replay'), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95040>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d950d0>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95160>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'network_replay'), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d951f0>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95280>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95310>))}))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'unconstrained_blackbox_concealment_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95700>)), Optional('persistent'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or(True, False)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'replay_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95790>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95820>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d958b0>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95940>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'simple_dos'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d959d0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Optional('direction'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('source', 'destination'))}))) did not validate {'name': 'plc1attack', 'type': 'mitm', 'trigger': {'type': 'Time', 'start': 250, 'end': 750}, 'tags': [{'tag': 'TANK', 'offset': -3}], 'target': 'PLC1'}
Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'naive_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d954c0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Optional('direction'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('source', 'destination'))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95550>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'server_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d955e0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tags': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}]}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'concealment_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95670>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'tags': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}], 'concealment_data': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'path'), 'path': Schema(<class 'str'>)}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'value'), 'concealment_value': [{'tag': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Or('value', 'offset'): Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))}]}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'payload_replay'), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95040>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d950d0>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95160>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'network_replay'), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d951f0>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95280>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95310>))}))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'unconstrained_blackbox_concealment_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95700>)), Optional('persistent'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or(True, False)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'replay_mitm'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d95790>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'capture_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95820>)), 'capture_end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d958b0>)), 'replay_start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95940>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'simple_dos'), 'name': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$'), Schema(<function SchemaParser. at 0x7f0ec3d959d0>)), 'trigger': Schema(Or({'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'time'), 'start': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d953a0>)), 'end': And(<class 'int'>, Schema(<function SchemaParser. at 0x7f0ec3d95430>))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('below', 'above')), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))}, {'type': And(<class 'str'>, Use(<method 'lower' of 'str' objects>), 'between'), 'sensor': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), 'lower_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>)))), 'upper_value': And(Or(<class 'float'>, And(<class 'int'>, Use(<class 'float'>))))})), 'target': And(<class 'str'>, Regex('^[a-zA-Z0-9_]+$')), Optional('direction'): And(<class 'str'>, Use(<method 'lower' of 'str' objects>), Or('source', 'destination'))}) did not validate {'name': 'plc1attack', 'type': 'mitm', 'trigger': {'type': 'Time', 'start': 250, 'end': 750}, 'tags': [{'tag': 'TANK', 'offset': -3}], 'target': 'PLC1'}
Key 'type' error:
'naive_mitm' does not match 'mitm'
Missing keys: 'tag', Or('value', 'offset')
'server_mitm' does not match 'mitm'
'concealment_mitm' does not match 'mitm'
'unconstrained_blackbox_concealment_mitm' does not match 'mitm'
'replay_mitm' does not match 'mitm'
'simple_dos' does not match 'mitm'
Anytown:
02:40:37 - INFO @ physical_process.py: DB Sleep time: 0.06036518378886903
02:40:37 - INFO @ physical_process.py: Temporary file location: /tmp/dhalsim_p82fxitt
02:40:37 - INFO @ physical_process.py: Simulation will run for 2880 iterations with hydraulic timestep 300.
02:40:37 - INFO @ physical_process.py: Starting epynet simulation
02:40:37 - DEBUG @ physical_process.py: Registering initial results of pumps: ['P78', 'P79']
02:40:37 - DEBUG @ generic_scada.py: SCADA starting update cache thread
02:40:40 - DEBUG @ physical_process.py: Iteration 1 out of 2880. Internal timestep 300
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
02:40:42 - DEBUG @ physical_process.py: Iteration 2 out of 2880. Internal timestep 300
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
02:40:45 - DEBUG @ physical_process.py: Iteration 3 out of 2880. Internal timestep 300
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
02:40:48 - DEBUG @ physical_process.py: Iteration 4 out of 2880. Internal timestep 300
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
CTown:
02:09:25 - DEBUG @ generic_scada.py: SCADA starting update cache thread
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
02:09:43 - DEBUG @ physical_process.py: Iteration 1 out of 2880. Internal timestep 300
/usr/local/lib/python3.8/dist-packages/epynet/baseobject.py:63: UserWarning: requesting dynamic properties from an unsolved network
warnings.warn("requesting dynamic properties from an unsolved network")
WADI
02:15:02 - INFO: Initializing database.
02:15:14 - INFO: Preparing wntr simulation
/usr/local/lib/python3.8/dist-packages/wntr/epanet/io.py:2075: UserWarning: Not all curves were used in Desktop/DHALSIM/examples/wadi_topology/wadi_map.inp"; added with type None, units conversion left to user
warnings.warn('Not all curves were used in "{}"; added with type None, units conversion left to user'.format(self.wn.name))
02:15:14 - INFO: Starting simulation for wadi_map topology.Simulator is: wntr
02:15:14 - INFO: DB Sleep time: 0.03677291649626526
02:15:14 - INFO: Temporary file location: /tmp/dhalsim_thjwwwao
02:15:14 - INFO: Simulation will run for 500 iterations with hydraulic timestep 60.
[Elapsed Time: 0:00:00 - 0 of 500] | | [ETA: --:--:--] 02:15:14 - INFO: Starting WNTR simulation
02:15:24 - ERROR: Error in WNTR simulation: Simulation did not converge at time 00:00:00. Reached maximum number of iterations: 2999
[Elapsed Time: 0:00:11 - 0 of 500] | | [ETA: --:--:--] 02:15:35 - ERROR: Error in WNTR simulation: Simulation did not converge at time 00:00:00. Reached maximum number of iterations: 2999
[Elapsed Time: 0:00:21 - 1 of 500] | | [ETA: 2:58:06] 02:15:45 - ERROR: Error in WNTR simulation: Simulation did not converge at time 00:00:00. Reached maximum number of iterations: 2999
[Elapsed Time: 0:00:31 - 2 of 500] | | [ETA: 2:10:29]