# Інфрачервоний
{{#include ../../banners/hacktricks-training.md}}
## Як працює інфрачервоний
**Інфрачервоне світло невидиме для людей**. Довжина хвилі ІЧ становить **від 0.7 до 1000 мікрон**. Пульт дистанційного керування використовує ІЧ сигнал для передачі даних і працює в діапазоні довжин хвиль 0.75..1.4 мікрон. Мікроконтролер у пульті змушує інфрачервоний світлодіод блимати з певною частотою, перетворюючи цифровий сигнал в ІЧ сигнал.
Для прийому ІЧ сигналів використовується **фотоприймач**. Він **перетворює ІЧ світло в імпульси напруги**, які вже є **цифровими сигналами**. Зазвичай, всередині приймача є **фільтр темного світла**, який пропускає **тільки бажану довжину хвилі** і відсікає шум.
### Різноманітність ІЧ протоколів
ІЧ протоколи відрізняються за 3 факторами:
- кодування бітів
- структура даних
- несуча частота — часто в діапазоні 36..38 кГц
#### Способи кодування бітів
**1. Кодування відстані імпульсів**
Біти кодуються шляхом модуляції тривалості простору між імпульсами. Ширина самого імпульсу є сталою.
**2. Кодування ширини імпульсів**
Біти кодуються шляхом модуляції ширини імпульсу. Ширина простору після сплеску імпульсу є сталою.
**3. Фазове кодування**
Це також відоме як кодування Манчестера. Логічне значення визначається полярністю переходу між сплеском імпульсу та простором. "Простір до сплеску імпульсу" позначає логіку "0", "сплеск імпульсу до простору" позначає логіку "1".
**4. Комбінація попередніх та інших екзотичних**
> [!NOTE]
> Існують ІЧ протоколи, які **намагаються стати універсальними** для кількох типів пристроїв. Найвідоміші з них — RC5 та NEC. На жаль, найвідоміше **не означає найпоширеніше**. У моєму оточенні я зустрів лише два пульти NEC і жодного RC5.
>
> Виробники люблять використовувати свої унікальні ІЧ протоколи, навіть у межах одного і того ж діапазону пристроїв (наприклад, ТВ-бокси). Тому пульти від різних компаній і іноді від різних моделей однієї компанії не можуть працювати з іншими пристроями того ж типу.
### Дослідження ІЧ сигналу
Найнадійніший спосіб побачити, як виглядає ІЧ сигнал пульта, — це використовувати осцилограф. Він не демодулює і не інвертує отриманий сигнал, він просто відображається "як є". Це корисно для тестування та налагодження. Я покажу очікуваний сигнал на прикладі протоколу NEC.
Зазвичай на початку закодованого пакета є преамбула. Це дозволяє приймачу визначити рівень підсилення та фоновий шум. Існують також протоколи без преамбули, наприклад, Sharp.
Потім передаються дані. Структура, преамбула та метод кодування бітів визначаються конкретним протоколом.
**Протокол NEC** містить коротку команду та код повторення, який надсилається під час натискання кнопки. Як команда, так і код повторення мають однакову преамбулу на початку.
**Команда NEC**, крім преамбули, складається з байта адреси та байта номера команди, за яким пристрій розуміє, що потрібно виконати. Байти адреси та номера команди дублюються з інверсними значеннями, щоб перевірити цілісність передачі. В кінці команди є додатковий стоп-біт.
**Код повторення** має "1" після преамбули, що є стоп-бітом.
Для **логіки "0" та "1"** NEC використовує кодування відстані імпульсів: спочатку передається сплеск імпульсу, після якого йде пауза, довжина якої задає значення біта.
### Кондиціонери
На відміну від інших пультів, **кондиціонери не передають лише код натиснутої кнопки**. Вони також **передають всю інформацію**, коли кнопка натискається, щоб забезпечити, що **кондиціонер і пульт синхронізовані**.\
Це дозволить уникнути ситуації, коли машина, налаштована на 20ºC, підвищується до 21ºC з одного пульта, а потім, коли використовується інший пульт, який все ще має температуру 20ºC, температура підвищується до 21ºC (а не до 22ºC, вважаючи, що вона на 21ºC).
### Атаки
Ви можете атакувати інфрачервоний з Flipper Zero:
{{#ref}}
flipper-zero/fz-infrared.md
{{#endref}}
## Посилання
- [https://blog.flipperzero.one/infrared/](https://blog.flipperzero.one/infrared/)
{{#include ../../banners/hacktricks-training.md}}