# Infrared

<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS红队专家）</strong></a><strong>！</strong></summary>

支持HackTricks的其他方式：

* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**，请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。

</details>

## 红外线的工作原理 <a href="#how-the-infrared-port-works" id="how-the-infrared-port-works"></a>

**红外光对人类是不可见的**。红外波长范围为**0.7到1000微米**。家用遥控器使用红外信号进行数据传输，工作波长范围为0.75到1.4微米。遥控器中的微控制器会以特定频率使红外LED闪烁，将数字信号转换为红外信号。

为了接收红外信号，使用**光电接收器**。它将**红外光转换为电压脉冲**，这些脉冲已经是**数字信号**。通常，接收器内部有一个**暗光滤波器**，只允许**所需波长通过**，并消除噪音。

### 各种红外协议 <a href="#variety-of-ir-protocols" id="variety-of-ir-protocols"></a>

红外协议在以下三个因素上有所不同：

* 位编码
* 数据结构
* 载波频率 — 通常在36到38千赫范围内

#### 位编码方式 <a href="#bit-encoding-ways" id="bit-encoding-ways"></a>

**1. 脉冲距离编码**

通过调制脉冲之间的间隔持续时间来对位进行编码。脉冲本身的宽度是恒定的。

<figure><img src="/files/5zz8WOqPVAV9d1APrJaQ" alt=""><figcaption></figcaption></figure>

**2. 脉冲宽度编码**

通过调制脉冲宽度来对位进行编码。脉冲爆发后的空间宽度是恒定的。

<figure><img src="/files/DxuamLbtQ3jX0lBIRMOL" alt=""><figcaption></figcaption></figure>

**3. 相位编码**

也称为曼彻斯特编码。逻辑值由脉冲爆发和空间之间的极性转换来定义。“空间到脉冲爆发”表示逻辑“0”，“脉冲爆发到空间”表示逻辑“1”。

<figure><img src="/files/jZgLrPyPmTxDRpIFVpl5" alt=""><figcaption></figcaption></figure>

**4. 前述方式的组合和其他特殊方式**

{% hint style="info" %}
有些红外协议**试图成为多种设备的通用协议**。最著名的是RC5和NEC。不幸的是，最著名的**并不意味着最常见**。在我的环境中，我只遇到了两个NEC遥控器，没有遇到RC5遥控器。

制造商喜欢在同一范围内的设备（例如电视盒）中使用自己独特的红外协议。因此，来自不同公司甚至来自同一公司不同型号的遥控器，无法与同类型的其他设备配合使用。
{% endhint %}

### 探索红外信号

查看遥控器红外信号外观最可靠的方法是使用示波器。它不会解调或反转接收到的信号，只是“原样”显示。这对于测试和调试很有用。我将以NEC红外协议为例展示预期信号。

<figure><img src="/files/ikaUppzj5O5KbH1mp1Jb" alt=""><figcaption></figcaption></figure>

通常，在编码数据包的开头会有一个前导码。这使接收器能够确定增益和背景水平。也有一些没有前导码的协议，例如Sharp。

然后传输数据。结构、前导码和位编码方法由具体协议确定。

**NEC红外协议**包含一个简短的命令和一个重复码，在按下按钮时发送。命令和重复码在开头都有相同的前导码。

NEC **命令**除了前导码外，还包括地址字节和命令号字节，设备通过这些字节了解需要执行什么操作。地址和命令号字节是具有相反值的重复值，以检查传输的完整性。命令末尾还有一个额外的停止位。

**重复码**在前导码后有一个“1”，这是一个停止位。

对于逻辑“0”和“1”，NEC使用脉冲距离编码：首先传输脉冲爆发，然后是一个暂停，其长度设置位的值。

### 空调

与其他遥控器不同，**空调不仅传输按下按钮的代码**。它们还在按下按钮时**传输所有信息**，以确保**空调机器和遥控器同步**。\
这将避免一个设定为20ºC的机器被一个遥控器增加到21ºC，然后当另一个遥控器，仍将温度设定为20ºC，用于进一步增加温度时，它会“增加”到21ºC（而不是以为在21ºC时增加到22ºC）。

### 攻击

您可以使用Flipper Zero对红外线进行攻击：

{% content-ref url="/pages/EykQAHZze62yLVfIgzFU" %}
[FZ - Infrared](/todo/radio-hacking/flipper-zero/fz-infrared.md)
{% endcontent-ref %}

## 参考资料

* <https://blog.flipperzero.one/infrared/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hacktricks.xsx.tw/todo/radio-hacking/infrared.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
