自定义修改Mifare1卡内部数据

M1卡简介:

M1卡的规格是1KB,内部有16个数据区,标号0-15,每个数据区有4个存储块,每个块大小是16字节;M1卡的0数据扇区的起始块通常存放厂商的一些固化信息,不可修改;M1卡都有自己的UID,占据32位;M1卡工作频率为13.56MHz,通信速率106Kbps,工作半径位100ms。

现在大部分学校用的水卡都是这种类型的,包括一些小店的会员卡。而且绝大部分都是采用离线方式,数据都会存在卡的芯片上而没进行联网校验,那么作死的机会就来了。

由于是离线,并且是被动读取,因此你可以随意的修改数据而不被发现。网上大部分的改水卡金额的教程也是基于这个而来的。

那么开始前需要准备好工具:
1. 装了Windows的电脑
2. 淘宝上买个proxmark3
3. M1卡

将proxmark3的驱动安装后,插上设备,到设备管理器中查看使用的是第几个COM口。
比如使用的COM 3口,则使用命令行:

proxmark3.exe COM3

接着放上自己的M1卡,通过PRNG漏洞Key,输入命令:

hf mf mifare

然后就可以获取0扇区的加密码,接着通过此加密码,可以求各个扇区的密码。
比如0扇区加密码是ffffffffffff,则输入命令:

hf mf nested 1 0 A ffffffffffff

利用嵌套循环破解剩下的15个扇区加密码,可以在命令最后添加参数d导出破解后的结果。

接着导出破解后卡内数据,输入命令:

hf mf dump 1

导出文件为dumpdata.bin

最后就是对比刷卡后变动的数据,两个导出的文件相互比较,得出规律,即改动相应位的数据,保存文件为.eml格式后再写入卡片,来取得修改金额的目的。