Mifare1智能洗澡卡破解分析 今天我们以破解一张洗澡卡为例: 用到的工具 读卡设备:ACCR122U一个/或者PN532也可以 空白M1卡片两张 正常使用洗澡卡一张 具体实施:声明:在实施过程中有可能我的步骤不是最简便和最有效的办法,但是作为科普入门级的文章,只希望更多的人能理解实施的过程,以更好的去防护这种方法。 卡内余额为26.91元,然后将ACR122u插在机器上,使用M1卡服务程序破解得出卡内的DUMP文件 使用M1卡服务器程序破解 由于这种M1卡秘钥对为弱密码所以大约几十秒的时间就会破解成功,dump文件会生成在文件目录下: 修复,如图: 打开这个软件点击选择文件-选择刚才生成的1KB文件-就会提示“是否保存为4K文件格式”—选择“是”-就是自带修复成功 然后关闭软件,刚才的1kb的DUMP文件就会自带修复为4KB文件了。 通过上面的方法得出三个不同金额的dump文件。 2)通过十六进制编辑器进行dump文件的对比,找出金额控制位,我使用winhex进行编辑dump文件: 因为这两个文件都是同一张卡片不同金额的dump文件,所以假定有金额的数据不同,有刷卡次数记录的数据不同,刷卡时间的记录不同,(假定会有这些不同之处,也许只有记录金额的变化),通过对比两张卡片,发现在00000176 和00000192处有不同的数据块 如图; 余额为26.91: 余额为26.88: 发现这两张卡内的不同之处在于:
通过十六进制转换测试: Hex(80 0A)=32778 HEX(7F F5)=32757 测试发现并不是这么简单的直接转换,于是将 800A 进行翻转为 0A80 HEX(0A80)=2688 2688符合卡内余额为26.88的实际情况。 HEX(0A83)= 2691 2691符合卡内月为26.91的实际情况。 可以总结得出金额位的加密方法为 金额转换十六进制后进行翻转存储。 接下来分析 7F F5代表的含义 根据M1卡了解 金额位置后面会有校验位数据,通俗讲就是当前面金额数据变了之后,校验位会根据另外的算法去改变值。 一般最简单的算法都是二进制取余后转换为16进制再加上金额位的加密方法 计算方法如下: 校验位7F F5-翻转为F5 7F转换二进制为1111010101111111 二进制取余为0000101010000000 转换为十进制为: Hex(0000101010000000)=2688 可以得出金额校验位的加密方式为将金额转换为二进制后取余,取余后的二进制转换为16进制,将16进制翻转后得到的结果就是金额校验位的信息 例如金额为26.88—2688–0000101010000000—1111010101111111–F5 7F–7F F5 计算出金额校验位应填7F F5 计算出金额位和金额校验位的加密方式后可以进行金额的修改 修改金额为600元则计算 金额位:600—60000—EA60—60EA 金额校验位:600—60000—1110101001100000—0001010110011111—159F—9F15 则金额位填:60EA 金额校验位填:9F15 直接在winhex内修改dump文件: 直接保存文件为600.dump,dump金额就修改成功了 3)将文件写入到空白卡片中 写入成功: 4)测试: 到这里就是M1卡破解的基本步骤,仅作科普文章,请勿做违法事件!
|