2010-01-09 5 views
1

Je me demande s'il est possible de savoir quelles touches l'utilisateur appuyait pendant le démarrage de son Mac OS?Est-il possible de récupérer les entrées au clavier effectuées pendant le démarrage de Mac OS?

Tout moyen fera l'affaire. Pour autant que je comprenne, il n'y a pas de moyen facile de simplement accrocher une application/script pour commencer à travailler et capturer des frappes simultanément avec le système d'exploitation. Mais peut-être y at-il un moyen de faire de l'ingénierie inverse? Peut-être que vous cherchez dans un fichier journal spécifique ou quelque chose comme ça?

N'importe quel résultat fera l'affaire. Fondamentalement, ce qui m'intéresse est de savoir quelle touche l'utilisateur a enfoncée pendant le démarrage de l'OS. Ce peut être une chaîne, un code de caractère ou un hexagone, cela n'a pas vraiment d'importance.

MISE À JOUR: guidée par les conseils de Pekka J'ai trouvé une extension de noyau qui devrait faire l'affaire. Et il, espérons-le, le fera, après cette question de suivi - Why this keyboard intercepting kernel extension doesn’t work? est répondu. :)

Répondre

1

Je ne suis pas un gourou de l'OS, mais je pense très, très, très difficilement. Je ne pense pas que ce genre de choses soit enregistré automatiquement n'importe où.

Je suppose que vous auriez à vérifier si la partie du système qui gère le startup keys est en quelque sorte accessible, et peut être étendue pour invoquer une commande que vous avez définie. La deuxième meilleure chose qui vous vient à l'esprit est que vous devez écrire un pilote de périphérique personnalisé ou un script de démarrage qui est chargé au démarrage et écouter les événements keypress.

+0

Merci pour l'indice, je vais commencer à creuser dans la direction du script de démarrage. Je ne vais pas encore marquer votre réponse comme la réponse, je vais essayer de savoir s'il est possible d'insérer un script dans le processus de démarrage du système d'exploitation. –

+0

En raison de http://tiny.cc/TheBootProcess dans les sujets de programmation de démarrage de système à Mac Dev l'approche du pilote de périphérique est la clé. Il permet de commencer à travailler dès que possible, dans la mesure où il sera chargé avec le noyau. Bien que quelque chose me dise que ça ne va pas être facile, d'une part, d'attraper toutes les entrées au clavier et, d'autre part, d'en parler à une application lancée après le démarrage du système. –

+1

Deux très bons points :) Une autre idée qui m'est venue à l'esprit était peut-être de regarder un pilote de bas niveau open-source (pas nécessairement lié au clavier) qui peut écrire dans le syslog, et de copier cela. Pour obtenir des suggestions sur ce pilote serait une bonne idée pour cela, vous pourriez peut-être ouvrir une autre question. –

0

Il n'est pas simplement enregistré n'importe où, pendant un bon moment au démarrage est pas de pilote de clavier. Donc, du point de vue du logiciel, pendant cet intervalle, le clavier n'existe tout simplement pas.

+0

Il doit y avoir un «pilote» de très, très bas niveau (ou un certain nombre d'entre eux) exécuté dès le début afin de capturer les commandes de touches de démarrage. Je me souviens des anciens temps DOS, il est très facile d'écouter le clavier au niveau matériel. –

+0

En raison de la même http://tiny.cc/TheBootProcess c'est le firmware BootROM qui gère les commandes de clés de démarrage. Essayer de pirater le firmware de l'ordinateur lui-même ne semble guère possible et pas très poli. :) –

+0

Je pense que la manipulation de clavier standard est une chose d'interruption. Il devrait être vraiment facile à écouter sans aucun pilote si je me souviens bien. –

1

Comment approcher cela dépend complètement à quel point dans le boot process vous voulez vérifier les clés.

  • Si vous voulez vérifier très tôt, votre seul choix est de jouer avec l'EFI (firmware) environnement - vous pourriez peut-être modifier rEFIt faire ce que vous voulez?
  • Après le microprogramme, le contrôle passe à boot.efi (BootX sur les Mac PPC). Cela pourrait probablement être remplacé/piraté, et je m'attends à ce que la source soit disponible dans le cadre de Darwin, mais je ne le vois pas sur une inspection rapide. Après cela, le noyau se charge (vous pouvez construire votre propre noyau) avec un minimum de pilotes mis en cache (vous pourriez écrire un pilote, mais vous ne savez pas comment le mettre en cache, cependant). Par la suite, toutes sortes de choses se produisent plus ou moins à la fois. Les pilotes normaux sont chargés, /etc/rc.local s'exécute, launchd items dans/System/Library/LaunchDaemons et Library/LaunchDaemons deviennent actifs ... Si vous êtes prêt à attendre cette phase du processus de démarrage, vous avez beaucoup d'options .
Questions connexes