0
点赞
收藏
分享

微信扫一扫

对食堂饭卡的操作(别人分享,亲测有效)

倚然君 2022-05-03 阅读 115
网络安全

0x01 过程

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

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

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扇区

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

2区块:001000BE2D000400BD2C000400BC33DB
第BE次消费10元对应刷卡机2D
0x03 一卡一密分析

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

如0区块:25F2AF275F0804006263646566676869
卡号是:25 F2 AF 27
后面紧跟的5F是检验位:5F = 25 xor F2 xor AF xor 27
如果用UID卡(0扇区可写的卡)改卡号,记得把后面的校验位也改了,否者部分读卡器不认卡号的,不要以为只改卡号就完事了哈。
实测海康门禁CPU读卡器需要认校验位
密码分KEYA,KEYB,KEYA在控制位FF078069左边

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

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

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

一卡一密算法(根据上述卡号密码)
[假装自己会C语言 写的“伪代码”]
num[8]=“25F2AF27”;
char pas[12];

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’
pas[] = “56CE885DC32D”

0x04 结果

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

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

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

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

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

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

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

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

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

举报

相关推荐

0 条评论