|
楼主
吾爱游客
发表于 2024-5-16 15:58
|自己
1、申 请 I D:letum
2、个人邮箱:142000@qq.com
3、原创技术文章:
看雪论坛
[原创]修改门禁和电梯卡实例之ACR122U的控制指令和参数
https://bbs.kanxue.com/thread-255182.htm
[原创]拦截射频信号破解小区车牌识别-智能设备
https://bbs.kanxue.com/thread-266294.htm
我在看雪论坛没有精华贴,注册的比较早大概是十七八年前,发过的两个技术帖子都被设为了优秀贴,申请加入咱们论坛。
印象中好像2008年前后我可能注册过咱们论坛,现在忘记当时用的账号和邮箱了,重新申请吧,希望能加入成为论坛成员。
我曾经在2003年左右在北极星电力论坛放了一个自己编写的火电厂控制系统DCS的注册机,注册机留了我的QQ号142000,被后来的美国通用电气GE公司发了律师函警告,虽然是反面教材,但也算一个破解成果吧。
证明在看雪登录账号的截屏:
(找了个图床放的截屏)
https://img2.imgtp.com/2024/05/16/Uc2STDds.png
申请贴要求附上技术文章内容,我的文章都是多图的,附上一篇文章的文本吧。
修改门禁和电梯卡实例之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、认证通过后,对目标块那是想读就读,想写就写。
然后我就写了一个小程序,可以对指定的块进行读写,如下图:
试了试,自己写的程序果然好用,接下来就是去测试哪个块里有电梯楼层限制的数据啦。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|