proxmark3 T5577 实战指南:从块读写、Bit 级配置到密码保护与嗅探
发布时间:2026/9/17 23:30:02 作者:尧图编辑部 阅读量:1,286

proxmark3 T5577 实战指南从块读写、Bit 级配置到密码保护与嗅探【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3本文以 proxmark3Iceman Fork仓库自带的doc/T5577_Guide.md教程为主线系统讲解 T5577 这颗 125 kHz 低频 RFID 芯片的完整使用过程如何用lf t55xx系列命令检测、转储、读写数据块如何按位修改 Page 0 Block 0 配置字让卡片启用密码或仿真 EM4100以及如何使用lf t55xx sniff捕获明文密码。读完本文你可以独立完成 T5577 的初始化、数据写入、密码开启与关闭、配置解码和命令嗅探等全套操作并理解每条命令背后的源码实现。一、T5577 是什么芯片定位与内存结构T5577 是一颗通用的低频LFRFID 芯片工作在 125 kHz 频段常用于学习和各类卡片的仿真。官方教程明确建议学习 RFID 与阅读数据手册datasheet应同时进行——手册中保存着你需要的全部信息只是你还不知道如何解读它。本指南基于仓库内文档见 T5577 教程原文并结合 客户端 T55xx 命令实现 给出源码级佐证。从芯片内部看T5577 可以存储数据和配置两部分内容。上方内存布局图中所有白色块都能存数据其中部分块有第二用途如密码块、可追溯数据块而Configuration Data与模拟前端选项则决定芯片如何行为。可追溯数据Traceability Data是制造厂商烧录并锁定的数据包含生产年份、季度、晶圆编号、die 编号等用于追溯芯片的生产批次。它占据 Page 1 的 Block 1 与 Block 2正常情况下不可写——但部分 T5577 克隆芯片允许覆写这两个块。可以使用lf t55xx trace命令读取对应源码入口 CmdT55xxReadTrace。首次接触卡片detect 与 dump由于 T5577 的配置可以改变其输出数据的编码方式proxmark3 必须先弄清如何解读收到的数据。每次把 T5577 放到 proxmark3 上后都应先执行 detect 命令[usb] pm3 -- lf t55xx detect典型输出对应 CmdT55xxDetect[] Chip type......... T55x7 [] Modulation........ ASK [] Bit rate.......... 2 - RF/32 [] Inverted.......... No [] Offset............ 33 [] Seq. terminator... Yes [] Block0............ 000880E0 (auto detect) [] Downlink mode..... default/fixed bit length [] Password set...... Nodetect 之后即可转储整片存储[usb] pm3 -- lf t55xx dump[] Reading Page 0: [] blk | hex data | binary | ascii [] ------------------------------------------------------- [] 00 | 000880E0 | 00000000000010001000000011100000 | .... [] 01 | 00000000 | 00000000000000000000000000000000 | .... [] 02 | 00000000 | 00000000000000000000000000000000 | .... [] 03 | 00000000 | 00000000000000000000000000000000 | .... [] 04 | 00000000 | 00000000000000000000000000000000 | .... [] 05 | 00000000 | 00000000000000000000000000000000 | .... [] 06 | 00000000 | 00000000000000000000000000000000 | .... [] 07 | 00000000 | 00000000000000000000000000000000 | .... [] Reading Page 1: [] blk | hex data | binary | ascii [] ------------------------------------------------------- [] 00 | 000880E0 | 00000000000010001000000011100000 | .... [] 01 | 00000000 | 00000000000000000000000000000000 | .... [] 02 | 00000000 | 00000000000000000000000000000000 | .... [] 03 | 00000000 | 00000000000000000000000000000000 | ....需要注意T5577 存在大量克隆芯片各克隆片的出厂默认配置可能不同若卡片带有可追溯数据其内容随生产批次而变因此你的 dump 结果可能与示例有差异。二、读与写数据块32 位粒度与十六进制格式proxmark3 操作 RFID 卡片的基本功就是读写数据。T5577 的读写规则是一次读写一个完整的块block每块存放32 位数据——这也解释了 dump 输出中的 32 位二进制列。学习阶段请避开配置块Page 0 Block 0和 Page 1 的块。用户数据建议存放在 Block 1–7但记住Block 7 是密码块将来若要启用密码就会用到它。2.1 读一个块[usb] pm3 -- lf t55xx read -b 1结果[] Reading Page 0: [] blk | hex data | binary | ascii [] ------------------------------------------------------- [] 01 | 00000000 | 00000000000000000000000000000000 | ....命令的读法是对 T55xx 芯片t55xx执行低频lf命令读取块block,-b1。2.2 写一个块用-d参数提供 8 位十六进制数据写入 Block 1[usb] pm3 -- lf t55xx write -b 1 -d 12345678[] Writing page 0 block: 01 data: 0x12345678回读验证[usb] pm3 -- lf t55xx read -b 1[] Reading Page 0: [] 01 | 12345678 | 00010010001101000101011001111000 | .4Vx2.3 十六进制与二进制对照一个十六进制数字承载 4 位二进制数据因此 32 位块数据 8 个十六进制数字8 × 4 32。对照速查表HexBinaryDecimal000000100011200102300113401004501015601106701117810008910019A101010B101111C110012D110113E111014F111115写入89ABCDEF验证满 32 位[usb] pm3 -- lf t55xx write -b 1 -d 89abcdef[] Writing page 0 block: 01 data: 0x89ABCDEF[usb] pm3 -- lf t55xx read -b 1[] 01 | 89ABCDEF | 10001001101010111100110111101111 | ....2.4 练习 1用 read/write 命令让lf t55xx dump显示 Page 0 的 Block 1–7 中 Block 1 为89ABCDEF、其余为00000000的布局。不要写 Block 0也不要改动 Page 1 的数据[usb] pm3 -- lf t55xx dump[] 00 | 000880E0 | 00000000000010001000000011100000 | .... [] 01 | 89ABCDEF | 10001001101010111100110111101111 | .... [] 02 | 00000000 | 00000000000000000000000000000000 | .... [] 03 | 00000000 | 00000000000000000000000000000000 | .... [] 04 | 00000000 | 00000000000000000000000000000000 | .... [] 05 | 00000000 | 00000000000000000000000000000000 | .... [] 06 | 00000000 | 00000000000000000000000000000000 | .... [] 07 | 00000000 | 00000000000000000000000000000000 | ....反复练习读写 Block 1–6 直到结果符合预期。练习阶段建议远离 Block 7——那是密码的存放位置一旦设置后忘记密码你将无法再读写该卡片。三、密码保护从 000880E0 到 000880F0 的 Bit 28密码操作对新手容易踩坑。核心警告只有一句话忘记密码 失去卡片访问权。3.1 第 1 步擦除到已知状态wipe命令会把 Block 0 重置为默认配置、把 Block 1–7 全部清零源码入口 CmdT55xxWipe[usb] pm3 -- lf t55xx wipe[] Target T55x7 tag [] Default configuration block 000880E0 [] Begin wiping... [] Writing page 0 block: 00 data: 0x000880E0 [] Writing page 0 block: 01 data: 0x00000000 [] Writing page 0 block: 02 data: 0x00000000 [] Writing page 0 block: 03 data: 0x00000000 [] Writing page 0 block: 04 data: 0x00000000 [] Writing page 0 block: 05 data: 0x00000000 [] Writing page 0 block: 06 data: 0x00000000 [] Writing page 0 block: 07 data: 0x00000000这个默认值与源码中的常量定义完全一致见 cmdlft55xx.h 的配置块常量#define T55X7_DEFAULT_CONFIG_BLOCK 0x000880E8 // ASK, compat mode, data rate 32, manchester, STT, 7 data blocks #define T55X7_RAW_CONFIG_BLOCK 0x000880E0 // ASK, compat mode, data rate 32, manchester, 7 data blocks #define T55X7_EM_UNIQUE_CONFIG_BLOCK 0x00148040 // ASK, EM4x02/unique - compat mode, manchester, data rate 64, 2 data blocks3.2 第 2 步确认状态[usb] pm3 -- lf t55xx detect确认输出中Block0为000880E0。若 Block 0 不是 0x000880E0必须先解决该问题再继续。3.3 第 3–4 步写入密码并核对本例使用密码12345678密码存放在 Page 0 Block 7源码中即T55x7_PWD_BLOCK 0x07[usb] pm3 -- lf t55xx write -b 7 -d 12345678[] Writing page 0 block: 07 data: 0x12345678用lf t55xx dump核对 Block 0 与 Block 7若二者不严格等于000880E0/12345678停止后续操作。3.4 第 5 步按位开启密码位Bit 28数据手册规定要让芯片启用密码需设置配置字Block 0的第 28 位 PWD。本例中只改 Bit 28其余位一律不动当前 Block 0000880E0新 Block 0000880F0位位置对照Bit 28 处加粗Bit Location (28) 000000000011111111112222222 2 2233 123456789012345678901234567 8 9012Hex DataBinary Data000880E000000000000010001000000011100000000880F000000000000010001000000011110000即 Bit 280 无密码1 使用密码。注意其他配置位均未改变。该位掩码在源码中定义为T55x7_PWD 0x00000010即 0xF0 与 0xE0 之差。写入新配置[usb] pm3 -- lf t55xx write -b 0 -d 000880F0[] Writing page 0 block: 00 data: 0x000880F03.5 第 6 步验证密码生效密码启用后不带密码的 detect 将失败[usb] pm3 -- lf t55xx detect[!] Could not detect modulation automatically. Try setting it manually with lf t55xx config这是因为读写需要密码。加上-p参数后恢复正常[usb] pm3 -- lf t55xx detect -p 12345678[] Chip type......... T55x7 [] Modulation........ ASK [] Bit rate.......... 2 - RF/32 [] Inverted.......... No [] Offset............ 33 [] Seq. terminator... Yes [] Block0............ 000880F0 (auto detect) [] Downlink mode..... default/fixed bit length [] Password set...... Yes [] Password.......... 123456783.6 第 7–8 步带密码写/读以及安全机制写块时附带密码[usb] pm3 -- lf t55xx write -b 1 -d 1234abcd -p 12345678[] Writing page 0 block: 01 data: 0x1234ABCD pwd: 0x12345678读块时附带密码——重大警告在未启用密码的卡片上执行带密码读可能导致卡片被锁死。仅在确认卡片确实使用了密码时才使用带密码的 read。proxmark3 对此内置了安全检查safety check执行lf t55xx read -p ...时客户端会先尝试读取配置块并判断 PWD 位是否置位实现见 CmdT55xxReadBlock 的安全检查逻辑 及其调用的底层读取函数中的 检查代码[usb] pm3 -- lf t55xx read -b 1 -p 12345678[] Reading Page 0: [] blk | hex data | binary | ascii [] ------------------------------------------------------- [!] Safety check: Could not detect if PWD bit is set in config block. Exits.安全检查介入拒绝在无法确认 PWD 位的情况下带密码读取要求提供覆盖参数-o[usb] pm3 -- lf t55xx read -b 1 -p 12345678 -o[] Reading Page 0: [] Safety check overridden - proceeding despite risk [] 01 | 1234ABCD | 00010010001101001010101111001101 | .4..此时读回了写入的数据。read 命令的完整参数-b块号、-p4 字节十六进制密码、-o覆盖安全检查、--pg1读 Page 1以及下链路编码选项 r0–r3定义在 CLIParser 参数表中密码必须是 4 个十六进制字节否则直接报错退出。3.7 第 9 步关闭密码需要把配置字 Bit 28 清零。正确做法是先读出当前配置仅清 Bit 28再写回——直接盲写一个标准配置会覆盖你所有的其他设置虽然这能救回卡片但会丢失你已有的配置。本例已知目标值就是000880E0[usb] pm3 -- lf t55xx write -b 0 -d 000880E0 -p 12345678[] Writing page 0 block: 00 data: 0x000880E0 pwd: 0x12345678验证免密码 detect 恢复[usb] pm3 -- lf t55xx detect[] Block0............ 000880E0 (auto detect) [] Downlink mode..... default/fixed bit length [] Password set...... No四、Part 2理解两个独立的双向通信协议很多初学者容易忽略的一点T5577 有两套不同的、各自带有子协议的通信方向。Card → Reader卡到读T5577 按 Page 0 Block 0 的设置编码数据。无论是默认读模式上电后自动发送 Block 1 到 x 的循环广播还是响应命令的回复都用它。Reader → Card读到卡T5577 按 Page 1 Block 3 的设置编码下链路。若命令编码不正确芯片会忽略该命令并退回默认读模式。这就是为什么 detect 输出里会显示 Downlink mode以及 read 命令为何提供--r0到--r3四种下链路编码选项fixed bit / long leading reference / leading zero / 1-of-4对应 cmdlft55xx.c 中的下链路模式定义。五、解码配置字 Block 0Page 0以 EM4100 为例配置字的选择决定了卡片在生产用途下的行为形态想让卡片表现得像 EM4100就选 EM4100 的参数组合HID 同理各协议配置值可参见社区资料也可对照 cmdlft55xx.h 中内置的协议配置常量表。以非密码保护的 EM4100 配置00148040为例其二进制为0000000000010100100000000100000032 位。按位域拆解BitsPurposeValue0000Master KeyNothing Set0000000Not used in Basic Mode101Data Bit RateRF/640Not used in Basic Mode01000ModulationManchester00PSKCFRF/20AORNot Set0Not used in Basic Mode010Max Block20PasswordNot Set0ST Sequence TerminatorNot Set00Not used in Basic Mode0Init DelayNot Set5.1 实操把 T5577 变成 EM4100假设卡片仍处于 Part 1 结束时的状态无密码可写。克隆 EM4100ID 为1122334455[usb] pm3 -- lf em 410x clone --id 1122334455[] Preparing to clone EM4102 to T55x7 tag with ID 1122334455 (RF/64) [#] Clock rate: 64 [#] Tag T55x7 written with 0xff8c65298c94a940 [] Done用lf search验证可看到 HoneyWell IdentKey 的多种解码结果与 T55xx 芯片指纹[] Checking for known tags... [] EM 410x ID 1122334455 [] EM410x ( RF/64 ) [] -------- Possible de-scramble patterns --------- [] Unique TAG ID : 8844CC22AA [] HoneyWell IdentKey [] DEZ 8 : 03359829 [] DEZ 10 : 0573785173 [] DEZ 5.5 : 08755.17493 [] DEZ 3.5A : 017.17493 [] DEZ 3.5B : 034.17493 [] DEZ 3.5C : 051.17493 [] DEZ 14/IK2 : 00073588229205 [] DEZ 15/IK3 : 000585269781162 [] DEZ 20/ZK : 08080404121202021010 [] [] Other : 17493_051_03359829 [] Pattern Paxton : 289899093 [0x11478255] [] Pattern 1 : 5931804 [0x5A831C] [] Pattern Sebury : 17493 51 3359829 [0x4455 0x33 0x334455] [] VD / ID : 017 / 0573785173 [] ------------------------------------------------ [] Valid EM410x ID found! [] Chipset detection: T55xx [?] Hint: try lf t55xx commands用 detect / info 查看新配置。detect 显示 Bit rate 变为5 - RF/64、Block0 为00148040[usb] pm3 -- lf t55xx detect[] Chip type......... T55x7 [] Modulation........ ASK [] Bit rate.......... 5 - RF/64 [] Inverted.......... No [] Offset............ 33 [] Seq. terminator... Yes [] Block0............ 00148040 (auto detect) [] Downlink mode..... default/fixed bit length [] Password set...... Nolf t55xx info源码入口 CmdT55xxInfo给出结构化解读并附配置块指纹匹配[] --- T55x7 Configuration Information --------- [] Safer key : 0 [] reserved : 0 [] Data bit rate : 5 - RF/64 [] eXtended mode : No [] Modulation : 8 - Manchester [] PSK clock frequency : 0 - RF/2 [] AOR - Answer on Request : No [] OTP - One Time Pad : No [] Max block : 2 [] Password mode : No [] Sequence Terminator : No [] Fast Write : No [] Inverse data : No [] POR-Delay : No [] ------------------------------------------------------------- [] Raw Data - Page 0, block 0 [] 00148040 - 00000000000101001000000001000000 [] --- Fingerprint ------------ [] Config block match : EM unique, Paxtoninfo 的输出确认了我们手工解码的结果其中 Config block match: EM unique, Paxton 与源码常量T55X7_EM_UNIQUE_CONFIG_BLOCK/T55X7_EM_PAXTON_CONFIG_BLOCK同为0x00148040的指纹匹配机制对应。注意detect 仍然必不可少——proxmark3 必须先 detect 才能知道如何解码 info。EM4100 仿真下 Max Block 2数据占用 Block 1 与 Block 2。5.2 练习 2用 Part 1 的读写技能查看 Block 1 和 Block 2 的数据。注意1122334455这个 ID 是编码后存储的不要指望直接看到这些字节——如何解码去查数据手册。此时若想给这张 EM4100 仿真卡加密码保护可走第三节的流程把配置从00148040更新为00148050同样只动 Bit 28。切记先在 Block 7 写入并记住一个有效密码。原文档中 Block 3 Page 1 一节标注为to be written即下链路配置块部分尚未撰写理解其重要性可参考第四节的协议说明。六、嗅探 T55xx 命令抓明文密码有些读卡器通过 T55xx 命令read/write 等与卡片通信并因此被认为安全。但此时密码是以明文在射频场中发送的。proxmark3 提供了嗅探命令从缓冲区或射频场中捕获这些命令源码入口 CmdT55xxSniff[usb] pm3 -- lf t55xx sniff[] T55xx command detection [] Downlink mode | password | Data | blk | page | 0 | 1 | raw [] ------------------------------------------------------------------------------------------------------------ [] Default write/pwd read | [FFxxxxxx] | FFxxxxxx | 6 | 0 | 16 | 45 | 1011111111101xxxxxxxxxxxxxxxx100000110 [] Default write/pwd read | [FFxxxxxx] | FFxxxxxx | 6 | 0 | 17 | 46 | 1011111111101xxxxxxxxxxxxxxxx100000110 [] -------------------------------------------------------------------------------------------------------------------输出表逐列给出下链路模式、捕获到的密码[FFxxxxxx]表示密码高字节为 FF、其余位未完全解析、目标数据、块号、页号以及原始位串。七、T5577 与 Keysy基于可追溯数据的 DRMKeysy 标签克隆工具使用一种特殊机制它在Block 6写入一个特殊密码值注意这不是第三节的芯片密码该值与可追溯数据绑定Keysy 会校验并计算 Block 6 的正确取值不会写入不满足条件的标签。这一 DRM 技术依赖两个前提正品 T5577 芯片的可追溯数据Page 1 的 Block 1 和 2不可重写计算 Block 6 正确值的方法是专有的——由此迫使用户购买其品牌标签。而正如前文所述部分 T5577 克隆芯片允许覆写可追溯数据因此把一枚 Keysy 标签的完整 dump 写入这类克隆芯片即可欺骗 Keysy 使用它。这同时意味着永远不要覆写 Keysy 标签的 Block 6否则该标签将无法再被 Keysy 编程除非恢复该值。八、源码级小结命令体系与关键常量从 client/src/cmdlft55xx.c 的函数布局可以完整看到lf t55xx子命令的实现脉络均对应本文出现的操作命令源码入口作用lf t55xx detectCmdT55xxDetect自动检测调制/波特率/Block 0/密码位lf t55xx dumpCmdT55xxDump转储全部页块数据lf t55xx readCmdT55xxReadBlock读块含 PWD 安全检查lf t55xx writeCmdT55xxWriteBlock写块可选密码lf t55xx wipeCmdT55xxWipe恢复默认配置并清零lf t55xx infoCmdT55xxInfo结构化解读配置字 指纹匹配lf t55xx traceCmdT55xxReadTrace解析 Page 1 可追溯数据lf t55xx sniffCmdT55xxSniff嗅探射频场中的 T55xx 命令lf t55xx brute/chkpwdCmdT55xxBruteForce/CmdT55xxChkPwds字典/穷举恢复密码核心常量集中在 client/src/cmdlft55xx.h密码块号T55x7_PWD_BLOCK 0x07、PWD 位掩码T55x7_PWD 0x00000010、每页块数T55x7_BLOCK_COUNT 12以及 EM41000x00148040、HID 26 位0x00107060、Indala 64/2240x00081040/0x000810E0等各协议的配置字常量——这些常量与本文第五节的位域解码表一一对应。配置状态在客户端由t55xx_conf_block_t结构定义持有涵盖调制方式、位率、偏移、Block 0 值及其来源状态NOTSET/AUTODETECT/USERSET/TAGREAD、密码与下链路模式——这正是 detect 输出各项的内存表示。附录本指南的关键安全红线忘记 Block 7 密码 卡片报废除非用lf t55xx chkpwd/brute从字典恢复。未在密码模式下不要执行带-p的 read必须时配合-o并自担风险——客户端的 safety check 会先拦截。改配置字采用读—改单 bit—写回策略不要盲写标准值覆盖整块。操作前永远先lf t55xx detect它是后续所有命令正确解码的前提。【免费下载链接】proxmark3Iceman Fork - Proxmark3项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考