Proxmark3 RDV4 实操笔记:256KB 外部闪存怎么用、天线怎么调,附踩坑点
【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3
这篇是拿到 Proxmark3 RDV4 之后我的实操记录。RDV4 和老版本最大的硬件差异,是板子上多了一块 256KB 的外部 SPI 闪存,固件默认把防伪签名和文件系统放在上面。下面讲的全是我实际跑过的东西:怎么验证这块闪存是真的、四个页面怎么分工、哪里会踩坑,最后顺带把低频天线的调校流程过一遍。命令都来自仓库里的 mem、hw、lf 命令集,可以直接照抄。
上机第一件事:确认闪存是真的
插上 RDV4,我敲的第一条命令是mem info,重点看输出里这段:
[usb] pm3 --> mem info [=] --- Flash memory Information --------- [=] ID................... 25AD99A782A867D5 [+] Signature............ ( ok )Signature 这一行是关键。RDV4 的闪存末尾存了一份 128 字节的 RSA 签名,mem info会用内置公钥校验闪存 ID 是否被正式签名过,用来判断设备是不是被换过料。看到 "Genuine Proxmark3 RDV4 signature detected" 就可以放心。
想确认芯片具体型号的话,可以用 client/pyscripts/spi_flash_decode.py 解析 JEDEC ID。仓库里 256KB 对应的是 W25Q20BV 这一档的 SPI NOR。这里提醒一句:命名里的 W25Q256 是 256Mbit,也就是 32MB,和 256KB 完全不是一个量级,别照着名字买错。
256KB 的地址结构:一眼读出来
闪存分成 4 页、每页 64KB,每页再分 16 个扇区、每扇区 4KB。地址写成 0xPSxxx 时可以直接拆读:第一个字符是页号,第二个是扇区号,后三位是页内偏移。比如 0x3FF7F 就是页 3、扇区 0xF、偏移 0xF7F。
把这个读法记熟之后,mem命令的参数就不吓人了。四个页面的分工大致如下:
| 页面 | 地址范围 | 默认用途 |
|---|---|---|
| 0 | 0x00000–0x0FFFF | 用户数据,随便用 |
| 1 | 0x10000–0x1FFFF | 用户数据,随便用 |
| 2 | 0x20000–0x2FFFF | 用户数据,随便用 |
| 3 | 0x30000–0x3FFFF | 设备自用:RSA 签名 + SPIFFS 文件系统 |
页 0~2 想倒出来或者清空,照 doc/ext_flash_notes.md 里的写法来就行:
mem dump -f page0_dump -o 0 -l 65536 mem wipe -p 0页 3 是坑位:我差点直接 wipe 掉
第一次看到页 3 也有 64KB,我以为同样能当存储用,正准备对它跑mem wipe -p 3,才在文档里看到警告:默认固件里mem wipe干脆不接受页 3 作为参数。这不是 bug——那一页的 0x3FF7F 处放着 128 字节签名,早期版本里一旦被擦掉就无法自行恢复,设备会永远被判定为"非正品"。现在仓库带了通用私钥,可以重新自签(下一节讲),但代价还是别主动去擦。
所以我现在的习惯是,每次要动闪存之前,先把签名备份一份到磁盘:
mem dump -f flash_signature_dump -o 262015 -l 128页 3 剩下的空间也不是闲着的:扇区 0~13 划给了 SPIFFS 文件系统,设备上存了什么文件可以用mem spiffs view看一眼。另外更新密钥字典不需要擦这一页,这点文档里单独强调了。
签名真丢了:用通用密钥自签
较新的仓库在 client/resources 下加了 pm3_generic_private_key.pem,任何带 SPI 闪存的改装设备都可以给自己签一份。流程分三步:
- 在 client/resources 目录里跑
sha512sum -c pm3_generic_private_key.sha512.txt,先确认私钥文件没被改动过; - 跑
mem info -s -p client/resources/pm3_generic_private_key.pem预览即将生成的签名,先别加写入参数; - 确认没问题后再追加
-w写进设备。
踩坑提醒:-w会直接覆盖现有签名。"先备份"这一步永远不要省,哪怕你刚备份过。
T55xx 的内存映射:别和设备闪存搞混
玩 T5577 的人很容易把两张内存映射图搅在一起:
上图是 T55xx 芯片自身的存储结构:页 0 放用户数据,页 1 放模拟前端配置和可追溯数据。它属于标签自己,和 Proxmark3 RDV4 那块 256KB 存储没有任何关系,两个"页"完全是两码事。倒数据之前先确认自己看的是哪块内存,能省掉很多疑惑。
天线部分:先用 lf tune 听一下调谐
天线是玄学感最强的部分,我的流程是先跑hw status看整体状态,它会把 LF 天线的情况一起报出来,顺便做连接速度测试。然后跑lf tune连续观察调谐,一边看读数一边挪天线位置,找到峰值最稳的摆法。
要改驱动频率的话,入口是hw setlfdivisor,规则固定:12 MHz ÷ (divisor + 1)。比如想输出 125 kHz,divisor 填 95 即可(12000 ÷ 96 = 125)。如果信号弱或者读数不稳,先回到lf tune确认天线本身调得好不好,再怀疑其他原因。
顺带说明一张图,免得混淆:下面这页配置属于 T55xx 标签芯片,不在 Proxmark3 的闪存里。调天线的时候别调错了对象。
收尾要做的三件事
- 把 128 字节签名 dump 一份到磁盘,文件名带上日期;
- 跑一次
hw status,确认连接速度测试没有超时告警; - 开工前留一次
lf tune的记录,方便以后对比天线状态有没有漂移。
建议下一步把 doc/ext_flash_notes.md 完整过一遍,然后就可以放心把页 0~2 拿来存自己的数据了。
【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考