2010-01-09 7 views
1

Интересно, можно ли выяснить, какие клавиши пользователь нажал во время запуска своей Mac OS?Возможно ли восстановить ввод с клавиатуры, который был выполнен во время запуска Mac OS?

Любой способ будет. Насколько я понимаю, нет простого способа просто подключить приложение/скрипт для начала работы и одновременного захвата нажатий клавиш вместе с ОС. Но, может быть, есть способ превратить это в обратный инженер? Может быть, поиск конкретного файла журнала или что-то в этом роде?

Любые результаты будут выполнены. В основном меня интересует поиск, который нажал/удерживал пользователь во время запуска ОС. Это может быть строка, символьный код или шестнадцатеричный код, на самом деле не имеет значения.

ОБНОВЛЕНИЕ: Руководствуясь рекомендациями Пекки Я нашел расширение ядра, которое должно выполнять эту работу. И это, надеюсь, сделает это, после ответа на этот вопрос - Why this keyboard intercepting kernel extension doesn’t work?. :)

ответ

1

Я не гуру ОС, но я думаю очень, очень, очень тяжело. Я не думаю, что такие вещи автоматически записываются в любом месте.

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

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

+0

Спасибо за подсказку, я начну копать в направлении сценария запуска. Я не буду отмечать ваш ответ в качестве ответа, я попытаюсь выяснить, можно ли вставить скрипт в сам процесс запуска ОС. –

+0

Из-за http://tiny.cc/TheBootProcess в разделах «Запуск в запуске системы» в Mac Dev ключ драйвера устройства является ключом. Он позволяет начать работу как можно скорее, так как он будет загружен вместе с ядром. Хотя что-то подсказывает мне, что не будет легко, во-первых, поймать весь ввод на клавиатуре и, во-вторых, как-то рассказать об этом приложению, запущенном после запуска системы. –

+1

Две очень хорошие точки :) Еще одна идея, которая пришла мне в голову, - это посмотреть на какой-то низкоуровневый драйвер с открытым исходным кодом (не связанный с клавиатурой), который может записывать в syslog и копировать с него. Чтобы получить предложения о том, какой драйвер будет хорошей идеей для этого, вы могли бы открыть другой вопрос. –

0

Это не просто не записано нигде, довольно долгое время во время запуска там нет драйвера клавиатуры. Итак, с точки зрения программного обеспечения, в течение этого интервала клавиатура просто не существует.

+0

Должен быть очень, очень низкий уровень «драйвер» (или несколько из них), запущенный с самого начала, чтобы захватить команды запуска. Я помню со старых DOS раз, что на самом деле очень просто слушать клавиатуру на аппаратном уровне. –

+0

Из-за того же http://tiny.cc/TheBootProcess это прошивка BootROM, которая обрабатывает команды запуска. Попытка взломать прошивку компьютера сама по себе звучит едва ли возможно и не очень вежливо. :) –

+0

Я считаю, что стандартная обработка клавиатуры - вещь прерывания. Это должно быть действительно легко слушать без каких-либо драйверов, если я правильно помню. –

1

Как подойти, это полностью зависит от того, в какой точке в boot process вы хотите проверить ключи.

  • Если вы хотите проверить, действительно рано, ваш единственный выбор, чтобы играть с (прошивки) среде EFI - может быть, вы могли бы изменить rEFIt делать то, что вы хотите?
  • После прошивки управление переходит к boot.efi (BootX на Mac PPC). Возможно, это можно было бы заменить/взломать, и я ожидаю, что источник будет доступен из части Darwin, но я не вижу его в быстрой проверке.
  • После этого ядро ​​загружает (вы можете создать собственное ядро) с минимальным набором кэшированных драйверов (вы можете написать драйвер, но не знаете, как его кэшировать).
  • После этого всевозможные вещи случаются более или менее одновременно. Обычные драйверы загружаются, /etc/rc.local запускается, launchd items in/System/Library/LaunchDaemons и Library/LaunchDaemons становятся активными ... Если вы готовы подождать до этой фазы процесса загрузки, у вас есть много вариантов ,