Bonjour,
je cherche à créer un daemon (lancé en root) qui serait capable d'espionner les entrées clavier et souris.
Mais je n'ai aucune idée de la façon de faire.
Dois je écouter un fichier /dev/* si oui, dois je rediriger ce que j'ai lu ailleurs, etc.
J'aimerais que ce programme soit fonctionnel autant sous X que sous une console.
Si quelqu'un à une toute petite idée ça pourrait m'aider.
Par avance merci
# Input event
Posté par Larry Cow . Évalué à 2.
Par ailleurs, pour que ça fonctionne il faut également que X utilise la-dite couche d'input du noyau, et non un /dev/psaux classique, si je ne m'abuse.
Bref, pour faire quelque chose qui marche à la fois sous X et en console et de manière portable, bon courage. Par contre, pour du X "pur", c'est relativement aisé, il y avait même un programme qui faisait quelque-chose de similaire (plus prise de controle d'une souris distante, etc.)
[^] # Re: Input event
Posté par pipotron . Évalué à 1.
Par contre, je me fous que ce soit portable. Du pur Linux 2.6 ce peut être bien. La portabilité sera un plus.
Par contre peut être pourP aller un peu moins loin dans mon idée, je pourrais intéresser par une solution X pur. Pourrais tu me donner un pointeur ?
Par avance merci.
[^] # Re: Input event
Posté par @ . Évalué à 2.
il doit y avoir au maximum 5 fichiers source donc ça doit être relativement facile de trouver la partie intéressante. la compilation sous irix nécéssite un peu de bidouille mais il me semble que sous linux ça marche bien.
il permet de transférer tous les évènements (clavier, souris) d'un serveur X vers un autre serveur X (sur une autre machine par exemple).
c'est très pratique lorsque l'on a un petit bureau, 1 clavier, 1 souris et plein de machines...
# Ne pas réinventer la roue
Posté par Dekany Brice . Évalué à 1.
Dans les noyaux 2.6 :
Device Drivers ->
Input Device support ->
<>Event Debugging
# linux mag
Posté par Juke (site web personnel) . Évalué à 1.
Je ne sais pas si ça peut t'aider car je n'ai pas l'article sous les yeux.
[^] # Re: linux mag
Posté par pipotron . Évalué à 1.
Pourquoi root ne pourrait il pas espionner les devices ? Pourquoi ne pourrait il pas faire un espèce de tcpdump sur le clavier ?
merci pour ta piste.
# Pas très dur
Posté par CoinKoin . Évalué à 2.
Pour la souris, man 4 mouse explique le fonctionnement de ce périphérique. Pour le clavier, ben, man 4 keyboard. Ils sont effectivement tous les deux dans /dev.
Ensuite, pour que cela marche sous X, il faut que tu lise le contenu de ces fichiers, puis que tu les rende à X. La solution, à mon avis, c'est d'ouvrir les fichiers de périphériques, de les unlinker, de créer des fifos à la place portant le même nom, de créer quatre threads (une par fifo et une par fichier d'origine), deux buffers de petite taille, puis de lire les fichiers d'origine avec les threads, d'en faire ce que tu veux, et de placer leurs données dans ces buffers, les deux autres threads se chargeant, lorsqu'elles sont réveillées, de lire le contenu des buffers et de l'ecrire dans leur fifo.
L'idée, c'est que si personne n'a ouvert tes fifos, les deux threads d'écriture resteront bloquées, et attendront patiemment que quelqu'un les ouvre pour écrire. Il est évidemment préférable que les données non lues sur-le-champ soient purement et simplement _perdues_ (ben oui, quoi, quand je démarre X, je n'aime pas qu'il reçoive tous les mouvements qu'a fait la souris depuis une heure...), donc tu peux y aller bourrin pour les buffers.
Bon, finalement, je me relis, et je me dis que ce n'est pas aussi simple que ça en avait l'air. Mais bon, tu vois, à mon avis, il n'y a absolument pas de raison de faire du code kernel pour réussir ton démon.
Bonne chance!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.