几分钟内破解酒店的门禁系统

电脑杂谈  发布时间:2020-04-15 05:22:41  来源:网络整理

win7系统ie11浏览器管理加载项里面_cf卡生化酒店卡铁门_酒店门卡管理系统

在阅读之前,翻译者有话要说

一口气阅读了本技术文档后,感觉如何? “特工”和“大型”的混合体. 原文中没有插图,请耐心阅读.

谁是作者Cody Brosius?美国人也是. 他是Mozilla开发工程师,以在Linux上(学生期)在iTune上购买音乐,破解iPhone(即越狱),破解人机界面和开放源代码(即使用人脑来控制音乐)而闻名. 计算机),然后破解酒店的门锁.

我可以理解我作为黑客而不是黑客的感受. 我想花时间挑战这个有声望的问题(即酒店安全门锁),但是突然发现这比我想象的要困难得多(当然,它比我的水平高得多),很容易被破解,并且存在许多漏洞. . 就像连续复习一个月,测试的难度与作业的感觉相当.

本技术文档所在的网站(即科迪自己的网站)具有简洁的主页,该主页不再简洁,但没有直接链接至本文档. 但是此文档仍保留在他网站的服务器上. 这是什么意思?慢慢猜吧,我想,信息量太大.

好吧,别再胡说八道了,庄严地提供技术翻译.

简介

在本文中,我们讨论了酒店中使用的Onity HT门锁系统的设计和内部原理. 在全球范围内,大约有1000万个Onity HT酒店门锁在使用中,占全球酒店的三分之一或酒店门锁的一半以上.

我们希望从独特的角度揭示Onity HT系统的工作原理,以及潜在的不同隐患.

本体门锁系统设计原理

本体门锁系统分为几个部分:

编码器: 用于制作门禁卡,还存储各种信息. (例如,房间列表,时间表等). 它可以连接到编程器.

·编程器(以下简称PP): 将客户钥匙代码,主管代码,时间表和其他信息写入门锁.

门锁: 我们在这里谈论的门锁主要是指实际上判断门开关逻辑操作过程的电路板. 有几种门锁配置,例如外门和客房门,但我们主要讨论客房门锁.

尽管编译器在整个系统中非常重要,因为它可以处理访问控制卡上的密码,但我们主要关心的是PP和门锁.

重要概念

源代码

这是Onity随机生成的32位代码,代表酒店房间的唯一标识,也是整个系统安全的关键. 源代码用于对门卡进行编码/解码,对门锁进行编程和解锁.

由于这些原因,源代码不会公开给任何人,甚至酒店所有者.

键值

密钥代码值包含24位数据,用于获取解锁权限. 除了宾客密码外,门锁还会生成一个或多个管理员密码.

业内并没有为每位客人重新设置门锁,也没有必要再制作几张监管门禁卡,而是采用“卡流通”的概念. 给门锁分配一个通常为50的预付款,这意味着在使用多少张新卡之前,仍然可以有效地解锁门卡. 客人的密码是123,门锁的密码是100,因此,提款金额必须至少为23,才能使卡有效. 当有效卡被卡在门锁中时,门锁的密码成为卡的密码. 因此,当激活新卡时,门锁可以自动取消旧卡. (译者注: 便利和安全成反比. )

特别强调,键码的数量可能会减少预付金额. 24位编码值具有大约1670万种不同的可能性. 对于每张有效的卡. 因此,假设您手边的门卡的标准提前量为50,并且门钥匙可能只有328965. 当提前量最大化(即255)时,可能的钥匙数量减少到可怜的65536. . 这意味着当您在后面时,需要在锁上尝试安装32,768个门卡才能将其打开. 结果,出现了另一个问题.

如果两个门的密码非常接近,并且在添加预付款后生成了交叉点,那么原本用来打开一个门的门卡是否可以用来在同一家酒店中打开另一个门?当为这些门的初始代码编码时,它们在前后各相差1,000,以减少发生这种情况的可能性. 但是,酒店的所有门都不是同时编码的,总有一些房间比其他房间更受欢迎,这直接导致可能会在边境重复输入密码.

识别码

酒店门卡管理系统_cf卡生化酒店卡铁门_win7系统ie11浏览器管理加载项里面

每张卡均包含一个16位识别码. 访客卡分为两部分: 该卡指定可以打开的门,以及该卡的副本. 在主管门卡上,指定用来打开门的部分由员工编号代替.

当您入住酒店时,通常会选择是否要一张额”现象.

重要的是要强调门锁不知道自己的识别码是什么. 识别码仅用于识别门卡,例如,当使用编码器读取时,然后将其存储在门锁的审核日志中.

审核日志

另一个名称是引导日志,其中包含有关哪些卡用于解锁(由标识码确定),PP中使用的解锁功能以及新访客门卡的记录. 每条记录都由一个16位标识符(或在特殊情况下使用PP的解锁功能时生成的错误标识符)和一个尾随16位时间戳组成.

特殊门卡

在一些特殊的门卡中,我们讨论中最重要的是编程卡和备用卡. 当编程卡卡在进入锁中时,将插入备用卡,该备用卡成为该门的访客门卡.

通常在编码器出现故障且客人无法进入房间但不能制作普通门卡时使用编程卡和备用卡. 但是,这导致了新的危机,一旦制作了编程卡,任何酒店房间都没有用.

可以知道,编程卡是从酒店财产的源代码中加密的,备用卡与其他卡类似,不包含任何加密,仅包含序列号.

描述流程

观察日常使用中的系统情况可以使事情变得更加紧密. 下面以一种常见的方式描述酒店的门锁系统.

安装

由Onity人员安装编码器时,酒店的门会以指定的识别码和初始钥匙码输入. 然后,酒店工作人员使用编码器将门数据加载到编程器中. 在酒店安装门锁时,编程器会为它们提供特定的钥匙代码和管理员代码. 当门锁为空并且数据丢失,然后更换门锁电池时,也会发生这种情况.

客人入住

当客人进入酒店时,Onity系统的第一步是生成一个或多个门卡. 房间门号输入到编码器中,然后是停留天数(用于自动到期)和生成的门卡数. 门卡是按顺序放置的,特定于房间的数据被编码.

当客人第一次将门卡插入锁中时,发生了几件事:

酒店卡上有什么

前面已经讨论了门卡的一些数据片段,因此让我们完全分解其数据结构:

这些数据然后用旅馆的源代码加密,并存储在标准磁条卡的第三条磁道上. 本文的附录B中介绍了加密算法.

门锁互动

之间的互动

,并且门锁以单行双向方式执行. 在门锁的底部,在门板外部,有一个直流电源接口,通常用于供电,并通过传输线将数据连接到其他设备.

最重要的是高级数据传输,允许读取内存信息和解锁. 编程器中还有其他几个功能,但是由于它与本文所述的漏洞无关,因此不必解锁设备.

线路协议

基本概念

我们首先将可以与门锁进行交互的设备定义为控制所有交互功能的“主”设备.

酒店门卡管理系统_win7系统ie11浏览器管理加载项里面_cf卡生化酒店卡铁门

在上拉电阻的作用下,线路在3.3伏的高电平下处于空闲状态. 为了使“主控”与门锁相互作用,需要在一段时间内生成一个低电平信号(接地),称为脉冲. 交互信息以瞬时方式执行,我们称为“数据组”,即“主”以200微秒的间隔(在两个脉冲沿之间)发送每个20微秒的同步脉冲. 实际的交互作用发生在这些同步脉冲之间. 如果在这些同步脉冲中出现一组12微秒的数据脉冲,则设备之间将交换1位信息. 丢失的数据脉冲被视为零位.

这里的重点是,“主控器”和门锁都可以与数据脉冲相互作用,但是同步脉冲只能由“主控器”产生.

数据组结构

如上所述,数据集包含重复的同步脉冲酒店门卡管理系统,该重复的同步脉冲可能包含也可能不包含数据脉冲. 应该注意的是,所有数据集都有一个同步跟踪脉冲,并且不包括数据脉冲.

根据实验,数据集之间的时间间隔不少于500微秒,基本定时记录为2700微秒.

要在“主控”和门锁之间发送数据,不需要启动消息,只需按顺序发送数据组即可. 但是,由于门锁本身无法生成自己的同步脉冲,因此必须提示“主机”它需要信息. 为此,请路空闲时将电平信号降低120微秒. 如果门锁到达上一个点,“主机”将开始生成同步脉冲并监视门锁发送的数据脉冲信号.

高级传输协议

下面将描述相关的高级控制命令的详细信息. 注意: 当提到“字节”时,它表示从最低有效位开始的8位.

验证注意事项

每个高级指令似乎都有其自己的校验值,但实际上它是指令值本身与特定于指令的常数的异或运算. 我们不知道这些常数是从哪里获得的,也许它们只是硬编码的随机量,只是使传输协议更加复杂.

阅读说明

read命令将使用16位内存地址,然后在该地址返回16字节的信息. 这意味着,如果您从地址0读取信息,然后再读取地址1,则将重复15字节的信息. 通常,每次阅读该信息时,您都希望获得16字节的信息,每行都不会重复.

在读取命令中,单个数据组以以下格式编码: 00000000000000000000000000000000000000001010001111AAAAAAAA1BBBBBBBB1CCCCCCCC. A字节是内存地址的高8位,B字节是低8位,C字节是校验值,它是通过A ^ B ^ 0x1D XOR操作获得的.

发送此消息时,门锁将发送信号,以数据组的形式发送165位信息. 信息的前13位的作用是未知的,其后是16个9位字节(即,每个8位字节后跟1位),最后是用于验证的8位信息. (对于每次常规交流都是如此)

解锁命令

unlock命令需要32位源代码. 如果门卡的身份信息与门锁中的信息匹配,则会立即将其打开.

几个数据集用于解锁命令. 以下是其传输的格式和顺序:

00000000000000000000000000000000000000001010001001AAAAAAAA1BBBBBBBB1CCCCCCCC1DDDDDDDD1SSSSSSSS000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100110101111001010

上面的A,B,C和D字节分别是源代码的第一,第二,第三和第四字节. S字节是检查结果,它是通过对A ^ B ^ C ^ D ^ 0xDD进行异或运算而获得的.

无论操作结果正确与否,门锁都不会响应“主机”,但是如果源代码计算正确,它将被打开. (译者注: 这句话看起来很矛盾,但是如果您仍然记得文章中门锁的定义,那就很容易理解. 门锁不会给出门卡的反馈信息,例如故障,门卡上有没有耳朵和眼睛,但是我们有人员,因此在解锁失败时,它通常会闪烁红灯,这是针对人,而不是用于卡.

门锁内存信息

根据前面对门锁通信协议的详细描述,我们可以读取所有内存信息,然后提供要解锁的源代码,但是您必须知道源代码在内存地址中的位置.

以下是普通客房门锁中的一些关键存储器地址. 其他类型的门(例如墙式读卡器(通常用作酒店外的门)和客房锁)的内存映射稍有不同.

·源代码: 0×114处为4个字节•编程卡代码: 0×124处为3个字节•密钥代码: 在0x412C处密钥代码包含一系列不同值的地址. 第一个是来宾值,总共3个字节,后跟一个0×00字节. 之后,您将获得一些“主”代码,每个有效的“主”由3个字节组成,后跟一个0x80字节. 如果不是,则后续字节为0xFF. 记录的最后一行(结尾为0xFF)必须是无效用户.

门卡加密

如前所述,门卡使用源代码作为密钥进行加密. 在本文发表之前,该算法通常被认为是自定义的而不是公开的. 该声明尚未得到确认,但是本文的附录B附带了一个用Python编写的示例.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-176184-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 平田宏美
      平田宏美

      改变不了了

    • 程佳伟
      程佳伟

      这样男性就会成为女性的消费品

    • 银鑫
      银鑫

      公司送来的是合格的

    热点图片
    拼命载入中...