Logitech 마우스, 2바이트 데이터 저장의 예술!

by DD
2개월 전
조회수 26

Logitech 마우스의 HID++ 프로토콜(HID++ Protocol)을 리버스 엔지니어링하여 마우스 내 DPI 설정 레지스터(DPI Register)에 2바이트 데이터를 저장하는 데 성공함

macOS의 IOHIDManager가 특정 HID++ 보고서 형식을 차단하여, 데이터 쓰기(Data Write)에 어려움을 겪었음

HID++ 프로토콜의 동작 방식과 macOS에서의 HID 장치 관리에 대한 심층적인 학습(In-depth Learning)을 얻었음

커뮤니티에서는 목적보다는 과정에 집중하는 해킹 정신에 대한 긍정적인 반응(Positive Reaction)을 보임

HID++ 프로토콜 분석 및 리버스 엔지니어링

본 프로젝트는 Logitech 마우스가 사용하는 HID++ 프로토콜(HID++ Protocol)을 분석하고, 이를 리버스 엔지니어링하여 마우스 내 데이터 저장을 시도했다. 특히, Logitech Unifying 수신기(Logitech Unifying Receiver)를 사용하는 마우스에서 Feature Table을 통해 각 기능의 인덱스를 확인하고, DPI 설정을 저장하는 레지스터를 찾아 데이터를 쓰는 방식을 구현했다. 이는 하드웨어 장치의 펌웨어(Firmware) 동작 방식을 이해하고, 이를 활용하는 기술적 시도로 볼 수 있다.

macOS IOHIDManager의 제약 및 우회 시도

개발자는 macOS의 IOHIDManager가 특정 HID++ 보고서 형식을 차단하는 문제를 겪었다. 특히, Non-Volatile Storage(NVS) 영역에 데이터를 쓰기 위해 필요한 긴 형식의 보고서가 차단되어, 직접 USB 장치에 접근하는 IOKit을 사용하는 우회 방법을 모색했다. 이러한 과정은 운영체제의 HID 장치 관리(HID Device Management) 방식에 대한 깊이 있는 이해를 요구하며, 데이터 격리 아키텍처(Data Isolation Architecture)와 관련된 보안 측면의 고려 사항을 제시한다.

DPI 레지스터를 활용한 2바이트 데이터 저장

결국, 개발자는 마우스의 DPI 설정 레지스터(DPI Register)를 활용하여 2바이트의 데이터를 저장하는 데 성공했다. DPI 설정은 마우스가 다른 컴퓨터로 이동해도 유지되므로, Cross-Computer Storage로 활용할 수 있다. 이는 제한적인 용량이지만, 하드웨어의 특정 기능을 활용하여 데이터를 저장하는 창의적인 접근 방식을 보여준다. 데이터 미저장 정책(Zero-Retention Policy)과는 반대되는 개념으로, 하드웨어의 특성을 활용한 흥미로운 사례이다.

해킹의 본질과 커뮤니티 반응

커뮤니티에서는 이 프로젝트를 '해킹(Hacking)'의 본질을 보여주는 사례로 평가하며, 목적보다는 과정에 집중하는 개발자의 태도를 긍정적으로 평가했다. 특히, '무엇을 할 수 있는가?'에 대한 탐구 정신과 기술적 호기심을 높이 평가했다. 또한, Wireshark와 같은 도구를 사용하여 프로토콜을 분석하는 과정에 대한 질문도 있었다. 이는 기술적 탐구와 문제 해결(Problem Solving) 과정에 대한 커뮤니티의 높은 관심을 보여준다.

Storing 2 bytes of data in your Logitech mouse