杰瑞科技汇

Mifare经典工具怎么用?入门教程看这里!

目录

  1. Mifare Classic 基础知识
    • 它是什么?
    • 工作原理:扇区、块、数据结构
    • 安全机制:密钥与访问条件
  2. 准备工作:硬件与软件
    • 硬件:你需要什么读卡器?
    • 软件:工具包推荐与安装
  3. 核心工具实战篇
    • mfoc (Mifare Classic Offline Cracker) - 密钥破解
    • nfc-list & nfc-mfclassic - 卡片信息读取与写入
    • libnfc-utils - 基础交互
  4. 完整工作流程示例
    • 读取一张未知卡片的全部数据
    • 克隆一张 Mifare Classic 卡片
  5. 安全性与法律声明
    • 重要警告
    • 合法用途
  6. 进阶学习资源

Mifare Classic 基础知识

它是什么?

Mifare Classic 是由恩智浦半导体生产的一系列非接触式智能卡芯片,工作在 13.56MHz 的频率下,它被广泛用于门禁卡、交通卡、会员卡、校园卡等,它的主要特点是成本低,但也因此存在严重的安全漏洞。

Mifare经典工具怎么用?入门教程看这里!-图1
(图片来源网络,侵删)

工作原理:扇区、块、数据结构

Mifare Classic 卡片的数据存储结构是理解操作的基础。

  • 扇区: 卡片被划分为 16 个扇区,编号从 0 到 15。
  • 块: 每个扇区由多个块组成。
    • 扇区 0-15 (标准扇区): 每个扇区有 4 个块(块 0, 1, 2, 3)。
    • 数据块: 块 0, 1, 2 通常是数据块,每个块可以存储 16 字节(128 位)的数据。
    • 块 3 (密钥块/ trailer block): 每个扇区的最后一个块(块 3)比较特殊,不存储用户数据,而是存储该扇区的两个密钥(KeyA 和 KeyB)访问条件位

数据块结构

一个标准的 16 字节数据块结构如下:

+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| Byte 0 | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | ... | Byte 15 |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+

你可以将这 16 个字节自由地用于存储信息,如 ID 号、权限、积分等。

密钥与访问条件

  • 密钥: 每个扇区都有两个独立的 6 字节(48 位)的密钥,分别是 KeyAKeyB,在对扇区进行任何读写操作前,必须先验证对应的密钥成功。
  • 默认密钥: 很多卡片出厂时使用默认密钥,最常见的是 FFFFFFFFFFFF (全F) 或 000000000000 (全0),这是破解的突破口。
  • 访问条件: 位于每个扇区的块 3,它定义了在不同密钥验证成功后,对数据块(0, 1, 2)的读写权限,这个机制非常复杂,是 Mifare Classic 安全性的核心,也是其弱点所在。

准备工作:硬件与软件

硬件:你需要什么读卡器?

你需要一个能够支持 Mifare Classic 的 USB 读卡器,市面上主要有两种:

Mifare经典工具怎么用?入门教程看这里!-图2
(图片来源网络,侵删)
  1. ACR122U: 最经典、最推荐的选择,它基于 PCSC 标准,兼容性极佳,支持 Windows, Linux, macOS,使用 libnfcPCSC 工具链都可以驱动。
  2. PN532: 基于 libnfc 的读卡器,通常集成在小巧的开发板或模块上(如 Adafruit 的产品),功能强大,但配置可能稍复杂。

推荐: 初学者直接购买 ACR122U 即可。

软件:工具包推荐与安装

我们将使用功能最强大、最主流的开源工具包 libnfc,它包含了一系列命令行工具,是 Mifare Classic 研究的瑞士军刀。

环境:Linux (以 Ubuntu/Debian 为例)

  1. 安装依赖和 libnfc 工具包:
    sudo apt-get update
    sudo apt-get install pcscd pcsc-tools libnfc-bin libnfc-dev
  2. 检查读卡器是否被识别: 插入 ACR122U 读卡器,然后运行:
    pcsc_scan

    如果能看到你的读卡器信息(如 ACS ACR122U PICC Interface 00),说明硬件连接正常。 再运行:

    Mifare经典工具怎么用?入门教程看这里!-图3
    (图片来源网络,侵删)
    nfc-list

    如果能列出读卡器型号(如 NFC device: ACS ACR122U PICC Interface 00 [ACS ACR122U USB-NFC Reader]),说明软件驱动正常。


核心工具实战篇

假设你已经成功连接了读卡器,并且有一张 Mifare Classic 卡片在读卡器范围内。

mfoc (Mifare Classic Offline Cracker) - 密钥破解

mfoc 的作用是非离线暴力破解卡片密钥,它利用了 Mifare Classic 的一个漏洞(Nested Attack),可以在几分钟内破解出卡片上所有扇区的密钥,而无需知道任何一个密钥。

安装: mfoc 通常包含在 libnfc-toolsmfoc 的独立包中。

sudo apt-get install mfoc

使用方法:

  1. 在终端运行 mfoc
    mfoc
  2. 将卡片放在读卡器上,mfoc 会自动开始尝试破解。
  3. 成功后,它会生成一个文件,默认名为 keys-7-8-9-10-11-12-13-14-15.bin,这个文件包含了破解出的所有密钥。

输出解读: 你会看到类似这样的输出:

|-----------------------------------------|
|  Trying nested attack with key FF FF FF FF FF FF... (found 0 keys)
|  Trying nested attack with key A0 A1 A2 A3 A4 A5... (found 1 keys)
|-----------------------------------------|
|  Found 16 keys on 16 sectors!
|  Keys written to file: keys-7-8-9-10-11-12-13-14-15.bin

这表示它找到了 16 个扇区的密钥,并保存到了 keys-7-8-9-10-11-12-13-14-15.bin 文件中。

nfc-list & nfc-mfclassic - 卡片信息读取与写入

这是最核心的读写工具。

读取卡片信息

nfc-mfclassic r a.dump
  • r: read (读取) 模式。
  • a.dump: 输出的文件名,这个文件将包含卡片的全部数据,包括所有扇区的所有块。
  • 如果提示 "Error: No default keys found",说明默认密钥不工作,这时就需要先用 mfoc 破解出密钥。

使用密钥读取卡片信息 如果你有了一个密钥文件(keys.bin),可以这样读取:

nfc-mfclassic r a.dump -k keys.bin
  • -k keys.bin: 指定密钥文件。nfc-mfclassic 会自动用文件中的密钥去尝试读取每个扇区。

写入数据 写入操作非常危险,一旦写错,可能导致卡片永久损坏或数据丢失。强烈建议先完整读取一张卡,修改备份文件,然后写入备份文件进行测试。

假设你已经有了 a.dump 文件,并且想修改它:

  1. 用十六进制编辑器修改 a.dump 文件:
    • 在 Linux 上可以使用 bvi, hexedithexeditor
    • sudo apt-get install hexedit
    • hexedit a.dump
    • 你会看到 16 进制的数据,每个扇区有 4 个块,每块 32 个字符(16字节),修改时请务必小心。
  2. 将修改后的数据写入卡片:
    nfc-mfclassic w a.dump
    • w: write (写入) 模式。
    • 同样,如果需要密钥,请使用 -k 参数:nfc-mfclassic w a.dump -k keys.bin

libnfc-utils - 基础交互

这个工具包里还有一些其他有用的工具。

nfc-list 我们已经用过,用于列出连接的读卡器。

nfc-poll 轮询卡片信息,可以快速查看卡片的 UID、类型等基本信息。

nfc-poll

nfc-mfgen Mifare Classic 通用工具,可以快速生成 UID 或修改块数据,比 nfc-mfclassic 更简单,但功能也较少,适合快速测试。


完整工作流程示例

读取一张未知卡片的全部数据

  1. 连接硬件: 插入 ACR122U 读卡器。
  2. 检查环境:
    nfc-list
  3. 尝试用默认密钥读取:
    nfc-mfclassic r a.dump
    • 情况A(成功): 直接生成了 a.dump 文件,跳到第5步。
    • 情况B(失败): 提示 No default keys found,进入第4步。
  4. 使用 mfoc 破解密钥:
    mfoc

    等待破解完成,得到 keys-7-8-9-10-11-12-13-14-15.bin 文件(重命名为 keys.bin 更方便)。

  5. 使用破解的密钥读取数据:
    nfc-mfclassic r a.dump -k keys.bin

    a.dump 文件包含了这张卡片的完整数据镜像,你可以用 hexedit 查看或修改它。

克隆一张 Mifare Classic 卡片

克隆的本质是将源卡片的全部数据(包括密钥)完整地复制到目标卡片上目标卡片必须是空白或可被覆盖的 Mifare Classic 卡片

  1. 读取源卡片: 按照场景一的方法,读取源卡片的数据,得到 source.dump 文件。
    mfoc -O source.dump  # 直接输出到source.dump
    # 或者
    nfc-mfclassic r source.dump -k keys.bin
  2. 准备目标卡片: 找一张空白的 Mifare Classic 卡片(或一张你愿意牺牲的卡片)。
  3. 将数据写入目标卡片:
    nfc-mfclassic w source.dump
    • 系统会提示你将目标卡片放到读卡器上。
    • 写入完成后,目标卡片就成为了一张与源卡片完全一样的克隆卡。

安全性与法律声明

重要警告

  • 高风险操作: 写入 Mifare Classic 卡片有很高的风险,错误的写入操作(如扇区不匹配、密钥错误)可能会导致卡片被“锁死”,永久无法再被读取或写入。
  • 数据丢失: 不要尝试写入一张正在使用中的、重要的卡片(如你的门禁卡、交通卡),除非你 100% 确定你在做什么并且有备用方案。
  • 技术学习: 本教程旨在用于教育和技术研究,帮助你理解 RFID 技术的工作原理和安全机制。

合法用途

  • 数据备份与恢复: 为自己的卡片创建一个数据备份,以防卡片丢失或损坏。
  • 定制开发: 开发自己的项目,如制作游戏道具卡、自定义会员卡等。
  • 安全研究: 分析和测试 Mifare Classic 的安全漏洞,以促进其被更安全的替代品(如 Mifare DESFire)所取代。

非法用途

  • 未经授权的克隆: 克隆他人的门禁卡、交通卡以获取非法访问权限。
  • 数据窃取: 窃取他人卡片中的敏感信息。

任何用于非法目的的行为都将承担严重的法律后果,请务必遵守当地法律法规,仅在授权范围内进行技术探索。


进阶学习资源

  • libnfc 官方文档: https://github.com/nfc-tools/libnfc
  • mfoc 项目主页: https://github.com/nfc-tools/mfoc
  • 经典论文: "Dark Side of Security by Obscurity: An Analysis of the Mifare Classic Crypto System" - 这篇论文详细揭露了 Mifare Classic 的所有漏洞,是进阶必读。
  • YouTube 视频: 搜索 "Mifare Classic Hacking" 或 "Mifare Cloning",有很多视频教程可以直观地展示操作过程。

希望这份详细的教程能帮助你顺利入门 Mifare Classic 的世界!祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇