特别声明:本文为原创,可自由转载、引用,但需署名作者且注明文章出处,如有侵权请联系!
最新Proxmark3 命令行指令大全和完全实战手册
前言
本文档分为两部分内容:
- Proxmark3 命令行指令大全(按功能分类,带详细使用案例)
- 实战问题解决记录(基于实际操作中遇到的各种问题及解决方法)
适用固件版本:Iceman 2026-02-16 及更新版本

第一部分:基础操作与环境配置
一、基础操作类
| 命令 | 说明 | 使用案例 |
|---|---|---|
help | 显示所有可用命令 | 场景:刚进入命令行,想看看有哪些命令可用。 输入: help输出:显示所有命令分类列表 |
hf | 进入高频命令组 | 场景:想操作高频卡(如Mifare),先进入高频模式。 输入: hf输出:显示所有高频相关命令 |
lf | 进入低频命令组 | 场景:想操作低频卡(如EM4100),进入低频模式。 输入: lf输出:显示所有低频相关命令 |
hw | 进入硬件命令组 | 场景:想查看或配置硬件,进入硬件模式。 输入: hw输出:显示所有硬件相关命令 |
data | 数据分析与图形窗口 | 场景:想分析捕获的波形。 输入: data plot输出:弹出图形窗口显示采样数据 |
quit / exit | 退出客户端 | 场景:操作完成,想退出PM3客户端。 输入: quit输出:返回到系统命令行 |
clear | 清屏 | 场景:屏幕上信息太多,想清空重新开始。 输入: clear输出:屏幕清空,只剩提示符 |
--help | 查看具体命令的帮助 | 场景:想查看hf mf autopwn的具体用法。输入: hf mf autopwn --help输出:显示该命令的所有参数说明 |
二、硬件与调谐
| 命令 | 说明 | 使用案例 |
|---|---|---|
hw version | 显示固件版本 | 场景:想知道当前固件是什么版本,是否最新。 输入: hw version输出:显示bootrom、os、FPGA版本号和日期 |
hw status | 显示设备状态 | 场景:设备工作不稳定,想查看各项状态是否正常。 输入: hw status输出:显示内存使用、天线状态、配置参数等 |
hw tune | 天线调谐 | 场景:读卡距离变短,想检查天线输出是否正常。 输入: hw tune输出:显示LF和HF天线电压,正常值应>20V |
hw reset | 重启PM3 | 场景:设备卡死无响应,想软重启。 输入: hw reset输出:设备重启,重新连接 |
第二部分:高频卡(HF)操作指南
三、高频(HF)通用
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf search | 搜索高频卡片 | 场景:放上一张未知卡,想知道它是什么类型。 输入: hf search输出:自动识别卡片类型(如MIFARE Classic 1K) |
hf tune | 高频天线调谐 | 场景:只在高频模式下想专门调谐HF天线。 输入: hf tune输出:显示HF天线电压 |
四、ISO14443A(MIFARE)类
4.1 基础操作
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf 14a info | 获取ISO14443A卡片信息 | 场景:放上一张Mifare卡,想获取它的UID和ATQA、SAK。 输入: hf 14a info输出:显示UID: 04 12 34 56 78 90 AB CD,ATQA: 0004,SAK: 08 |
hf 14a reader | 模拟读卡器读取UID | 场景:想快速读取卡片UID,不做深入分析。 输入: hf 14a reader输出:显示UID: 041234567890abcd |
hf 14a sim | 模拟标签 | 场景:想模拟一张卡测试读卡器。 输入: hf 14a sim 12345678输出:开始模拟UID为12345678的标签 |
hf 14a snoop | 嗅探通信 | 场景:想捕获读卡器和卡片之间的通信数据。 输入: hf 14a snoop输出:等待通信,捕获后显示交互数据 |
hf 14a raw | 发送原始指令 | 场景:想发送自定义APDU指令测试卡片。 输入: hf 14a raw -c 60 00输出:返回卡片的原始响应数据 |
4.2 MIFARE Classic 专用(重点)
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf mf rdbl | 读取块 | 场景:已知扇区4块16用密钥A全F可读,想读取数据。 输入: hf mf rdbl --blk 16 -a --key FFFFFFFFFFFF输出: data:aa 55 20 08 31 14 24 58 00 00 00 00 00 00 00 00 |
hf mf wrbl | 写入块 | 场景:想用B密码修复扇区4的尾部块19。 输入: hf mf wrbl --blk 19 -b --key FFFFFFFFFFFF --data FFFFFFFFFFFFFF078069FFFFFFFFFFFF输出: [+] Write ( ok ) |
hf mf rdsc | 读取扇区 | 场景:想一次性读取扇区4的所有块(16-19)。 输入: hf mf rdsc 4 A FFFFFFFFFFFF输出:显示块16、17、18、19的数据 |
hf mf dump | 导出整卡数据 | 场景:想把整张卡备份下来,防止丢失。 输入: hf mf dump输出:生成 hf-mf-353C2AA6-dump.bin和hf-mf-353C2AA6-keys.bin |
hf mf restore | 恢复数据到卡 | 场景:之前备份过卡,现在想恢复数据到新卡。 输入: hf mf restore -f hf-mf-353C2AA6-dump.bin输出:逐块写入,完成后提示成功 |
hf mf chk | 检测默认密钥 | 场景:拿到一张新卡,想知道哪些扇区用的是默认密钥。 输入: hf mf chk *1 ? d default_keys.dic输出:列出找到的所有密钥和对应的扇区 |
4.3 密钥攻击
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf mf autopwn | 自动攻击(推荐) | 场景:已知扇区4的B密码是全F,想破解所有扇区的A密码。 输入: hf mf autopwn -s 4 -b -k FFFFFFFFFFFF输出:列出所有扇区的密钥,扇区4的A密码显示在表格中 |
hf mf nested | 嵌套攻击 | 场景:autopwn失败,想尝试经典嵌套攻击。 输入: hf mf nested 1 4 B FFFFFFFFFFFF输出:攻击过程显示,最终列出所有密钥 |
hf mf hardnested | 硬嵌套攻击 | 场景:标准嵌套攻击失败,卡片可能是较新的EV1版本。 输入: hf mf hardnested --blk 16 -b --key FFFFFFFFFFFF --tblk 16 --ta输出:显示攻击进度,最终给出目标A密码 |
hf mf staticnested | 静态嵌套攻击 | 场景:遇到复旦卡(Static nonce detected)时使用。 输入: hf mf staticnested --1k --blk 19 -b --key FFFFFFFFFFFF输出:尝试破解静态随机数卡片的密钥 |
hf mf mifare | DarkSide攻击 | 场景:没有任何已知密钥,想尝试破解。 输入: hf mf mifare输出:利用卡片认证漏洞尝试获取密钥 |
4.4 魔术卡(UID卡)操作
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf mf csetuid | 设置UID | 场景:想把魔术卡的UID改成和原卡一样。 输入: hf mf csetuid 353C2AA6输出:UID修改成功 |
hf mf csetblk | 写入块(魔术卡专用) | 场景:想直接写入块0(包括UID部分)。 输入: hf mf csetblk 0 353C2AA6A6080400输出:写入成功 |
hf mf cgetblk | 读取块(魔术卡专用) | 场景:想读取魔术卡的块0确认UID。 输入: hf mf cgetblk 0输出: 353C2AA6A6080400 |
hf mf cload | 写入dump到魔术卡 | 场景:有原卡的dump文件,想一次性克隆到魔术卡。 输入: hf mf cload -f hf-mf-353C2AA6-dump.bin输出:逐块写入,完成后提示成功 |
4.5 仿真内存操作
| 命令 | 说明 | 使用案例 |
|---|---|---|
hf mf eload | 加载dump到仿真内存 | 场景:想把备份的卡数据加载到内存,准备模拟。 输入: hf mf eload 353C2AA6输出:加载成功 |
hf mf esave | 保存仿真内存到文件 | 场景:模拟前想把当前内存状态保存下来。 输入: hf mf esave输出:生成仿真内存文件 |
hf mf eget | 获取仿真内存块 | 场景:想查看仿真内存中块0的内容。 输入: hf mf eget 0输出:显示块0的数据 |
hf mf eset | 设置仿真内存块 | 场景:想修改仿真内存中块16的内容。 输入: hf mf eset 16 000102030405060708090A0B0C0D0E0F输出:设置成功 |
hf mf sim | 模拟卡片 | 场景:想模拟一张卡测试读卡器。 输入: hf mf sim u 353c2aa6输出:开始模拟UID为353c2aa6的卡片 |
第三部分:低频卡(LF)操作指南
五、低频(LF)类
5.1 通用
| 命令 | 说明 | 使用案例 |
|---|---|---|
lf search | 搜索低频卡片 | 场景:放上一张未知低频卡,想识别类型。 输入: lf search输出:自动识别为HID Prox卡,显示卡号 |
lf search -u | 搜索未知低频卡 | 场景:标准搜索找不到,强制搜索未知调制方式。 输入: lf search -u输出:显示解调后的比特流,提示可能的调制方式 |
lf read | 读取低频ID | 场景:想读取低频卡的原始ID。 输入: lf read输出:显示读取到的低频信号数据 |
lf sim | 模拟低频标签 | 场景:想模拟一张低频卡测试读卡器。 输入: lf sim输出:开始模拟 |
5.2 HID Prox
| 命令 | 说明 | 使用案例 |
|---|---|---|
lf hid read | 读取HID卡 | 场景:放上一张HID卡,想读取卡号。 输入: lf hid read输出:Facility Code: 2006,Card Number: 12345 |
lf hid demod | 解调HID数据 | 场景:已捕获HID信号,想解调出卡号。 输入: lf hid demod输出:显示解调后的卡号 |
lf hid sim | 模拟HID卡 | 场景:已知Facility Code 2006,卡号12345,想模拟。 输入: lf hid sim 200670012d输出:开始模拟该HID卡 |
lf hid clone | 克隆到T55xx | 场景:想复制一张HID卡到T55xx可写卡。 输入: lf hid clone 200670012d输出:写入成功 |
5.3 T55xx 可写卡
| 命令 | 说明 | 使用案例 |
|---|---|---|
lf t55xx detect | 检测T55xx卡 | 场景:放上一张空白T55xx卡,想确认是否可写。 输入: lf t55xx detect输出:检测到T55xx卡,显示配置信息 |
lf t55xx dump | 读取全部数据 | 场景:想查看T55xx卡内部所有数据。 输入: lf t55xx dump输出:显示所有配置块和数据块 |
lf t55xx wr | 写入块 | 场景:想向T55xx的块0写入配置数据。 输入: lf t55xx wr b 0 d 00081040输出:写入成功 |
lf t55xx config | 设置调制方式 | 场景:想配置T55xx的调制方式为FSK。 输入: lf t55xx config FSK输出:配置成功 |
lf t55xx wipe | 擦除并重置 | 场景:T55xx卡数据混乱,想完全清空。 输入: lf t55xx wipe输出:卡片重置为出厂状态 |
5.4 EM410x / Indala
| 命令 | 说明 | 使用案例 |
|---|---|---|
lf em410x read | 读取EM410x | 场景:放上一张EM4100卡,想读取ID。 输入: lf em410x read输出:ID: 1A2B3C4D5E |
lf em410x sim | 模拟EM410x | 场景:已知ID为1234567890,想模拟测试。 输入: lf em410x sim 1234567890输出:开始模拟 |
lf em410x clone | 克隆到T55xx | 场景:想把EM410x ID写入T55xx卡。 输入: lf em410x clone --id 7500573615输出: Tag T55x7 written with 0xffbd40029e660d42 |
lf indala read | 读取Indala | 场景:放上一张Indala卡,想读取ID。 输入: lf indala read输出:ID: a0000000c2c436c1 |
lf indala sim | 模拟Indala | 场景:已知Indala ID,想模拟测试。 输入: lf indala sim a0000000c2c436c1输出:开始模拟 |
第四部分:数据分析与脚本
六、数据分析
| 命令 | 说明 | 使用案例 |
|---|---|---|
data plot | 显示图形窗口 | 场景:刚捕获了一段信号,想用图形查看波形。 输入: data plot输出:弹出图形窗口显示采样数据 |
data save | 保存采样数据 | 场景:捕获到一段有趣的信号,想保存下来。 输入: data save captured_signal.pm3输出:数据保存成功 |
data load | 加载采样数据 | 场景:之前保存过信号,想重新分析。 输入: data load captured_signal.pm3输出:数据加载成功,可用 data plot查看 |
data print | 打印解调缓冲区 | 场景:想查看当前解调缓冲区中的比特流。 输入: data print输出:显示解调后的二进制数据 |
data rawdemod | 解调数据 | 场景:已加载采样数据,想尝试自动解调。 输入: data rawdemod ask manchester输出:显示解调结果 |
七、脚本与自动化
| 命令 | 说明 | 使用案例 |
|---|---|---|
script list | 列出可用脚本 | 场景:想知道有哪些现成的脚本可以用。 输入: script list输出:显示所有可用脚本名称 |
script run | 运行脚本 | 场景:想把dump文件加载到仿真内存。 输入: script run dumptoemul -i hf-mf-353C2AA6-dump.bin输出:脚本执行成功 |
msleep | 延时(毫秒) | 场景:写脚本时,需要在两个操作之间等待。 输入: msleep 500输出:等待500毫秒 |
八、退出客户端
| 命令 | 说明 | 使用案例 |
|---|---|---|
quit | 退出 | 场景:操作完成,想退出PM3客户端。 输入: quit输出:返回到系统命令行 |
exit | 退出 | 场景:同上。 输入: exit输出:返回到系统命令行 |
第五部分:实战问题解决记录
九、高频卡常见问题
9.1 连接问题:Sending bytes to proxmark failed
现象:
- PM3 红灯常亮
- 命令行报错
Sending bytes to proxmark failed - 设备管理器能识别 COM 口但无法通信
解决方法:
- 强制重启:拔掉 USB 线,等待 10 秒,重新插入
进入 Bootloader 模式:
- 按住 PM3 侧面按钮
- 保持按住同时插入 USB 线
- 看到红灯闪烁后松开
重新刷写固件:
pm3-flash-bootrom pm3-flash-fullimage #### 9.2 命令格式错误:`unexpected argument`
- 输入命令后报错
unexpected argument 提示
Try '... --help' for more information原因:Iceman 新版固件命令格式与旧版不同,需要使用带参数名的格式
正确格式示例:
正确:带参数名
hf mf wrbl --blk 39 -b --key F1F1F1F1F1F1 --data FFFFFFFFFFFFFF078069FFFFFFFFFFFF
错误:无参数名(旧版格式)
hf mf wrbl 39 B F1F1F1F1F1F1 FFFFFFFFFFFFFF078069FFFFFFFFFFFF
**查看帮助:**hf mf wrbl --help
#### 9.3 复旦卡静态随机数问题:Static nonce detected
**现象**:
- hf 14a info 显示 Static nonce: yes
- 嵌套攻击报错 Static nonce detected. Quitting...
- 后门密钥尝试失败
**原因**:卡片是复旦微电子 FM11RF08S 芯片,具有静态随机数防破解机制
**尝试过的解决方案**:
1. **后门密钥测试**:
hf mf rdbl --blk 0 -a --key A396EFA4E24F
hf mf rdbl --blk 0 -a --key A31667A8CEC1
结果:Auth error
2. **静态嵌套攻击**:hf mf staticnested --1k --blk 19 -b --key FFFFFFFFFFFF
结果:部分成功,扇区4的B密码有效
3. **自动攻击**:
hf mf autopwn
结果:成功破解大部分扇区密钥,生成完整dump文件
#### 9.4 格式化卡片:恢复默认状态
**目标**:将加密扇区恢复为默认值(密钥全F,数据全0)
**已知密钥情况**(来自 hf mf autopwn 结果):
- 扇区1-3、10-15:A/B 密钥均为 FFFFFFFFFFFF
- 扇区4:B 密钥为 FFFFFFFFFFFF(A密钥未知)
- 扇区0:A/B 密钥均未知
- 扇区5-9:所有密钥未知
**操作步骤**:
1. **备份当前数据**:hf mf dump
2. **恢复已知密钥扇区**(以扇区9块39为例):hf mf wrbl --blk 39 -b --key F1F1F1F1F1F1 --data FFFFFFFFFFFFFF078069FFFFFFFFFFFF
3. **清空数据块**:
hf mf wrbl --blk 16 -a --key FFFFFFFFFFFF --data 00000000000000000000000000000000
4. **验证写入结果**:hf mf rdbl --blk 39 -a --key FFFFFFFFFFFF
#### 9.5 写入成功但数据未改变
**现象**:
- 写入命令返回 [+] Write ( ok )
- 再次读取发现数据还是原来的
**原因**:
- 扇区尾部控制位可能被设置为禁止写入
- 卡片可能已永久锁定
**解决方法**:
1. **立即读取验证**:hf mf rdbl --blk 39 -b --key F1F1F1F1F1F1
2. **检查访问控制位**:hf mf rdbl --blk 39 -a --key FFFFFFFFFFFF
# 查看返回数据中的访问控制位是否正确
---
### 十、低频卡常见问题
#### 10.1 未知卡检测:lf search -u 输出 PSK1 信号
**现象**:
[-] No known 125/134 kHz tags found!
[+] PSK1 demoded bitstream
[=] Possible unknown PSK1 Modulated Tag found above!
**原因**:卡片使用 PSK(相移键控)调制,不是常见的 ASK 或 FSK 卡
**解决方法**:
1. **尝试不同解调方式**:data rawdemod psk2
data rawdemod fsk
data rawdemod ask
2. **查看原始波形**:lf read -v
data plot
3. **保存原始数据供后续分析**:data save unknown_card.pm3
#### 10.2 EM410x 卡读取与克隆
**成功读取EM410x卡**:lf search -u
输出:EM 410x ID 7500573615
**克隆到T55x7卡**:lf em410x clone --id 7500573615
输出:Tag T55x7 written with 0xffbd40029e660d42
**验证克隆结果**:lf em410x read
应返回相同的ID:7500573615
#### 10.3 两张不同低频卡的处理
**场景**:两次 lf search -u 得到不同结果
| 卡片 | 识别结果 | 类型 |
|:---|:---|:---|
| 第一张 | EM 410x ID 7500573615 | 标准EM410x卡 |
| 第二张 | PSK1 demoded bitstream | 未知PSK调制卡 |
**解决方法**:
1. **第一张卡**:直接用 lf em410x read 读取
2. **第二张卡**:先用 data rawdemod 尝试不同解调,再用 lf t55xx detect 检测芯片
---
## 第六部分:文件格式与备份
### 十一、文件说明
执行 hf mf dump 后生成的文件:
| 文件后缀 | 格式 | 说明 |
|:---|:---|:---|
| .bin | 二进制 | 卡片数据的原始二进制格式 |
| .eml | 文本 | 可读的十六进制文本格式 |
| .json | JSON | 包含元数据的JSON格式 |
| .keys | 二进制 | 密钥文件 |
### 十二、数据备份建议
1. **操作前先备份**:
hf mf dump
2. **重要数据多重保存**:
- 保存 .bin 文件供PM3恢复使用
- 保存 .eml 文件供手动查看和编辑
- 截图保存关键信息
3. **低频信号备份**:
data save lf_capture_日期.pm3
---
## 常用命令速查表
| 你想做什么 | 输入命令 |
|:---|:---|
| **破解A密码(已知B)** | hf mf autopwn -s 4 -b -k FFFFFFFFFFFF |
| **读取块16** | hf mf rdbl --blk 16 -a --key FFFFFFFFFFFF |
| **写入块19** | hf mf wrbl --blk 19 -b --key FFFFFFFFFFFF --data FFFFFFFFFFFFFF078069FFFFFFFFFFFF |
| **整卡备份** | hf mf dump |
| **检测默认密钥** | hf mf chk *1 ? d |
| **设置魔术卡UID** | hf mf csetuid 12345678 |
| **模拟卡片** | hf mf sim u 353c2aa6 |
| **读取EM410x** | lf em410x read |
| **克隆EM410x** | lf em410x clone --id 7500573615 |
| **检测T55xx** | lf t55xx detect |
| **检查天线** | hw tune |
| **查看固件版本** | hw version |
| **识别未知高频卡** | hf search |
| **识别未知低频卡** | lf search -u |
| **查看波形** | data plot |
| **保存采样数据** | data save filename.pm3 |
| **加载采样数据** | data load filename.pm3 |
---
## 常见错误及解决方法速查
| 错误信息 | 可能原因 | 解决方法 |
|:---|:---|:---|
| Sending bytes to proxmark failed | 通信断开 | 重新插拔 USB,进入 Bootloader 模式 |
| unexpected argument | 命令格式错误 | 用 --help 查看正确格式,使用带参数名格式 |
| Auth error | 密钥错误 | 换用已知正确的密钥或类型(A/B) |
| Static nonce detected | 复旦卡防破解 | 尝试后门密钥或 hf mf staticnested |
| Can't authenticate to block | 密钥或块号错误 | 确认块号和密钥类型(A/B) |
| Error - can't find script | 脚本不存在 | 更新固件或手动下载脚本 |
| No known tags found | 未知卡类型 | 用 -u 参数强制搜索,或手动解调 |
| Write ( failed ) | 写入失败 | 检查密钥是否正确,卡片是否可写 |
| Command execute timeout | 设备无响应 | 重新插拔USB,重启客户端 |
| invalid option | 参数名错误 | 查看 --help 确认正确的参数名 |
| Wrong key | 密钥不正确 | 确认使用的密钥是否正确(A/B类型) |
---
## 最终使用建议
1. **先看帮助**:任何不确定的命令先用 --help 查看格式
2. **先备份**:修改卡片前先用 dump 备份原数据
3. **先验证**:写入后用 rdbl 验证结果
4. **区分大小写**:密钥和参数都是大写十六进制
5. **注意格式**:Iceman 固件要求带参数名(如 --blk、--key)
6. **耐心尝试**:复旦卡需要特殊方法处理,不要灰心
7. **保存日志**:重要操作保存屏幕输出,方便回溯
8. **多交流**:遇到难题可以去 Proxmark3 论坛或社群求助
9. **记录成功案例**:每次成功操作记录下来,形成自己的经验库
10. **循序渐进**:从简单的读取开始,逐步尝试写入和破解
---
















评论列表 (已有0条评论)
消灭零回复