写入Mifare Classic 1K卡dump至空白卡后无法读取,求技术协助
我碰到过不少朋友遇到这种情况,大概率是下面几个原因导致的,你可以逐一排查:
Dump文件不完整或损坏:Mifare Classic 1K总共有16个扇区,每个扇区包含密钥A、控制块和密钥B,完整的dump文件应该是1024字节。如果你dump原卡时只破解了部分扇区的密钥,或者dump过程中读卡器和卡连接中断,生成的dump文件就会有缺失。写入空白卡后,新卡的部分扇区密钥或数据不对,自然读不出来。你可以用
hexdump -C dump.bin检查文件大小,要是不是1024字节,就得重新dump原卡。空白卡兼容性问题:不是所有空白Mifare卡都能完美适配。有些低成本的兼容卡,和原装Mifare Classic 1K的存储时序、硬件结构有细微差异,写入后读卡器无法正常识别。建议换一张原装的Mifare Classic 1K白卡试试,或者先测试空白卡的可用性——用
nfc-list识别它,再用mfoc -k FFFFFFFFFFFF读取默认密钥,能读出来说明卡本身没问题。写入命令参数错误:写入时如果参数不对,比如没指定正确的密钥范围,或者写入过程中出现中断,都会导致写入不完整。举个例子,用
nfc-mfclassic写入时,正确的命令应该是类似nfc-mfclassic w a dump.bin dump.bin(第一个dump.bin是要写入的数据,第二个是密钥文件,要是你没单独存密钥文件,也可以用同一个文件)。另外,要是空白卡的默认密钥被修改过,写入时得指定对应的密钥才能成功。原卡存在防克隆机制:有些Mifare卡会被设置特殊的控制块参数,比如锁定扇区写入权限,或者用了非常规的密钥存储方式。就算你dump了数据,写入空白卡后这些控制块的参数可能无法被正确解析,导致新卡处于锁定状态,无法读取。你可以查看dump文件里每个扇区的第3块(控制块),比如扇区0的控制块在偏移0x10-0x1F的位置,看看参数是否符合标准Mifare卡的格式,有没有异常的锁定位。
读卡器或驱动问题:有时候问题出在读卡器上。比如驱动版本太旧,或者读卡器硬件故障,都会导致写入后无法读取。你可以换个读卡器试试,或者更新一下读卡器的驱动程序。另外,mfcuk是用来破解密钥的工具,如果新卡的密钥和原卡一致,但你用mfcuk时参数设置不对(比如破解模式、超时时间),也会出现读取失败的情况。
内容的提问来源于stack exchange,提问作者mirobertod

