#3308·Solaar

通过 HID++ 2.0 逆向工程 Logitech MX 键盘背光超时

作者: Alo3zera创建于 2026年8月18日更新于 2026年9月6日
标签enhancement

通过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