mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
142 lines
14 KiB
Markdown
142 lines
14 KiB
Markdown
# Інфрачервоний
|
||
|
||
{{#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-накопичувачі часто містять **ІЧ-світлодіоди нічного бачення**. Дослідження показують, що шкідливе ПЗ може модуляціювати ці світлодіоди (<10–20 кбіт/с з простим 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}}
|