饭卡破解 一卡一密破解(2B简单级别的一卡一密)

免责声明【所有人必看】:
一:站内所有资源均来自互联网收集或用户上传分享,本站不拥有此类资源的版权。
开心分享作为网络服务提供者,对非法转载,盗版行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权指控并出示充分的版权证明材料时,资源共享吧论坛负有移除盗版和非法转载作品以及停止继续传播的义务。开心分享在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任或其他法律责任,包括不承担因侵权指控不成立而给原发布人带来损害的赔偿责任。
如果侵犯了你的权益,联系QQ:1264849614我们将第一时间移除盗版和非法转载作品。
==============================================================================================================
二:站内所有资源均来自互联网搜集或用户上传分享,站内所有资源例如:教程、文档、源码、工具……只能用来做技术研究,任何人不得利用所学到知识或者站内资源做违法犯罪的事情,否则后果自己承担。

 

0x00 前言

知道自己在做什么,本文是基于学校领导批准下进行实验

一次复制门禁卡的机会发现学校饭卡是M1卡,于是尝试对饭卡的数据进行分析

尝试伪造,检验是否有被人非法充值“漏洞”

本文只技术交流分享,滥用者自行承担责任,与本文作者无关


这是一张伪造的饭卡,能改为任意卡号、姓名、学号、金额、交易流水记录

%title插图%num

0x01 过程

通过PN532上位机读取数据,读出12-14扇区数据

(以下数据经过修改,过机消费验证,厂家敏感信息用XX打码)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
12 扇区
0区块:3427001137270011001021310082BF81
1区块:EABBEABBEABB0000000000000000EF51
2区块:0124082088888800132284440000E274
3区块:1380XX76XX0DFF0780694346A053464A
13 扇区
0区块:00000000000000000000000000000000
1区块:66660000CC00BE05020209000014007C
2区块:66660000CC00BE05020209000014007C
3区块:B40DF82BC32DFF0780694346A053464A
14 扇区
0区块:00000000000000000000000000000000
1区块:00000000000000000000000000000000
2区块:001000BE2D000400BD2C000400BC33DB
3区块:0755XXXX0268FF0780694346A053464A

不断读出每次刷卡的数据

可用控制变量法,例如固定的刷卡机,金额等

然后就是头脑风暴,连蒙带猜去验证。


0x02 数据分析

12扇区

1
2
0区块:3427001137270011001021310082BF81
1区块:EABBEABBEABB0000000000000000EF51
0区块:1021310082      是学号
1区块:EABBEABBEABB    是姓名   GBK内码转换为:昊昊昊

检验位

不难发现,基本每区块的最后四位是检验位

网上教程的检验位运算无非就这几种:相加、取反、异或

于是进行尝试,发现是累加和、异或和检验位

BF  是前面所有数据十六进制下相加的和(累加和)

BF = 34+27+00+11+37+27+00+11+00+10+21+31+00+82

81  是前面所有数据相异或的和(异或和)

81 = 34xor27xor00xor11xor37xor27xor00xor11xor00xor10xor21xor31xor00xor82

13 扇区

1
2
1区块:66660000CC00BE05020209000014007C
2区块:66660000CC00BE05020209000014007C
复制代码
6666  十进制储存的金额:66.66元
CC00  金额检验位  CC = 66 + 66;  00 = 66 xor 66
BE    流水号,对应14扇区流水,满清
0502  消费日期 5月2日
0209  经过大数据分析,应该是刷卡机序列号
14    当天消费总额
7C    累加和检验位
复制代码

14扇区是 流水记录

1
2区块:001000BE2D000400BD2C000400BC33DB
第BE次消费10元对应刷卡机2D

0x03 一卡一密分析

卡号存放在0扇区0区块前8位

如0区块:25F2AF275F0804006263646566676869
卡号是:25 F2 AF 27

密码分KEYA,KEYB,KEYA在控制位FF078069左边

如3 区块: 56CE885DC32DFF0780694346A053464A
   KEYA是56CE885DC32D 
KEYB是4346A053464A

怎么看、算出来的呢?在同学的帮助下拿到10+人不同卡的数据
自己比较对比,发现密码是一个个字符计算的
并且卡号相同的字符对应密码的字符也一样,如下图同色的
图中上面前8位是卡号,卡号下面的是密码

%title插图%num

上面都是一卡一密的数据,一眼就看出规律了

一卡一密算法(根据上述卡号密码)
[假装自己会C语言 写的“伪代码”]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
num[8]="25F2AF27"
char pas[12];<br data-filtered="filtered">
pas[0] = num[6] xor 7 ;    //2 xor 7 = 5
pas[1] = num[7] xor 1 ;    //7 xor 1 = 6
pas[2] = num[4] xor 6 ;    //A xor 6 = C
pas[3] = num[5] xor 1 ;    //F xor 1 = E
pas[4] = num[2] xor 7 ;    //F xor 7 = 8
pas[5] = num[3] xor A ;    //2 xor A = 8
pas[6] = num[0] xor 7 ;    //2 xor 7 = 5
pas[7] = num[1] xor 8 ;    //5 xor 8 = D
pas[8]  =  'C'
pas[9]  =  '3'
pas[10] =  '2'
pas[11] =  'D'

1
1
pas[] = "56CE885DC32D"

 

0x04 结果

随着一卡一密算法攻破,可以说饭卡彻底失守了

学校饭卡黑名单依据是卡号,也就说只要卡号变了,黑名单就禁不了这张卡

但是,一卡一密也不是没用的,这时你的卡片密码要对的上相应的密码

刷卡机读卡是根据卡号算出这张卡独一无二的密码,然后再用密码访问/修改金额

可惜一卡一密算法已经看出来了,我们能伪造任意的卡号以及对应的密码

每区块最后4位的检验位也有了,伪造数据轻而易举

那么现在好玩了,饭堂内部没有监控,只要我改掉卡片的个人信息,伪造金额,就能消费了

甚至如果写出软件或用单片机做出修改卡号、密码、个人信息、金额、流水的功能

每次刷完卡后都更改上述信息,想抓到使用者简直是天方夜谭

 

遗憾:鉴于高三时间紧,目的只是为了安全,没有找到最大金额,稍微遗憾

0x05 后记

正好赶上校方换人脸识别门禁,以前的M1+2.4G复合的厚卡不用了

加上洗衣机需要加装刷卡机,于是整个一卡通系统换成CPU卡了

%title插图%num

最后,首先感谢学校老师的大力支持,给与一个包容、开放的环境。同时也为自己学校疯狂打call!

未来:通过逆向饭卡数据,大概了解饭卡的数据储存结构,为以后单片机开发饭卡刷卡系统做准备。

“实践是检验真理的唯一标准”,黑客电影说过“光在电脑搞是入侵不了的,还需要实地入侵”很赞同


点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注