常见卡类型
常见的卡类型有ID卡、M1卡、CPU卡,其中门禁用的比较多的就是ID卡和M1卡,CPU卡在公交行业用的比较多,原来公交卡也有很多用的M1卡,但是安全性比较差,后来基本都不用M1卡了,但是像门禁卡这种对安全性能要求不是那么高的地方M1卡用的比较多了,毕竟也比较便宜。
ID卡是早期的非接触式电子标签,工作频段在125kHz只有一个ID号,不可以存储任何数据,这种卡跟NFC不在一个工作频段,所以手机NFC是没法识别的,所以也不在本文讨论范围内。
M1卡类型
网上可以买到的M1卡有好几种,区别如下:
- 普通空白卡:就是普通的M1卡,物业采购门禁卡一般是这种
- CUID卡:一般普通M1卡是无法修改物理卡号的,这种可以反复修改物理卡号
- FUID卡:相比CUID卡,它的物理卡号只能被修改一次
按理说后两种都是不正规的卡片,正规的M1卡生产出来时,扇区0的第一个数据块就是应该不允许修改的,这个块就是用来存储物理卡号以及卡片厂商信息的。后面两种都是用来作为复制卡用的。
M1卡结构
M1卡有16个扇区,每个扇区4个数据块,一个数据块可以存储16个字节的数据,所以理论上一张M1卡刚好可以存储1kb的数据,存储结构如下图:
扇区0的第一块是用来存储物理卡号以及卡片厂商信息的,每个扇区的最后一个数据块是用来存储keyA、访问控制位、keyB的,keyA/keyB是两个操作密钥,访问控制位就是用来定义这两个密钥分别可以用来读还是写的,所以实际可以用来存储数据的只有白色的数据块。
以上截图是通过一个叫MIFARE Classic Tool的app读取一张M1卡得到的,这是一个开源的M1卡读写app,GitHub地址:https://github.com/ikarus23/MifareClassicTool
安卓手机可以下载这个app,后面读写卡片都是用这个app
M1卡密钥破解
一张空白的M1卡,所有白色数据块应该都是0,keyA/keyB应该都是F,访问控制位都是FF078069,有些门禁可能就只是识别了物理卡号,直接就用的空白卡作为门禁,这种直接拿个小米手机复制空白卡就可以复制成功,一旦keyA/keyB不是默认的,说明换了密钥我们一般称它为加密卡,就没法直接复制了,这时就得先破解密钥了。
淘宝上有一些卖读卡器的会提供一些工具软件,可以就能按照软件说明的步骤去破解出密钥了,不过读卡器一般有点贵,我这里提供一种较为经济的方案,只需要购买一个USB转TTL串口模块和一个PN532模块即可替代读卡器,加起来可能就十几块钱吧,破解软件的话github上有个开源的:https://github.com/xcicode/MifareOneTool
PN532模块是支持串口协议的,把PN532与USB转TTL串口连接起来,vcc接3.3v,GND接GND,TX接RX,RX接TX即可,插上电脑打开软件贴卡操作破解。
破解成功会直接读出卡片所有数据,导出一个数据文件,文件是二进制的,用winhex.exe
可以打开,打开显示的就类似MIFARE Classic Tool上的内容了
复制卡
复制卡的过程其实就是把上一节破解出来的所有数据写入到一张新的卡片里,让两张卡的内容一模一样。这里写卡也是用到了MIFARE Classic Tool,只需要把破解出来的keyA/keyB录入到密钥文件库中,然后读取目标卡的所有内容,再写到复制卡里就行了
评论区