通过 HID++ 2.0 逆向工程 Logitech MX 键盘背光超时
通过HID++ 2.0逆向工程Logitech MX Keys背光灯超时
摘要
本报告记录了对Logitech MX Keys键盘背光灯闲置超时(约5秒)是否可以通过HID++ 2.0协议进行调整的调查。尽管系统地枚举和测试了所有可发现的HID++功能(包括未记录/隐藏的功能),但未发现可供主机访问的控制超时持续时间的参数。作为副产品,出现了两个之前未记录(或者至少没有公开记录)的发现:一个接近传感器灵敏度控制和一个LED自检触发器,它们都位于“隐藏功能”主开关后面的功能。报告还确定了键盘的主SoC(Nordic nRF52832)并指出了一种公开已知的未修补的硬件漏洞,该漏洞允许完全访问固件 - 这不属于本调查的范围,因为它需要电压闪烁硬件并存在设备损坏的真实风险。
测试设备
- 产品: Logitech MX Keys(第一代无线键盘)
- 固件版本: 12.1.13
- 连接: Logitech Unifying接收器,USB VID:PID
046d:c52b - FCC ID: JNZYR0073(Logitech Far East Ltd.),授予日期为2019-06-24
- 主SoC(从FCC内部照片中确定,标记为
N52832 QFAB80 1719AT):Nordic Semiconductor nRF52832,这是一款ARM Cortex-M4F蓝牙低功耗SoC - 无线电: 蓝牙5.0 LE,通过FCC BT-LE测试报告确认
方法论
所有通信都是通过直接将原始HID++ 2.0长报告(报告ID为 0x11,20个字节)发送到Unifying接收器的供应商定义的HID接口(使用页 0xff00,使用 0x2)上,通过Python和Windows上的hidapi/hid库来完成的。没有使用第三方软件(Solaar,Logi Options+)来发送命令;Logi Options+仅被用于被动检查(其本地SQLite设置数据库)以供参考。
整个过程中使用的标准HID++ 2.0消息结构:
字节0:报告ID(0x11 = 长报告)
字节1:设备索引(3,对于此键盘在此接收器上)
字节2:功能索引
字节3:(function_id << 4) | software_id
字节4-19:参数(16个字节)
功能索引通过公开的HID++ 2.0草案规范和开源Solaar和libratbag/logiops驱动程序源代码来解析,这些文档记录了标准功能ID、函数编号约定和作为本调查参考的错误码。
安全方法论
考虑到将未记录的值写入个人拥有的设备的风险,测试遵循了以下安全方法:
1. 使用公开可用的HID++ 2.0规范和Solaar和libratbag/logiops驱动程序源代码,确定所有可用的功能和参数,并确保这些功能和参数在本调查中被正确使用。
2. 使用公开可用的HID++ 2.0规范和Solaar和libratbag/logiops驱动程序源代码,确定所有可用的功能和参数,并确保这些功能和参数在本调查中被正确使用。
内容来源: pwr-Solaar/Solaar