Емулятор SCADA/Modbus TCP
Цей емулятор призначений для Live Fire cyber range як контрольований OT/ICS endpoint, який використовує Modbus TCP і створює телеметрію для моніторингу, threat hunting, incident response та after-action review.
І емулятор, і консоль оператора написані на PowerShell 🙂
Консоль оператора має вигляд:
GUI циклічно читає рівень резервуара, температуру, тиск, alarm status, setpoint і стан coils. Центральна мнемосхема показує резервуар, труби, насос і клапани. Оператор може:
- перемикати насос;
- відкривати або закривати inlet/outlet valve;
- вмикати manual mode;
- скидати alarm;
- змінювати level setpoint;
- задавати бажану температуру;
- перемикати heater mode між “AUTO”, “ON” і “OFF”.
На мнемосхемі:
- рівень води в резервуарі змінюється відповідно до register “0”;
- inlet/outlet valves зелені, коли відкриті, і червоні, коли закриті;
- насос позначається зеленим станом, коли coil “0” активний;
- alarm badge стає червоним при high/low level alarm;
- manual/auto mode показується окремим індикатором;
- heater indicator показує, чи обігрівач фактично гріє.
Карта Modbus
Coils
| Адреса | Назва | Опис |
|---|---|---|
| 0 | Pump Run Command | Команда запуску насоса |
| 1 | Inlet Valve Open | Команда відкриття вхідного клапана |
| 2 | Outlet Valve Open | Команда відкриття вихідного клапана |
| 3 | Alarm Reset | Скидання аварії, якщо рівень повернувся до норми |
| 4 | Manual Mode | Вимикає автоматичне керування setpoint |
Discrete Inputs
| Адреса | Назва | Опис |
|---|---|---|
| 0 | High Level Alarm | Рівень резервуара вище порогу |
| 1 | Low Level Alarm | Рівень резервуара нижче порогу |
| 2 | Pump Feedback | Стан насоса |
| 3 | Manual Mode Feedback | Ознака ручного режиму |
| 4 | Heater Feedback | Фактичний стан обігрівача |
Holding Registers
| Адреса | Назва | Опис |
|---|---|---|
| 0 | Tank Level Percent | Поточний рівень резервуара, 0-100 |
| 10 | Alarm Status | 0 normal, 1 high level, 2 low level |
| 20 | Level Setpoint | Цільовий рівень для автоматичного режиму |
| 21 | Temperature Setpoint C x10 | Бажана температура у десятих частках градуса |
| 22 | Heater Mode | 0 auto, 1 on, 2 off |
Input Registers
| Адреса | Назва | Опис |
|---|---|---|
| 0 | Tank Level Percent | Поточний рівень резервуара, 0-100 |
| 1 | Temperature C x10 | Температура у десятих частках градуса |
| 2 | Pressure kPa | Тиск у кПа |
Підтримувані функції Modbus
- "01" Read Coils
- "02" Read Discrete Inputs
- "03" Read Holding Registers
- "04" Read Input Registers
- "05" Write Single Coil
- "06" Write Single Register
- "15" Write Multiple Coils
- "16" Write Multiple Registers
Приклади перевірки
З клієнта Modbus прочитайте holding register 0 для Unit ID 1`, щоб отримати рівень резервуара.

