【Vol.002】两中水卡值块修改
编者按:
- ==修改水卡、校园卡存在法律风险,饮水机用水仍需缴费的学校师生,禁止修改校园卡==
- 两阳(广东两阳中学)在2025年就宣布饮水机用水免费,根据当时水卡金额给我们退钱。但由于饮水设备没有更换,即使免费了我们还得去充值水卡(只不过现在不用钱充值)。问题出在充水卡处只能给你充50,我问她为什么不充个100,她说50够你喝很久了
- 本人是2026届高三,我们充值水卡时间是下午练后,时间仅有5分钟。有几次水卡没钱了忘充了,借了同学好几天水卡
- 基于以上原因,我研究了校园卡和水卡一些原理,成功修改了两阳水卡,本篇文章分享了修改教程
准备工作
硬件:一台支持 NFC 功能的安卓手机
苹果不行,由于 IOS 封闭的特性,没有提供 NFC 接口,故修改不了 IC 卡
软件:MIFARE Classic Tool
(下称“MTC“)是在 Github 上开源的 NFC 应用,官方提供了三种下载渠道(其实还有 Github Release )

此外本文提供国内(蓝奏云)下载地址,但只提供现在版本
蓝奏云下载由于蓝奏云禁止手机端分享
.apk文件,本文分享的是 MCT 的压缩包客体:两阳水卡
主体:人
基础:实践
水卡分析
金额存储位置
两阳水卡只有扇区4的块1和块2有值块数据
1 | #扇区4 |
在 MCT 中以整数查看数据,发现这两个值块数据的整数值就是50.00 x 100,即当前金额 x 100
所以,理论上只需要改这两个值块数据就可以了
校验机制
- 滚动码校验:
滚动码位于块1、块2的最后4字节,例如11EE11EE、12ED12ED,但不管怎么刷卡,滚动码都没有变化,故推断滚动码是出厂固定值,可能分别代表“上一次交易”和“当前交易”的某个固定标识,但实际饮水机不修改它们 - 扇区4块0末尾
C5AE校验:
第一行末尾C5AE可能是对金额等固定数据的校验值,但在修改金额后,不修改C5AE,饮水机也不会拒绝 - 金额上限校验
实操中,若把值块数据整数值改为99900以上(不包括99900),饮水机会拒绝,或强制修改为99900
因此两阳水卡就是一个明文存储金额、无滚动、无校验的简易离线卡,通过修改扇区4块2(但最好连块1一起改)的值块数据,只要上限不超过999元,就可以自由修改水卡金额
教程
解压下载好的 MCT 压缩包,安装软件
国产安卓系统会报毒,不要安装应用商店的版本,直接无视风险安装。
MCT 是完全开源的软件,其代码是公开的并接受社区的监督,请放心使用
打开软件-读标签,此时拿**==水卡贴紧手机 NFC 处==,出现“发现新标签”提示后点击“开始映射并读取标签”,在这期间==水卡要贴紧手机==**
复制扇区4的其中一个值块,点击右上角三个点,点击“编/解码值块”
粘贴刚刚复制的值块数据,点击“解码”,此时“整数值块”那里会出现数据。在“整数值块”框内输入你想要的金额,然后点击“编码”,然后复制上面生成的“值块数据”
返回上一级界面,把刚刚复制的值块数据粘贴回去
以同样方法处理另一块的值块数据,处理完后进入写存储
注意:点击 OK 的时候要把水卡贴在 NFC 处

后续修改
我们可以保存改为999元的水卡的转储文件,下次修改可以跳过改值块数据的步骤
然后再重复教程中的写存储步骤,就可以实现对另一张水卡的修改
