admin管理员组

文章数量:1597415

最近考完试无事可做,想到上个月购买的QIUI远程贞操锁已经到货了,所以就尝试分析了它的工作原理,在分析的过程中发现了这款锁的设计缺陷,故利用这个漏洞完成了该破解工具。下面分为几个部分进行讲解。本人第一次做Android逆向,也是第一次做BLE相关开发,有什么做的不好的地方还请dalao指教 orz

工作原理:

锁具工作原理示意图


工作原理如帖子附图所示,开锁总共需要完成6步操作,其中图中的每一步的具体工作如下:
1、向服务器发送信息,判断账号密码是否正确、是否有权限解锁等等。
2、服务器返回结果,若通过验证,则手机可以发送相关指令操控贞操锁。
3、蓝牙成功连接锁具后,发送指令[0x06,0x01,0x01,0x01,0x2D,0x1A,0x68,0x3D,0x48,0x27,0x1A,0x18,0x31,0x6E,0x47,0x1A],用于获取token。token用于接下来的开锁操作。
4、若锁具成功获取该指令,则返回一段16字节长度的数据,其中前3个字节的数据固定为[0x06,0x02,0x0C],这三个字节的数据用于表示该段数据中包含token信息。之后第4字节到第7字节的数据即为本次开锁的token。
例如:假如设备返回的数据为[0x06,0x02,0x0C,0x24,0xBB,0x2E,0x17,0x02,0x01,0x03,0x01,0x15,0x06,0x00,0x16,0x00],则本次开锁的token为[0x24,0xBB,0x2E,0x17]
5、成功获取token信息后,手机即可向锁具发出指令解锁。解锁指令格式为[0x05,0x01,0x06,0x30,0x30,0x30,0x30,0x30,0x30,token,0x30,0x30,0x30]总共长度为16字节,其中第10字节到第13字节即为上一步中获取到的token。例如:上一步中token的值为[0x24,0xBB,0x2E,0x17],则本次解锁的指令为[0x05,0x01,0x06,0x30,0x30,0x30,0x30,0x30,0x30,0x24,0xBB,0x2E,0x17,0x30,0x30,0x30]
6、锁具收到解锁指令后就会开始执行,并返回一段16字节的数据用于说明本次解锁是否成功。

注意:手机与锁具通信的数据(即图中红色文字涉及到的数据),全部都采用128位密钥、ECB、NoPadding模式的AES算法进行加密,但密钥是固定的,加密密钥为[0x3A,0x60,0x43,0x2A,0x5C,0x01,0x21,0x1F,0x29,0x1E,0x0F,0x4E,0x0C,0x13,0x28,0x25]

 

破解思路:
从工作原理部分可以看出,身份与权限的验证部分全部是由APP完成的,而锁具本身并不参与验证过程,只要有手机向锁具发出了正确的解锁命令,锁具就能完成开锁工作,而且因为这一部分完全是离线操作,所以APP内的开锁记录中不会记录到任何信息。
故本人开发了一款APP用于模拟步骤3-步骤6的全部开锁工作。使用该APP则可以自由开锁。

破解工具使用方法:
破解器下载链接https://pan.baidu/s/1lWs4ubovulfZkRGXFd6Stw
1、打开贞操锁、APP与蓝牙,点击搜索蓝牙设备,等待5秒钟,程序会自动搜索附件的蓝牙设备,点击其中一款设备连接贞操锁。(如图所示,图中OKGSS“马赛克” CF:BA:“马赛克”即为我的贞操锁,OKGSS“马赛克”为设备名,后面的字母为设备的MAC地址。你们的锁的设备名应该是跟我差不多的,但MAC地址一定是不同的,不同的设备对应着不同的MAC地址)。


2、当程序显示连接成功后,等待3秒钟时间,程序会自动获取token,之后再点击unlock,顺利的话贞操锁会自动打开。如果显示开锁失败,有可能是蓝牙连接的设备不对,换一个设备连接重新尝试。


(注意:有时候即使正确连接的贞操锁,也有可能因为一些未知原因没有获取到token,这时可以重新启动贞操锁与该工具,重新尝试连接。
其次,扫描蓝牙设备需要使用地理位置权限,请给APP授权相关权限)

 

至此,破解教程已经完全结束,那么这个故事给了我们什么启示呢?

 

 

 

 

对付理工男m可能还是传统机械锁靠谱一些233333

本文标签: 贞操不完全男用工具指南