志,敢教日月换新天。为有牺牲多壮

滚动码(rolling code)

iPhone用户欢迎AppStore下载本人开发的NFC应用:iNFC。

https://apps.apple.com/cn/app/infc/id1562054959

iNFC适合小白使用NFC功能或专业人士使用iPhone进行NFC调试。

滚动码当前主要用在RKE(Remote Keyless Entry)系统中,进行身份验证

原理:编码器检测到按键输入, 把系统从省电状态中唤醒, 同步记数加1 , 与序列号一起经密匙加密后形成密文数据, 并同键值等数据发送出去。由于同步计数值每次发送都不同, 即使是同一按键多次按下也不例外。同步计数自动向前滚动, 发送的码字不会再发生。因此被称为滚动码。同步计数跟编码器序号一个64位一起经过DES加密,DES密钥为厂家独有,必须保密。加密之后的密文则通过射频系统发射出去。
接收端接收到密文之后,通过厂家的DES密钥进行解密,解密之后得到同步计数和编码器序号。首先检测编码器序号是否与接收器的序号相对应,如果对应,就检测同步计数是否在同步窗口内,也就是说是否大于本机保存的同步计数,但是又不大得太多,如果大得太多,本机就再作一次同步。如果在同步窗口中,通知执行机构执行用户命令,比如说打开门锁或者关闭门锁之类的。
由于加密算法能够把明文打散,因此,码的滚动会使得发射的码变化差异很大而难以破解,由于同步计数的存在,重复发送也没有效果,因此要攻破该类系统就要攻破DES算法。同步计数为16 位, 可达2的16次方 =65536 , 若每天用10 次, 则有18年的使用周期。32位的序列号, 容量为232 = 42 亿, 可以完全满足生产要求。

随着时间的推移,科技也在不断的进步,众多公司在时间的与现实的推动下不断的提高与完善自家技术,从最开始的明码系统到暗码系统,再从暗码系统演变到滚码系统,每一次技术的更新与升级都提升了卡片安全性。
但俗话说:“魔高一尺,道高一丈”,技术的升级与破解一直是一个永恒的话题,技术的升级淘汰掉了更多的低端卡匠,但无疑同时增加的破解的难度。下面给大家简单分享一些滚动码的一些技术。

滚动码技术是如何出现的?

最开始各大公司的卡片内数据都是以明码存放,例如楼层,户号,车位号,手机号,电梯到期时间等,由于卡内的到期时间是明码,用户直接可以修改,后来厂家发现这种漏洞以后,将卡内的这些信息加密处理,但在大神的面前,加密方法也被破解了,再此以后厂家发明了滚动码技术,判断是否为滚动码梯控其实很简单,某些大厂家的梯控都有自己的特征,直接就能看出来,如KD,HY,YH等,不知名的小厂梯控系统通过对比同一张卡两次刷卡的记录,也可以判断出来。

常见的滚动方式

常见的滚动方式有校验从小数到大数,每次刷卡加一,或者从大数到小数每次减少,这种滚动方式常在次数卡上使用,还有公式滚动法,读取卡内的数据与校验,经过读头单片机计算以后,写入新的数据与校验,不同厂家的公式算法不一样。有些厂家的滚动还会以刷卡时间和公式进行滚动,但大同小异。

滚动码的破解方法

滚动码技术的出现破解方法目前有如下几种

完整的破解了电梯的整套发卡梯控,找到算法,这种可以完美的对电梯卡进行延期等操作,只针对早期算法比较简单的滚动码,仅有软件计算,没有单片机计算的系统,目前新系统的算法不仅仅是软件计算还有发卡器内的单片机计算。

漏洞改法,通过更改控制位或者修改卡内某些地方的数据来压制卡内数据的滚动,这是利用了早期某些厂家的读头不会校验计算后的数据是否写入成功的漏洞。

初始码数据还原法,这种方法也属于漏洞改法的一种,利用了有些梯控厂家控制检测系统当识别到从未滚动过的卡(就是物业刚办的新卡)数据不会校验上次的逻辑漏洞,让卡内数据每次都是初始数据来对电梯读头进行欺骗,这时候的梯控读头已经修复检验写卡是否成功的漏洞,所以我们要让梯控读头完成一次完整的交互过程,完成以后我们在将卡内数据改回去即可,已经有厂家做出了这种还原卡,通过ariduino+pn532做离线写卡器实现。我们团队称这种卡为“处女卡”。

发卡器发卡,对于一些贼牛逼的厂家的算法无法破解,同时又采用由软件计算和发卡器内单片机双重计算的方式,针对这样的情况,我们使用同厂家同型号同版本的发卡器,通过修改发卡器发卡规则使得规则与物业的发卡规则相同来发卡,但是破解发卡规则是一个很大的工程,同时梯控厂家也不会向个人单独销售配套发卡器,所以这种方法只掌握在少数人的手中。

posted @   为敢技术  阅读(3672)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-03-31 [Swift]PhotoKit-照片框架
2019-03-31 [Swift]LeetCode1018. 可被 5 整除的二进制前缀 | Binary Prefix Divisible By 5
点击右上角即可分享
微信分享提示