Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Errors and Warnings of Given Examples #55

Open
jhin-coder opened this issue Dec 2, 2024 · 1 comment
Open

Errors and Warnings of Given Examples #55

jhin-coder opened this issue Dec 2, 2024 · 1 comment

Comments

@jhin-coder
Copy link

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]

@afmurillo
Copy link
Collaborator

Hello,

Sorry I have been very busy these days and December/January also look fairly complicated, I will try to find time to check the issues. In the meantime, I can provide some comments that don't address them, but hopefully let you figure out workarounds:

  • The warnings can be ignored and should not affect the obtained results
  • The minitown error is probably caused by a misconfiguration in the attack name. Minitown is the smallest and first topology that we built, so very likely the attack names configured in the minitown YAML file are outdated. Finding the equivalents in https://github.com/Critical-Infrastructure-Systems-Lab/DHALSIM/blob/master/dhalsim/parser/config_parser.py and configuring them properly in the minitown YAML should do the trick
  • WADI. There is problem a missing paramerter in the configuration file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants