# Pentesting RFID

<details>

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

* 您在**网络安全公司**工作吗？想要在 HackTricks 上看到您的**公司广告**吗？或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**吗？请查看[**订阅计划**](https://github.com/sponsors/carlospolop)！
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family)，我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**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) 提交 PR 来分享您的黑客技巧。

</details>

## 简介

**射频识别（RFID）** 是最流行的短距离射频解决方案。通常用于存储和传输标识实体的信息。

RFID 标签可以依赖于**自己的电源（主动）**，如嵌入式电池，或通过从接收到的射频波中感应的电流从读取天线接收电源（**被动**）。

### 类别

EPCglobal 将 RFID 标签分为六个类别。每个类别中的标签具有前一个类别中列出的所有功能，使其向后兼容。

* **Class 0** 标签是在**UHF**频段中运行的**被动**标签。供应商在生产工厂**预编程**它们。因此，您**无法更改**存储在其内存中的信息。
* **Class 1** 标签也可以在**HF**频段中运行。此外，它们只能在生产后**写入一次**。许多 Class 1 标签还可以处理它们接收到的命令的**循环冗余检查**（CRC）。CRC 是用于错误检测的命令末尾的几个额外字节。
* **Class 2** 标签可以**多次写入**。
* **Class 3** 标签可以包含**嵌入式传感器**，可以记录环境参数，如当前温度或标签的运动。这些标签是**半被动**的，因为尽管它们**具有**嵌入式电源，如集成**电池**，但它们**无法**与其他标签或读取器**启动**无线**通信**。
* **Class 4** 标签可以与同一类别的其他标签启动通信，使它们成为**主动标签**。
* **Class 5** 标签可以为其他标签提供**电源**并与所有先前的标签**类别**通信。Class 5 标签可以充当**RFID 读取器**。

### 存储在 RFID 标签中的信息

RFID 标签的存储器通常存储四种数据：**标识数据**，用于**标识**标签附加的**实体**的数据（此数据包括用户定义的字段，如银行账户）；**补充数据**，提供有关实体的**进一步** **详细信息**；**控制数据**，用于标签的内部**配置**；以及标签的**制造商数据**，其中包含标签的唯一标识符（**UID**）和有关标签的**生产**、**类型**和**供应商**的详细信息。您会在所有商用标签中找到前两种数据；最后两种数据可能会根据标签的供应商而有所不同。

ISO 标准指定了应用系列标识符（**AFI**）值，这是指示标签所属对象**类型**的代码。ISO 还指定了另一个重要寄存器，即数据存储格式标识符（**DSFID**），它定义了用户数据的**逻辑组织**。

大多数 RFID **安全控制**都具有**限制**对每个用户存储块和包含 AFI 和 DSFID 值的特殊寄存器的**读取**或**写入**操作的机制。这些**锁定** **机制**使用存储在控制存储器中的数据，并具有供应商预配置的**默认密码**，但允许标签所有者**配置自定义密码**。

### 低频和高频标签比较

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

## 低频 RFID 标签（125kHz）

**低频标签**通常用于**不需要高安全性**的系统：建筑门禁、对讲钥匙、健身会员卡等。由于其较高的范围，它们方便用于付费停车场：驾驶员无需将卡靠近读卡器，因为它可以从较远处触发。与此同时，低频标签非常简单，数据传输速率低。因此，对于保持余额和加密等复杂的双向数据传输是不可能的。低频标签仅传输其短 ID，没有任何身份验证手段。

这些设备依赖于**被动** **RFID** 技术，工作在**30 kHz 到 300 kHz**的范围内，尽管更常见的是使用 125 kHz 到 134 kHz：

* **长距离** — 低频转换为更远的范围。有一些 EM-Marin 和 HID 读卡器，可以在长达一米的距离内工作。这些通常用于停车场。
* **原始协议** — 由于数据传输速率低，这些标签只能传输其短 ID。在大多数情况下，数据未经身份验证，也没有任何保护措施。一旦卡片在读卡器的范围内，它就开始传输其 ID。
* **低安全性** — 这些卡片可以轻松复制，甚至可以从别人口袋中读取，因为协议的原始性。

**流行的 125 kHz 协议：**

* **EM-Marin** — EM4100、EM4102。CIS 中最流行的协议。由于其简单性和稳定性，可以从大约一米处读取。
* **HID Prox II** — HID Global 推出的低频协议。这个协议在西方国家更受欢迎。它更复杂，该协议的卡片和读卡器相对昂贵。
* **Indala** — 由 Motorola 推出的非常古老的低频协议，后来被 HID 收购。与前两者相比，您更不太可能在野外遇到它，因为它正在退出使用。

实际上，还有许多低频协议。但它们都在物理层上使用相同的调制，并且可以被认为在某种程度上是上述列出的协议的变体。

### 攻击

您可以使用 **Flipper Zero** **攻击这些标签**：

{% content-ref url="/pages/PX1j6KxiqTLbk4q8ARyt" %}
[FZ - 125kHz RFID](/todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
{% endcontent-ref %}

## 高频 RFID 标签（13.56 MHz）

**高频标签**用于更复杂的读卡器-标签交互，当您需要加密、大规模双向数据传输、身份验证等时。\
通常在银行卡、公共交通和其他安全通行证中找到。

**高频 13.56 MHz 标签是一组标准和协议**。它们通常被称为[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)，但这并不总是正确的。在物理和逻辑层上使用的基本协议集是 ISO 14443。高级协议以及替代标准（如 ISO 19092）都是基于它的。许多人将这项技术称为**近场通信（NFC）**，这是指在 13.56 MHz 频率上运行的设备的术语。

<figure><img src="/files/9ObVV73jS29nXkaGwRFT" alt=""><figcaption></figcaption></figure>

简单来说，NFC 的架构如下：传输协议由制作卡片的公司选择，并基于低级 ISO 14443 实现。例如，NXP 发明了自己的高级传输协议，称为 Mifare。但在较低级别上，Mifare 卡基于 ISO 14443-A 标准。

Flipper 可以与低级 ISO 14443 协议、Mifare Ultralight 数据传输协议以及银行卡中使用的 EMV 进行交互。我们正在努力添加对 Mifare Classic 和 NFC NDEF 的支持。对构成 NFC 的协议和标准进行深入了解值得一篇单独的文章，我们计划稍后发布。

所有基于 ISO 14443-A 标准的高频卡都有一个唯一的芯片 ID。它充当卡片的序列号，类似于网络卡的 MAC 地址。**通常，UID 长度为 4 或 7 字节**，但很少会**达到 10**。UID 不是秘密，很容易读取，**有时甚至印在卡片上**。

许多访问控制系统依赖于 UID 进行**身份验证和授权**。有时，即使 RFID 标签**支持加密**，也会发生这种情况。这种**误用**将其降至**低频卡**的**安全**水平。虚拟卡（如 Apple Pay）使用动态 UID，以便手机所有者不会使用其支付应用程序开门。

* **短距离** — 高频卡专门设计为必须靠近读卡器。这也有助于保护卡片免受未经授权的交互。我们设法实现的最大读取范围约为 15 厘米，这是通过定制的高范围读卡器实现的。
* **高级协议** — 高达 424 kbps 的数据传输速度允许具有完整双向数据传输的复杂协议。这反过来**允许加密**、数据传输等。
* **高安全性** — 高频非接触式卡片在安全性方面不逊于智能卡。有些卡片支持像 AES 这样的加密强算法，并实现了非对称加密。

### 攻击

您可以使用 **Flipper Zero** **攻击这些标签**：

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

或使用 **proxmark**：

{% content-ref url="/pages/SrUwvmNkKyiZeSzo6Qoo" %}
[Proxmark 3](/todo/radio-hacking/proxmark-3.md)
{% endcontent-ref %}

## 参考资料

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

<details>

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

* 您在**网络安全公司**工作吗？想要在 HackTricks 上看到您的**公司广告**吗？或者想要访问**PEASS 的最新版本或下载 HackTricks 的 PDF**吗？请查看[**订阅计划**](https://github.com/sponsors/carlospolop)！
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family)，我们的独家[NFT](https://opensea.io/collection/the-peass-family)收藏品
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**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) 提交 PR 来分享您的黑客技巧。

</details>


---

# 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/pentesting-rfid.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.
