M1水卡破解教程
M1水卡破解教程
前置知识
1、如果一个读卡器周围有多张卡,读卡器的电磁场激活卡片后,卡片会把自己的 UID 回复给读卡器,读卡器根据 UID 选择卡片,然后读卡器与卡片进行认证,通过之后才进行正常的数据传输,避免信息的混肴和丢失
2、ISO/IEC 14443-3 是一项国际标准,主要涉及近场通讯(NFC)和射频识别(RFID)技术中用于接触式集成电路卡(IC卡)和读卡器之间通信的协议标准,在 14443-3 中读卡器(近距离耦合设备)简写为 PCD,卡片(近距离集成电路卡片)简写为 PICC
M1卡
这里的M1卡指的是A卡,也就是ISO/IEC 14443 Type A卡,本来是在学习这篇关于M1的AES认证机制的时候突然想到以前搞的ACR克隆M1卡的实验,但是那个比较基础,于是我就花了一些时间去研究了一下关于M1的的水卡的校验原理,发现还算比较简单的
实验
先贴上我的实验数据
1 | 9 扇区 |
上面的数据是我通过ACR122U的IC卡提取器提取出来的数据,经过对比9扇区1,2区块和10扇区的0区块是改变的区域
于是在通过对数据的分析,发现在9扇区的1,2区块的前两个字节是金额的数据,由于是小端序,于是我们可以知道这里面的数据金额为(0x3E4) = 996就是9.96,倒数第4个字节是固定不变的数据,于是可以忽略,
更加经验来讲最后一位一般都是校验位,校验的方式对于水卡来说,一般都是每个字节异或校验,或者加校验,或者或校验,或者与校验,具体情况得自己分析找规律,但无非就是异或,或,非,与,加
这里的实验数据是加校验
然后我们继续看10扇区的1区块,本身10扇区的1区块的数据变化是很复杂的,这也是上次没有实验出结果的原因,但是在看完一篇关于M1校验的文章后发现,M1校验可能跟时间也有关系,于是做了一个实验,保证两张卡的UID和金额等等不变,只有最后一次使用的时间不一样,发现数据的前5字节是变化的,也就是说,前5字节就是时间戳
这里的时间戳的作用,根据我了解的关于水卡的校验,应该是用于滚动码的,或者说是用于防止你复制水卡的,但是由于我们的水卡的设备是没有联网的,无法实现滚定码
于是不用管,最后经过不断地对比实验,发现FB1D的1D是定值,FB是上面的校验码,最后的6F也是校验码
结论
我们学校的水卡使用了加校验和时间戳,但是时间戳没用到,因为不联网
我挺喜欢一句话的,技术本身无罪,重要的是使用的人