Как разобрать клавиатуру logitech k360
Перейти к содержимому

Как разобрать клавиатуру logitech k360

  • автор:

Дамп прошивки беспроводной Logitech K360 с помощью GreatFET

Недавно чисто ради спортивного интереса я решил хакнуть клавиатуру, и в качестве первой подопытной выбрал самую дешевую беспроводную модель Logitech K360. Она уже несколько устарела, а ее основная микросхема также, как и используемый протокол беспроводной связи, ранее подробно разбирались. Можете посмотреть презентацию Mousejack Марка Ньюлина, почитать работу Трэвиса Гудспида по сниффингу nRF24, а также ознакомиться с упоминаемой в этих материалах разработкой KeyKeriki.

Я же занялся всем этим больше в качестве тренировки нежели нового исследования и никак не знал, что в итоге обнаружу. Тем не менее мне показалось, что подобная затея станет интересным небольшим примером извлечения из встроенной флэш-памяти голой прошивки.

Разборка и первый осмотр

Реверс-инжиниринг клавиатуры я начинаю с аппаратной части, поэтому первым шагом будет извлечение прошивки. После снятия с передней панели приклеивающейся пластины разборка клавиатуры сложностей не представляет, так как остается лишь выкрутить скрепляющие корпус шурупы. Внутри находится матрица клавиш с резиновым куполом, а также небольшая плата с несколькими компонентами. Из основного на ней распложен только чип nRF24LE1:


Лицевая сторона платы


Обратная сторона платы

Слева от микросхемы расположено шесть контактных площадок для тестирования. Я решил, что это удачный интерфейс и начал с их проверки при помощи логического анализатора и щупов прижимных контактов. TP8 отправлял короткий такт при загрузке, а TP4 являлся землей, но пассивное «прощупывание» не выявляло здесь никакой интересной активности. Тут мне стало ясно, что группа из шести слов справа от микросхемы как раз описывала эти контактные площадки, так как их порядок размещения соответствовал.

Подключение к GreatFET и пробное тестирование

Чтобы прозондировать интерфейс SPI активно я подключил эти площадки к гребенке с помощью эмальпровода, а с ними и контакты TP5 и TP7. Согласно спецификации nRF24LE1, TP7 ведет к контакту PROG, используемому для “активации программирования флэш-памяти», а TP5 к RESET (подписан сразу рядом с TP5). Reset в данном случае активируется сигналом низкого уровня.


Схема распиновки nRF24LE1

Контактные площадки с 10 по 13 я трогать не стал, потому что они идут к общим контактам ввода/вывода и расположены на дорожках, ведущих к матрице клавиш.


Провода SPI

Я подключил площадки SPI к SPI-контактам на GreatFET, GND к одному из контактов земли и привязал контакт ввода/вывода к площадке RESET. При этом я также задействовал на GreatFET контакт 3V3 для прямой подачи питания к микросхеме nRF24 через площадку VMCU.

Далее я попробовал отправить простые тестовые команды при помощи встроенного кода SPI, но в таком состоянии в ответ ничего не получил:

Тогда я вновь обратился к спецификации и выяснил, что шина SPI для программирования флэш-памяти, активируемая контактом PROG, имеет собственный набор выделенных контактов. Эти контакты не совпадали с площадками для тестирования, к которым я подпаялся, поэтому было решено проверить, не ведут ли они к другим площадкам.

В этом мне помог мультиметр, но вы также можете проследить дорожки на фото самой платы. К счастью, оказалось, что к этим контактам (P1.2, P1.5, P1.6 и P2.0) ведут те самые оставленные мной изначально TP10-TP13. Так как потребовалось задействовать всего четыре новых площадки, я не стал паять, а снова использовал щупы PCBite.


Проверка интерфейса флэш-программирования

Для активации SPI нужно удерживать контакт PROG на высоком уровне и сбросить устройство подачей на RESET сигнала низкого уровня. Я настроил отдельный контакт ввода/вывода GreatFET для PROG, а затем добавил в скрипт функцию для отправки на RESET сигнала низкого уровня.

После сброса устройства я попробовал отправить одну из SPI-команд для получения статуса флэш-памяти и регистров состояния ее защиты, а также выполнить тестовое считывание.

Но и теперь я по-прежнему не получал никакого ответа (лишь все ту же последовательность байтов 0xFF ). В итоге, вооружившись осциллографом, я взялся проверять работоспособность всех контактов. С помощью простого скрипта для GreatFET я продолжал сбрасывать устройство и проверял осциллографом контакт RESET, возвращающийся на высокий уровень, чтобы увидеть состояние сигнала Reset на щупе после загрузки.

Помимо проверки контактов RESET и PROG я сделал простой замер потребления питания с помощью шунтирующего резистора, чтобы понять, выполняет ли устройство вообще сброс. Обратите внимание на разницу в энергопотреблении, когда устройство успешно входит в режим PROG:


Сброс при низком уровне PROG


Сброс при высоком уровне PROG

Один из щупов SPI, возможно, был отключен, но когда осциллограф показал, что все в порядке, я повторил процесс и на этот раз смог считать из памяти уже вразумительные данные:

Обратите внимание на строку с Wireless keyboard . Затем я выполнил одно считывание 18432 байтов – допустимый максимум, если верить спецификации. На выводе получился толковый дамп флэш-памяти программы. В nRF24LE1 используется набор инструкций от 8051, поэтому для подтверждения, что это код, я загрузил его в Ghidra в виде BLOB-объекта 8051. В начале объекта находится подпрограмма инициализации, значит это действительно код.


Тестовое дизассемблирование в Ghidra

Чтобы проверить настройки активации аппаратной отладки и защиты от эхосчитывания флэш-памяти я также решил считать упомянутую в спецификации InfoPage:


Раздел InfoPage спецификации nRF24LE1

Для считывания InfoPage необходимо установить бит INFEN в регистре состояния флэш-памяти, для чего достаточно было отправить перед считыванием команду write flash status register :

Теперь я могу считывать InfoPage, чтобы проверять установку аппаратной отладки и защиты от эхосчитывания. Возвращение программных данных в ходе изначальных попыток чтения уже указывало на то, что защита от эхосчитывания отключена, но выполнение описанных шагов помогло мне убедиться в правильности использования интерфейса программирования. Думаю, что также будет нелишним сделать бэкап InfoPage на случай, если позднее я сотру флэш-память.

При этом в код достаточно внести всего несколько простых изменений и его можно будет использовать для дампирования памяти программы и/или InfoPage в файлы:

Ремонт клавиатуры Logitech k360

preview_player

Есть нюансы. При обратной установки верхней крышки с клавишами, убедитесь в правильном положении кнопки ВКЛ\ВЫКЛ. У этой кнопки, вниз (внутрь клавиатуры), выпирает хвостик, который передвигает малюсенький рычажок на схеме. Я когда на место крышку ставил, отломал этот рычажок к едрене Фене. Иголкой потом кое как подцепил остатки и поставил на постоянный ВКЛ и продолжал пользоваться клавиатурой, но уже без возможности принудительного выключения.

Спасибо) Вылечил свою клавиатуру от пива)

Спасибо, весь головняк был в наклейке(винты спрятаны) по кругу отвёрткой колупал, резинки(ножки) снимал. Думал на защёлках.

Ха, класс! Не знал про такой клей, пришлось делать перемычку из фольги:)))

Охренеть, она теперь вообще не включается, мерси большое за подробное описание разборки.

Сломал из-за этого видео клавиатуру пленки, показанные на видео склеены между собой, если дернуть, можно порвать дорожки, что я и сделал -3 дорожки.
Хотя надо было просто просушить клавиатуру.

какой клей можно использовать для склеивая наклейки ? Момент проел пластик.

Спасибо. Нашел винтики. Провалился on/off

кто на ускорении не разглядел поставьте скорость воспроизведения на 0.25, залил свою клаву пивом, кнопки приклеились, но до платы не протекли, помыл с фэйри под душем, стала как новая.

Супер! Спасибо! А у меня видимо залита. Как правильно мыть?

Разрешите вопрос — какова цель вашего видео? В самый нужный момент — разборка корпуса вы ускорили видео? А быстрее возможности не было?

Привет серый отличный семейный подряд надо ещё Бендора приобщить Хотя. Лучше не надо

Подскажите где такой токопроводящий клей продается ? в каких магазах ?

для моих пальцев стрелки курсора слишком маленькие. хотел на доп клавиатуре выкинуть лишние клавиши и оставить там только 4 стрелки. скажите, плиз, есть возможность сделать это? мне показалось что клавиши впресованы в верхнюю крышку. как их выковырять? надо разбирать или можно попробовать сверху дёрнуть?

Начало должно было быть такое: Первый пункт — Женитесь))

А у меня такая клавиатура перестала включаться вчера.Есть мысля что дело в выключателе. Пока не разбирал. инфу ищу. кто нибуть может помочь? Лайк за видео

Спасибо за подсказку, как найти винты. Разобрал, промыл, высушил, собрал. Не работает! Вроде ничего не терялось, да и нечему. Грешу на тумблер, но как его проверить?

Клавиатура Labtec Wireless Desktop Y-RL41 утерян приемник сигнала, можно ещё как то подключить ее?

верхняя пленка=наклейка на клею держится? после отковыривания она обратно нормально клеится, углы не отлипают потом? можно разобрать и собрать без потери внешнего вида?

Разборка клавиатуры logitech k360

Один из самых важных аксессуаров пользователя персонального компьютера — клавиатура. Именно с помощью нее вы можете вводить в компьютер нужную вам информацию. В настоящее время одними из самых популярных стали клавиатуры марки Logitech. Они отличаются хорошим дизайном и надежность. Но очень часто бывает так, что вы залили какой-либо жидкостью клавиатуру. Чтобы прочистить, ее необходимо разобрать.

  • Как разобрать клавиатуру logitech
  • Как разобрать клавиатуру
  • Как разблокировать клавиатуру на компьютере
  • Набор отверток, мягкая ткань, спирт, ватные тампоны.

Прежде всего, изучите руководство по эксплуатации вашей клавиатуры. Если у вас его нет, то воспользуйтесь сайтом производителя, на котором вы сможете скачать руководство в электронном виде. В руководстве вы найдете схему строения вашей клавиатуры. Она поможет вам правильно произвести полную разборку. Подготовьте пространство, где вы будете заниматься разборкой. Лучше всего постелить на стол мягкую ткань, чтобы не поцарапать и не повредить корпус.

Проверьте, чтобы клавиатура была выключена от компьютера. Если ваша клавиатура мультимедийная, то достаньте батарейки или аккумуляторы из нее. Теперь переверните клавиатуру клавишам вниз. Вы должны видеть маленькие резиновые заглушки, благодаря которым клавиатура не скользит и не царапает по поверхности. Аккуратно снимите эти заглушки. Они крепятся на клейкую основу. Если она пришла в негодность или вы сами испортили ее, то замените на новую. Для этого аккуратно соскоблите с поверхности заглушки остатки старой клейкой массы. Теперь аккуратно приклейте маленький кусочек двустороннего скотча.

Под заглушками вы найдете маленькие болтики, которые необходимо вывернуть. Старайтесь пометить, какие болтики и откуда вы достаете, чтобы потом собрать в точно таком же порядке. Это необходимо для того, чтобы не перепутать болтики из разных, которые могут различаться по ширине и длине. Теперь переверните клавиатуру клавишами вверх. Между клавишами Caps Lock +/- на дополнительной клавиатуре вы найдете еще четыре скрытых болтика. Их также следует вывернуть.

Теперь корпус клавиатуры держится только на пластиковых защелках. Необходимо аккуратно их открыть. Снимите заднюю панель. под ней вы увидите несколько слоев. Аккуратно разберите их между собой. Слой со шлейфами необходимо аккуратно прочистить ватными тампонами, смоченными в спирте. Остальные слои можно прополоскать в воде. Не забудьте отсоединить блоки питания со шнуром, который ни в коем случае не должен подвергать воздействию влаги. После этого отложите все части на просушку. Когда они полностью высохнут, произведите полную сборку в обратном порядке.

Как разобрать клавиатуру logitech k360

Недавно я решил поэкспериментировать с клавиатурой, поэтому начал с одной из самых дешевых доступных моделей беспроводной клавиатуры Logitech: K360. Эта модель немного устарела, и основной чип внутри нее, а также используемый ею беспроводной протокол Logitech Unifying уже были хорошо освещены ранее. См. презентацию Марка Ньюлина MouseJack, работу Трэвиса Гудспида по анализу nRF24 и исследование KeyKeriki, упомянутое в каждом из них. Я делаю это скорее как упражнение, а не как новое исследование, и я не знал, что найду. Тем не менее, я подумал, что это был аккуратный небольшой пример извлечения встроенного ПО из встроенной флэш-памяти.

Я использую аппаратный подход к обратному проектированию клавиатуры, поэтому первым шагом является извлечение прошивки. Разобрать клавиатуру довольно легко после удаления клейкой пластины спереди, которая открывает доступ ко всем винтам, скрепляющим корпус. Внутри находится матрица клавиш с резиновым куполом и небольшая печатная плата с очень небольшим количеством компонентов. По сути, это просто чип nRF24LE1:

Печатная плата спереди Плата сзади

Слева от nRF24LE1 есть сетка из шести больших тестовых площадок. Этот интерфейс показался мне интересным, поэтому я сначала проверил эти контактные площадки с помощью логического анализатора и нескольких щупов с пого-пинами. TP8 вроде бы выдавал короткий такт при загрузке, а TP4 был заземлен, но я не наблюдал здесь особой интересной активности при пассивном зондировании. Стало ясно, что группа из шести слов, нанесенных трафаретной печатью в правом верхнем углу платы, была метками для этих тестовых контактных площадок из-за того, что положения меток часов, земли и VMCU совпадали с соответствующими позициями контактных площадок.

Чтобы активно протестировать интерфейс SPI, я подключил тестовые площадки к разъему с помощью эмалированного провода. Я также подключил TP5 и TP7. Согласно техническому описанию nRF24LE1, TP7 подключается к выводу PROG, который используется для «включения программирования флэш-памяти», а TP5 подключается к RESET (также помечен рядом с TP5). В этом случае сброс активен на низком уровне.

Схема назначения контактов из таблицы данных nRF24LE1

Схема назначения контактов из таблицы данных nRF24LE1

На этом этапе я оставил меньшие тестовые площадки 10–13 в покое, потому что они подключались к стандартным контактам GPIO и располагались на дорожках, ведущих к ключевой матрице.

Я подключил контактные площадки SPI к контактам SPI по умолчанию на GreatFET, GND к одному из контактов заземления и назначил контакт GPIO для контактной площадки сброса. Я также использовал контакт 3V3 на GreatFET для прямого питания микросхемы nRF24 через контактную площадку VMCU.

Я попытался отправить несколько простых тестовых команд, используя встроенный код SPI, но ничего не получил в этом состоянии:

Я еще раз просмотрел техническое описание и обнаружил, что интерфейс SPI для программирования флэш-памяти, активируемый контактом PROG, имеет собственный набор назначенных контактов. Эти контакты не совпадали с тестовыми площадками, которые я только что подключил, поэтому я проверил, не сломаны ли они на оставшихся тестовых площадках. Я использовал тест на непрерывность мультиметра, чтобы проследить, куда ведут эти контакты, но вы также можете проследить следы на изображении стороны печатной платы nRF24. К счастью, тестовые площадки меньшего размера с T10 по T13 подключаются к этим контактам интерфейса SPI флэш-памяти (P1.2, P1.5, P1.6 и P2.0). Поскольку контактных площадок было всего четыре, я снова использовал свои щупы PCBite вместо того, чтобы припаивать дополнительные провода.

Проверка SPI программирования флэш-памяти

Проверка SPI программирования флэш-памяти

Для включения интерфейса SPI для программирования флэш-памяти необходимо удерживать вывод PROG в высоком уровне и перезагружать устройство, подавая низкий импульс на RESET. Я установил другой вывод GPIO на GreatFET для вывода PROG, а затем добавил в свой тестовый сценарий функцию для подачи низкого уровня на вывод RESET.

После сброса устройства я попытался бы отправить одну из команд SPI флэш-памяти, чтобы получить регистры состояния флэш-памяти и состояния защиты флэш-памяти, а также выполнить тестовое чтение:

Я по-прежнему не получал никакого ответа (такая же последовательность байтов 0xFF), поэтому я провел небольшую отладку с помощью осциллографа, чтобы убедиться, что все контакты работают правильно. Я запустил простой скрипт на GreatFET, чтобы продолжать сбрасывать устройство, и активировал осциллограф на выводе сброса, возвращающемся к высокому уровню, чтобы я мог посмотреть на состояние щупов осциллографа вскоре после загрузки. В дополнение к проверке выводов RESET и PROG я провел простое измерение энергопотребления с помощью шунтирующего резистора, чтобы убедиться, что устройство действительно перезагружается. Обратите внимание на разницу в энергопотреблении, когда устройство успешно переходит в режим PROG:

Сброс с низким уровнем PROG Сброс с высоким уровнем PROG

Возможно, один из датчиков SPI флэш-памяти был отключен, но после проверки на осциллографе, что все в порядке, я повторил этот процесс и смог прочитать некоторые внятные данные с флэш-памяти:

Обратите внимание на строку «Беспроводная клавиатура». После этого я сделал однократное чтение для 18432 байт, максимально допустимого согласно техпаспорту. На выходе выглядел толковый дамп программы flash. nRF24LE1 использует набор инструкций 8051, поэтому, чтобы подтвердить, что это был код, я загрузил его в Ghidra как двоичный объект 8051. Кажется, в начале большого двоичного объекта есть процедура инициализации, что позволяет предположить, что это допустимый код.

Пробная разборка в Ghidra

Тестовая дизассемблирование в Ghidra

Чтобы проверить параметры защиты от обратного чтения флэш-памяти и разрешения аппаратной отладки, я также хотел прочитать информационную страницу, упомянутую в техническом описании:

Раздел InfoPage таблицы данных nRF24LE1

Раздел InfoPage таблицы данных nRF24LE1

Для чтения InfoPage требуется установка бита INFEN в регистре состояния флэш-памяти, поэтому для этого мне просто нужно было отправить команду «записать регистр состояния флэш-памяти» перед выполнением чтения:

Теперь я могу прочитать информационную страницу, чтобы подтвердить защиту от повторного чтения и настройки аппаратной отладки. Хотя тот факт, что мои первоначальные попытки чтения вернули программные данные, также указывал на то, что защита от обратного чтения была отключена, выполнение этих шагов помогло мне укрепить уверенность в том, что я правильно использую интерфейс программирования флэш-памяти. Похоже, что резервная копия InfoPage также будет важна на тот случай, если я сотру флэш-память позже.

Добавив еще несколько простых дополнений, можно легко использовать этот код для вывода флэш-памяти программы и/или InfoPage в файлы:

Получите поддержку для Logitech K360

Наша система вернула следующие страницы из данных Logitech K360, которые у нас есть в файле. Используйте поле выше для поиска любой другой информации.

Похожие видео

Связанные термины

При поиске Logitech K360 Disassembly также использовались следующие термины:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *