コード例 #1
0
ファイル: p1_level_model.py プロジェクト: scy-phy/swat
def get_model_parameters(packet):
    if SWAT_P1_RIO_AI in packet:
        global _rlevel, _flow
        l = ctypes.c_short(packet[SWAT_P1_RIO_AI].level)
        l = current_to_signal(l.value, P1Level)
        f = ctypes.c_short(packet[SWAT_P1_RIO_AI].flow)
        _flow = current_to_signal(f.value, P1Flow)
        _rlevel = l * 0.001

    if SWAT_P1_RIO_DI in packet:
        global _pump1_in, _pump
        _valve = packet[SWAT_P1_RIO_DI].valve_open
        _pump = packet[SWAT_P1_RIO_DI].pump1_run
コード例 #2
0
ファイル: p1_level_model.py プロジェクト: scy-phy/swat
def get_model_parameters(packet):
    if SWAT_P1_RIO_AI in packet:
        global _rlevel, _flow
        l = ctypes.c_short(packet[SWAT_P1_RIO_AI].level)
        l = current_to_signal(l.value, P1Level)
        f = ctypes.c_short(packet[SWAT_P1_RIO_AI].flow)
        _flow = current_to_signal(f.value, P1Flow)
        _rlevel = l * 0.001

    if SWAT_P1_RIO_DI in packet:
        global _pump1_in, _pump
        _valve = packet[SWAT_P1_RIO_DI].valve_open
        _pump = packet[SWAT_P1_RIO_DI].pump1_run
コード例 #3
0
ファイル: p1_level_model.py プロジェクト: scy-phy/swat
def read_real_level(packet):
    if SWAT_P1_RIO_AI in packet:
        l = ctypes.c_short(packet[SWAT_P1_RIO_AI].level).value
        slevel = ctypes.c_short(packet[SWAT_P1_RIO_AI].level)
        l = current_to_signal(slevel.value, P1Level)
        global _olevel, _elevel, _is_first_pck
        _olevel = l * 0.001
        if _is_first_pck:
            _elevel = _olevel
            _is_first_pck = False
コード例 #4
0
ファイル: p1_level_model.py プロジェクト: scy-phy/swat
def read_real_level(packet):
    if SWAT_P1_RIO_AI in packet:
        l = ctypes.c_short(packet[SWAT_P1_RIO_AI].level).value
        slevel = ctypes.c_short(packet[SWAT_P1_RIO_AI].level)
        l = current_to_signal(slevel.value, P1Level)
        global _olevel, _elevel, _is_first_pck
        _olevel = l * 0.001
        if _is_first_pck:
            _elevel = _olevel
            _is_first_pck = False
コード例 #5
0
def __inject(packet):
    pkt = IP(packet.get_payload())
    if SWAT_P1_RIO_AI in pkt:
        slevel = current_to_signal(pkt[SWAT_P1_RIO_AI].level, P1Level)
        slevel += max_attack if slope_sign else -max_attack
        level = signal_to_current(slevel, P1Level)
        pkt[SWAT_P1_RIO_AI].level = level
        del pkt[UDP].chksum  # Need to recompute checksum
        packet.set_payload(str(pkt))

    packet.accept()
コード例 #6
0
ファイル: p1_level_maximize_bdd.py プロジェクト: scy-phy/swat
def __inject(packet):
    pkt = IP(packet.get_payload())
    if SWAT_P1_RIO_AI in pkt:
        slevel = current_to_signal(pkt[SWAT_P1_RIO_AI].level, P1Level)
        slevel += max_attack if slope_sign else -max_attack
        level = signal_to_current(slevel, P1Level)
        pkt[SWAT_P1_RIO_AI].level = level
        del pkt[UDP].chksum  # Need to recompute checksum
        packet.set_payload(str(pkt))

    packet.accept()
コード例 #7
0
ファイル: p1_multiple_attack.py プロジェクト: scy-phy/swat
def params():
    state = 'Open' if _valve_in else 'Close'
    value = 1 if _valve_in else 0
    print('Valve state: {} ({})'.format(state, value))
    state = 'Open' if _valve_out else 'Close'
    value = 1 if _valve_out else 0
    print('Valve control: {} ({})'.format(state, value))
    state = 'On' if _pump1_in else 'Off'
    value = 1 if _pump1_in else 0
    print('Pump1 state: {} ({})'.format(state, value))
    state = 'On' if _pump1_out else 'Off'
    value = 1 if _pump1_out else 0
    print('Pump1 control: {} ({})'.format(state, value))
    state = 'Open' if _pump2_in else 'Off'
    value = 1 if _pump2_in else 0
    print('Pump2 state: {} ({})'.format(state, value))
    state = 'On' if _pump2_out else 'Off'
    value = 1 if _pump2_out else 0
    print('Pump2 control: {} ({})'.format(state, value))
    sflow = current_to_signal(_flow_in, P1Flow)
    print('Flow: {} m^2/h ({})'.format(sflow, _flow_in))
    slevel = current_to_signal(_level_in, P1Level)
    print('Level: {} mm ({})'.format(slevel, _level_in))
コード例 #8
0
ファイル: p1_level_slope_bias.py プロジェクト: scy-phy/swat
def __inject(packet):
    pkt = IP(packet.get_payload())
    if SWAT_P1_RIO_AI in pkt:
        global _elevel, _alevel, _is_first_pck
        if _is_first_pck:
            _elevel = _alevel = current_to_signal(pkt[SWAT_P1_RIO_AI].level, P1Level) / 1000
            thread.start()
            _is_first_pck = False
        alevel = signal_to_current(_alevel * 1000, P1Level)
        pkt[SWAT_P1_RIO_AI].level = alevel
        del pkt[UDP].chksum  # Need to recompute checksum
        packet.set_payload(str(pkt))

    packet.accept()
コード例 #9
0
ファイル: p1_level_slope_bias.py プロジェクト: scy-phy/swat
def __inject(packet):
    pkt = IP(packet.get_payload())
    if SWAT_P1_RIO_AI in pkt:
        global _elevel, _alevel, _is_first_pck
        if _is_first_pck:
            _elevel = _alevel = current_to_signal(pkt[SWAT_P1_RIO_AI].level, P1Level) / 1000
            thread.start()
            _is_first_pck = False
        alevel = signal_to_current(_alevel * 1000, P1Level)
        pkt[SWAT_P1_RIO_AI].level = alevel
        del pkt[UDP].chksum  # Need to recompute checksum
        packet.set_payload(str(pkt))

    packet.accept()