首页
社区
课程
招聘
[原创]修改门禁和电梯卡实例之ACR122U的控制指令和参数
2019-10-24 12:05 32419

[原创]修改门禁和电梯卡实例之ACR122U的控制指令和参数

2019-10-24 12:05
32419
修改门禁和电梯卡实例之ACR122U的控制指令和参数

社区的门禁兼电梯卡50元一张,我们一家3口人就150元,过阵子家里老爷子来我这里的话再给他搞一张就得花200元了,太贵了吧!想起来柜子里有一个吃灰很久的ACR122U读卡器,遂祭出来分析了一下电梯卡。

还以为是啥高科技CPU卡呢,原来不是,就是一张标准的MIFARE卡。全卡共有16个扇区,每扇区4个块,每块16个字节。每个扇区都有两个密码,全卡共有32个密码。想访问哪个扇区,就必须使用与其对应的密码。

本段内容是道听途说,不知道真假:这种卡加密使用的是Crypto1算法。但是这种加密方式早在2008年就被亨里克和卡尔斯滕哥俩联手攻破了。这哥俩一个是德国计算机科研人员,一个是美国弗吉尼亚大学计算机专业在读博士。我们可以直接使用他们哥俩在第24届黑客大会上公布的资料来破解M1卡。

找到一个别人写的破解程序,据说原理就是上面那段我道听途说的消息。然而这个破解程序很好用,点了“开始破解”按钮之后几十秒,滴的一声,电梯卡所有扇区的数据全都Dump出来了。这个程序长这个样子:




又找了一个别人的写卡程序,导入刚才破解得到的二进制文件,放上一张从某宝1.2元买来的空白卡扣,写入。






试了试电梯、门禁,多次测试,全都成功,看来这张电梯卡连滚动码都不是,数据终身不变。

复制成功,接下来就想分析分析数据。

晚上静下心来观察观察这些数据,找到了这样一处数据:“13 0A 1F 00 18 00 00 12 08 1B 0A 11”(图片光标所在蓝色行)
把130A1F0018逐字节转成十进制,就是1910310024,这不就是19年10月31日24点到期嘛(我们小区物业费每年10月到期,小区居民都知道)。后面的12081B0A11转成十进制表示就是18年08月27日10:17,这就是我去年交物业费时,物业给我更新电梯卡数据的时间嘛。如果直接把130A改成630C有效期不就到了2099年12月了嘛,看起来So easy。

然后想分析一下楼层控制(我的卡只能刷开地下车库、一楼和我所在楼层,电梯里无法按亮其他楼层按钮),结果没分析出来,包含我楼层数字的地方太多了。算了,洗洗睡觉。

-----------第一阶段结束---------------






后来,不甘心啊,就想知道哪个数据是楼层权限,哪个地方可疑就改哪个地方,然后去电梯测试,暴力尝试,总会找到地方的。

此时发现,我每改一个数据去试验,就得把全卡数据整体写入一次,可我只想写某个块,并不需要全卡重写。有没有可以给出目标块的位置,直接写该块的软件呢?

找了找,都是收费的,最友(sheng)好(qian)的一款是读取目标块免费,写入目标块就得交费注册的,如图,不注册的话,写卡按钮灰色的,如下图:


不想交费,好吧,正好我手里有读卡器的SDK,看看读卡器的命令和参数,自己写一个小程序吧。

SDK里提供的模块已经封装好了各种操作它的函数,直接用就可以了。

实质上就是需要写一个通讯程序,发送一串二进制数据过去,读卡器响应之后返回一串二进制数据回来,并不难。



比如读0x04这个块,发送“FF B0 00 04 10”即可。FFB0是读指令,00是第一个参数,04是第二个参数,10是要读的字节数。
函数返回值9000表示读取成功,6300表示读取错误。(如果读取成功,要读的数据已经在读取缓冲区里了)
详细参数和返回值如图






比如想把“00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F”写入0x04这个块,
发送“FF D6 00 04 10 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F”即可。
详细参数和返回值如图





当然,读写某个块的前提是有秘钥哦。
例如秘钥是“FF FF FF FF FF FF”,那么让读卡器载入秘钥需要发送“FF 82 00 00 06 FF FF FF FF FF FF”。
详细参数和返回值如图

读卡器载入秘钥之后还要和卡内目标块的秘钥进行比对认证,如果秘钥正确才能对目标块进行读写哦。
例如发送“FF 88 00 04 60 00”,FF88是命令,00是参数1,04是参数2,60是秘钥类型,00是秘钥序号。





对我来说,会用这几步就足够了。
1、把秘钥载入到读卡器,同时给秘钥一个序号,比如00号秘钥。
2、把00号秘钥与当前卡目标块的秘钥进行比对认证。
3、认证通过后,对目标块那是想读就读,想写就写。

然后我就写了一个小程序,可以对指定的块进行读写,如下图:


试了试,自己写的程序果然好用,接下来就是去测试哪个块里有电梯楼层限制的数据啦。

有时间我再继续新。





[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞9
打赏
分享
最新回复 (17)
雪    币: 15
活跃值: (323)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
vaguem 2019-10-24 14:35
2
0
混看雪的难道破解都不会么。。。
雪    币: 914
活跃值: (2188)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
万剑归宗 1 2019-10-24 14:38
3
0
够硬核,动手能力很强
雪    币: 5116
活跃值: (4424)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
gamehack 2019-10-24 14:58
4
0
不错,期待后续分析!
雪    币: 747
活跃值: (798)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
letum 2019-10-24 15:21
5
0
vaguem 混看雪的难道破解都不会么。。。[em_86]
自己写一个,比破解他那个收费的更开心一些。虽然他那个按钮灰色直接把按钮改成enable八成就能用。
雪    币: 340
活跃值: (902)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
noword_forever 5 2019-10-24 16:43
6
0
能去哪个楼层,不是记录在你卡里面的,估计使用期限也不是。
你的卡有一个唯一的ID号,服务器里记录了这个号,也记录了这张卡能去哪些楼层,你刷卡的时候,就比较这些信息。
比较信息的过程不一定在服务器,可能 在“控制箱”里面,一个控制箱能控制若干道门。服务器会把卡的信息发送到控制箱里面。
也就是说,你能做的仅仅是克隆一张卡而已。
至少,我的公司的门禁系统是这样的,不知道你们小区是不是。
雪    币: 747
活跃值: (798)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
letum 2019-10-24 20:39
7
0
noword_forever 能去哪个楼层,不是记录在你卡里面的,估计使用期限也不是。 你的卡有一个唯一的ID号,服务器里记录了这个号,也记录了这张卡能去哪些楼层,你刷卡的时候,就比较这些信息。 比较信息的过程不一定在服务器, ...
你说的那种是最早期的卡,卡里除了卡号之外没有其他有用信息了。那时候电梯和门禁也是仅读取卡号。类似于银行卡的磁条上也只是一个账号,并没有金额什么的,卡里有多少钱还要靠银行的服务器里的数据库。
但现在这种只靠卡号的门禁和电梯越来越少了,现在常见的m1卡可以有64个块用来存储数据,已经不是仅仅使用一个卡号了,除了第0扇区第0块放着卡号之外,很多数据都会放在卡里,大多都在卡的秘钥基础上再进行加密写入密文,像我们社区这样的明文写入并不多。我也读取了我的一卡通(不是这张社区卡,而是公司的),每次金额发生变化后,都有一个块里某个位置的数据发生了变化,把变化的数据高低位交换然后异或了一个数之后,和餐厅买饭时显示的我的余额是对应的,说明剩余金额是写入在卡里的。
最后于 2019-10-25 08:50 被letum编辑 ,原因:
雪    币: 340
活跃值: (902)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
noword_forever 5 2019-10-25 21:25
8
0
那你可以修改一下过期的日期,把它提前,看看是什么效果。如果不能用了,那就是如你所说,门禁是按照卡中的信息来决定是否来放行的。
雪    币: 6
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
山川平原 2019-10-28 19:58
9
0
还是学习了  感谢
雪    币: 8285
活跃值: (1767)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
广岛秋泽 2019-10-30 22:32
10
0
看楼层可以用IC客栈等软件
雪    币: 62
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
zhuhy235 2019-11-6 04:00
11
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mlboy 2019-11-15 19:46
12
0
pm3
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ghua 2019-11-24 19:16
13
0
膜拜各位大佬,楼主大佬真是高手,都自己动手写程序,破解都不屑了
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_X_120 2021-3-5 09:24
14
0
动手能力太强了。
雪    币: 107
活跃值: (3560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Imxz 2021-3-5 10:37
15
0
老哥 你的后续呢
雪    币: 325
活跃值: (1878)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
crackwiki 2021-3-5 22:25
16
0
letum noword_forever 能去哪个楼层,不是记录在你卡里面的,估计使用期限也不是。 你的卡有一个唯一的ID号,服务器里记录了这个号,也记录了这张卡能去哪 ...
吃饭不用给钱吗?
雪    币: 856
活跃值: (385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
开心一族 2022-4-18 19:26
17
0
楼主的水平实在让我佩服,我看了一堆的书还在门外。。。。
雪    币: 1136
活跃值: (673)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
heihu 2022-4-18 20:40
18
0
等待楼主的后续
游客
登录 | 注册 方可回帖
返回