记录某学校热水卡安全性研究
废话不多说直接进入正题
准备的工具:pn532以及usb转ttl
步骤
- 用上位机看看能不能直接都到数据
看来能读到,如果不能读到需要用mfcuk和mfoc去破解密码
好了,下一步
点图中的三角区把数据保存成dump
拿水卡去刷一下后再读卡保存dump
用hexcmp2进行对比,找出变化的扇区以及内容
从图中可以看出只有两行有变化,而且两行数据相同,我们只需要分析第一行数据就行
把dump放进m1助手分析数据
经分析得10扇区的第三个和第四个数据是金额所在位,把它这两个反位的值是0015,也就是0.15,是水卡的金额。第二个数是金额位的16进制值相加(0F + 00的和,如果结果是三位数就取后两位)第六个数是第二个值的按位取反,第16个是第六个的值减A得出的值(F0-A=E6,这个A是由原卡的第六个减第16个得出的,是加是减是不确定的,需要看原卡数据得出结果).最后是第一个值,第一个值是2~15的异域。把所有数据都计算出来了,把第一行数据复制到10扇区的第三行。导出dump用上位机写入并测试,成功。经实验655.26是最大金额,这时第16个是00。
总结:这水卡安全性低,用的默认密码,校验码算法简单,有待加强。