0x00 起因
rtz在调试NFC时无意发现学校的饭卡是 Mifare S50 卡
然而这种类型的卡片安全性非常低,互联网上有大量破解该类型卡片的工具
所以rtz决定破解一下学校的饭卡练练手。
0x01 工具
ACR122U 读卡器一台
无源全加密侦测卡一张
此次破解的关键是无源全加密侦测卡。
这种“黑客工具”非常难购买到,rtz是一年前机缘巧合购得一张。
0x02 原理
一般的IC卡加密方式是“一卡一密”
也就是根据卡片的ID经过一个黑盒算法,得出该卡片的密码
由于Mifare卡的设计不合理,导致了Mifare卡读卡器“无条件信任”放在它上面的卡片
不管那张卡片是哪里来的,也不管是不是自己发行的卡
只要检测到卡片,就向该卡片发送密码进行验证
无源全加密侦测卡的作用是:伪造自己的ID,并记录下读卡器向自己发送的密码
有了ID和密码,经过一系列头脑风暴,即可得出密码黑盒算法
0x03 过程
rtz将无源全加密侦测卡的id分别伪造为000000 000001 000002…
然后持着侦测卡前往行政楼下的自助服务机器,将侦测卡放入读卡器
待侦测卡获取自助服务机器“傻傻分不清”后发来的密码,再使用软件读出密码
这样就有了ID和密码样本
rtz一口气获取了十几组样本,经过一下午带晚上的计算,
成功得出了ID到密码的加密算法
这是rtz使用java编写的一个利用算法读取饭卡信息的程序
0x04 后果和意义
由于密码算法的破解,rtz可以读取任何一张饭卡存储的学号、姓名、身份证号等信息,
还可以使用ID可改的UID卡直接伪造被读取信息的饭卡
如果算法被居心叵测的人得到,任何基于饭卡进行交易的机器
例如食堂的购饭机,会被伪造的饭卡欺骗地体无完肤
后记
破解加密算法的另一个好处是,rtz准备为实验室开发一套门禁系统
若是门禁系统使用饭卡的加密算法,则可以直接支持全校的饭卡
还可直接显示出持卡人姓名和学号
一体化地非常完美~