142 lines
14 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Інфрачервоний
{{#include ../../banners/hacktricks-training.md}}
## Як працює інфрачервоний <a href="#how-the-infrared-port-works" id="how-the-infrared-port-works"></a>
**Інфрачервоне світло невидиме для людей**. Довжина хвилі ІЧ становить **від 0.7 до 1000 мікрон**. Пульт дистанційного керування використовує ІЧ-сигнал для передачі даних і працює в діапазоні довжин хвиль 0.75..1.4 мікрон. Мікроконтролер у пульті змушує інфрачервоний світлодіод блимати з певною частотою, перетворюючи цифровий сигнал в ІЧ-сигнал.
Для прийому ІЧ-сигналів використовується **фотоприймач**. Він **перетворює ІЧ-світло в імпульси напруги**, які вже є **цифровими сигналами**. Зазвичай у приймачі є **фільтр темного світла**, який пропускає **тільки бажану довжину хвилі** і відсікає шум.
### Різноманітність ІЧ-протоколів <a href="#variety-of-ir-protocols" id="variety-of-ir-protocols"></a>
ІЧ-протоколи відрізняються за 3 факторами:
- кодування бітів
- структура даних
- несуча частота — часто в діапазоні 36..38 кГц
#### Способи кодування бітів <a href="#bit-encoding-ways" id="bit-encoding-ways"></a>
**1. Кодування відстані імпульсів**
Біти кодуються шляхом модуляції тривалості простору між імпульсами. Ширина самого імпульсу є сталою.
<figure><img src="../../images/image (295).png" alt=""><figcaption></figcaption></figure>
**2. Кодування ширини імпульсів**
Біти кодуються шляхом модуляції ширини імпульсу. Ширина простору після сплеску імпульсу є сталою.
<figure><img src="../../images/image (282).png" alt=""><figcaption></figcaption></figure>
**3. Кодування фази**
Це також відомо як кодування Манчестера. Логічне значення визначається полярністю переходу між сплеском імпульсу та простором. "Простір до сплеску імпульсу" позначає логіку "0", "сплеск імпульсу до простору" позначає логіку "1".
<figure><img src="../../images/image (634).png" alt=""><figcaption></figcaption></figure>
**4. Комбінація попередніх і інших екзотичних**
> [!TIP]
> Існують ІЧ-протоколи, які **намагаються стати універсальними** для кількох типів пристроїв. Найвідоміші з них — RC5 і NEC. На жаль, найвідоміше **не означає найпоширеніше**. У моєму середовищі я зустрів лише два пульти NEC і жодного RC5.
>
> Виробники люблять використовувати свої унікальні ІЧ-протоколи, навіть у межах одного і того ж діапазону пристроїв (наприклад, ТВ-бокси). Тому пульти від різних компаній і іноді від різних моделей однієї компанії не можуть працювати з іншими пристроями того ж типу.
### Дослідження ІЧ-сигналу
Найнадійніший спосіб побачити, як виглядає ІЧ-сигнал пульта, — це використовувати осцилограф. Він не демодулює і не інвертує отриманий сигнал, він просто відображається "як є". Це корисно для тестування та налагодження. Я покажу очікуваний сигнал на прикладі ІЧ-протоколу NEC.
<figure><img src="../../images/image (235).png" alt=""><figcaption></figcaption></figure>
Зазвичай на початку закодованого пакета є преамбула. Це дозволяє приймачеві визначити рівень підсилення та фоновий шум. Існують також протоколи без преамбули, наприклад, Sharp.
Потім передаються дані. Структура, преамбула та метод кодування бітів визначаються конкретним протоколом.
**ІЧ-протокол NEC** містить коротку команду та код повторення, який надсилається під час натискання кнопки. Як команда, так і код повторення мають однакову преамбулу на початку.
Команда **NEC**, крім преамбули, складається з байта адреси та байта номера команди, за якими пристрій розуміє, що потрібно виконати. Байти адреси та номера команди дублюються з інверсними значеннями, щоб перевірити цілісність передачі. В кінці команди є додатковий стоп-біт.
Код **повторення** має "1" після преамбули, що є стоп-бітом.
Для **логіки "0" і "1"** NEC використовує кодування відстані імпульсів: спочатку передається сплеск імпульсу, після якого йде пауза, довжина якої задає значення біта.
### Кондиціонери
На відміну від інших пультів, **кондиціонери не передають лише код натиснутої кнопки**. Вони також **передають всю інформацію**, коли кнопка натискається, щоб забезпечити, що **кондиціонер і пульт синхронізовані**.\
Це дозволить уникнути ситуації, коли машина, налаштована на 20ºC, підвищується до 21ºC з одного пульта, а потім, коли використовується інший пульт, який все ще має температуру 20ºC, температура підвищується до 21ºC (а не до 22ºC, вважаючи, що вона на 21ºC).
---
## Атаки та наступальні дослідження <a href="#attacks" id="attacks"></a>
Ви можете атакувати інфрачервоний з Flipper Zero:
{{#ref}}
flipper-zero/fz-infrared.md
{{#endref}}
### Захоплення Smart-TV / ТВ-приставки (EvilScreen)
Недавня академічна робота (EvilScreen, 2022) продемонструвала, що **багатоканальні пульти, які поєднують інфрачервоний з Bluetooth або Wi-Fi, можуть бути зловживані для повного захоплення сучасних смарт-ТВ**. Атака поєднує високопривілейовані ІЧ-сервісні коди з автентифікованими Bluetooth-пакетами, обходячи ізоляцію каналів і дозволяючи запускати довільні програми, активувати мікрофон або скинути заводські налаштування без фізичного доступу. Вісім основних телевізорів від різних виробників — включаючи модель Samsung, яка стверджує про відповідність ISO/IEC 27001були підтверджені як вразливі. Пом'якшення вимагає виправлень прошивки від виробника або повного відключення невикористовуваних ІЧ-приймачів.
### Витік даних з повітря через ІЧ-світлодіоди (сімейство aIR-Jumper)
Системи безпеки, маршрутизатори або навіть шкідливі USB-накопичувачі часто містять **ІЧ-світлодіоди нічного бачення**. Дослідження показують, що шкідливе ПЗ може модуляціювати ці світлодіоди (<1020 кбіт/с з простим OOK), щоб **викрадати секрети через стіни та вікна** до зовнішньої камери, розташованої за десятки метрів. Оскільки світло знаходиться за межами видимого спектра, оператори рідко помічають. Заходи протидії:
* Фізично захистити або видалити ІЧ-світлодіоди в чутливих зонах
* Моніторити робочий цикл світлодіодів камер і цілісність прошивки
* Встановити ІЧ-фільтри на вікнах і камерах спостереження
Атакуючий також може використовувати потужні ІЧ-прожектори, щоб **внедрити** команди в мережу, миготячи даними назад до незахищених камер.
### Далекобійний брутфорс та розширені протоколи з Flipper Zero 1.0
Прошивка 1.0 (вересень 2024) додала **десятки додаткових ІЧ-протоколів та необов'язкових зовнішніх підсилювачів**. У поєднанні з режимом брутфорсу універсального пульта, Flipper може вимкнути або переналаштувати більшість публічних телевізорів/кондиціонерів з відстані до 30 м, використовуючи діод високої потужності.
---
## Інструменти та практичні приклади <a href="#tooling" id="tooling"></a>
### Апаратура
* **Flipper Zero** портативний трансивер з режимами навчання, відтворення та словникового брутфорсу (див. вище).
* **Arduino / ESP32** + ІЧ-світлодіод / приймач TSOP38xx дешевий DIY аналізатор/передавач. Поєднуйте з бібліотекою `Arduino-IRremote` (v4.x підтримує >40 протоколів).
* **Логічні аналізатори** (Saleae/FX2) захоплюють сирі таймінги, коли протокол невідомий.
* **Смартфони з ІЧ-бластером** (наприклад, Xiaomi) швидкий польовий тест, але обмежений діапазон.
### Програмне забезпечення
* **`Arduino-IRremote`** активно підтримувана бібліотека C++:
```cpp
#include <IRremote.hpp>
IRsend sender;
void setup(){ sender.begin(); }
void loop(){
sender.sendNEC(0x20DF10EF, 32); // Samsung TV Power
delay(5000);
}
```
* **IRscrutinizer / AnalysIR** графічні декодери, які імпортують сирі захоплення та автоматично ідентифікують протокол + генерують код Pronto/Arduino.
* **LIRC / ir-keytable (Linux)** отримують і впроваджують ІЧ з командного рядка:
```bash
sudo ir-keytable -p nec,rc5 -t # live-dump decoded scancodes
irsend SEND_ONCE samsung KEY_POWER
```
---
## Заходи захисту <a href="#defense" id="defense"></a>
* Вимкніть або закрийте ІЧ-приймачі на пристроях, розгорнуті в громадських місцях, коли це не потрібно.
* Впровадьте *пару* або криптографічні перевірки між смарт-ТВ та пультами; ізолюйте привілейовані "сервісні" коди.
* Встановіть ІЧ-фільтри або детектори безперервної хвилі в навколо закритих зон, щоб зламати оптичні приховані канали.
* Моніторте цілісність прошивки камер/IoT-пристроїв, які відкривають контрольовані ІЧ-світлодіоди.
## Посилання
- [Flipper Zero Infrared blog post](https://blog.flipperzero.one/infrared/)
- EvilScreen: захоплення смарт-ТВ через імітацію пульта (arXiv 2210.03014)
{{#include ../../banners/hacktricks-training.md}}