• HOME
  • ARCHIVE
  • CATEGORIES
  • TAGS
  • LINKS
  • ABOUT

rsky

  • HOME
  • ARCHIVE
  • CATEGORIES
  • TAGS
  • LINKS
  • ABOUT
Quiet主题
  • 神奇的操作

记一次校园水卡的破解

rsky
日常分享

2021-05-01

由于上学期间较忙,这篇文章拖了很久才开始写

破解环境

硬件:PN532+PL2303(就下面这个小玩意儿)
软件:MifareOneTool(Windows),Mifare classic tool(android)

驱动配置

在安装好PL2303的驱动后,把扫描速度改成115200

字典解密

然后连接PN532硬件,将卡放在PN532上。
这里吐槽一下,PN532硬件放在金属物品会被磁干扰。
再打开MifareOneTool进行破解,开始跑密钥。我跑了蛮久才跑出来的,耐心点。

值差异化

用MCT读取dump文件并保存密钥

然后去用一次水卡,让金额产生差异

用MCT再读一遍水卡,读取的时候选择之前保存的密钥文件

算法分析

发现只有前后发生变化,

经过分析,前四位为金额位,后两位为校验位,用于校验金额。

学校的算法是先把金额转成十六进制,然后进行前后位颠倒,校验位代数相减,差值为93

例如金额100.00元,将10000转为十六进制,结果是2710,再进行颠倒,数值变为1027,刷了一次水卡后剩余99.95元,转换后为0B27。接下来是校验位,经过多次刷卡后分析对比,代数相减,发现校验位的算法是这样的:将余额转为十六进制,例如100.00元十六进制2710,然后拆位转十进制相加,27转十进制为39,10转十进制为16,最后加上多次代数计算的结果93,最终结果为148,再将148转换为十六进制94,这就是校验位了。

结果

最后刷卡,美滋滋(刷一次会扣除0.045元,所以显示99.955)

上一篇

我在人间凑数的日子

下一篇

Hello World

Quiet Theme © 赣ICP备2023006710号