Wie erstelle ich eine gefälschte Gerätedatei, die Eingaben von einem C-Programm akzeptiert?

Wie erstelle ich eine gefälschte Gerätedatei, die Eingaben von einem C-Programm akzeptiert?

Ich möchte ein C-Programm erstellen, das Eingaben von einem Joypad ( /dev/input/js0) akzeptiert, verarbeitet und dann an eine gefälschte Gerätedatei (ZeichenoderBlock) als Tastatur gekennzeichnet (oh, und wasIstdie Gerätedatei für eine Tastatur? Ich würde gerne wissen, ob das möglich ist und wenn ja, wie.

Antwort1

Schauen Sie sich einen Auszug aus einem ls -al /devBefehl auf meinem System genau an:

brw-rw----  1 root floppy    8,   0 Jun  7 19:55 sda
brw-rw----  1 root floppy    8,   1 Jun  7 19:55 sda1
brw-rw----  1 root floppy    8,   2 Jun  7 19:55 sda2
brw-rw----  1 root floppy    8,   3 Jun  7 19:55 sda3
brw-rw----  1 root floppy    8,   5 Jun  7 19:56 sda5
brw-rw----  1 root floppy    8,   6 Jun  7 19:56 sda6
brw-rw----  1 root floppy    8,   7 Jun  7 19:56 sda7
brw-rw----  1 root floppy    8,   8 Jun  7 19:57 sda8
brw-rw----  1 root floppy    8,  16 Jun  7 19:55 sdb
brw-rw----  1 root floppy    8,  32 Jun  7 19:55 sdc
brw-rw----  1 root floppy    8,  33 Jun  7 19:55 sdc1
brw-rw----  1 root floppy    8,  34 Jun 11 10:39 sdc2
brw-rw----  1 root floppy    8,  35 Jun  7 19:56 sdc3

Die beiden Zahlen nach der Gruppen-ID, aber vor dem Datum sind die Haupt- und Nebennummern der Gerätedatei. Dies ist im Wesentlichen die „Art“ des Geräts. 8 ist in diesem Fall ein SCSI-Laufwerk (oder ein emuliertes SCSI-Laufwerk).

http://lxr.linux.no/linux/Documentation/devices.txtist eine nicht ganz so aktuelle Liste aller Haupt- und Nebennummern. Ich bin mir nicht sicher, wo sich die neueste Version der Liste offiziell befindet.

Diese Dateien werden also jedenfalls mit dem mknodBefehl ( erstellt mknod [OPTION]... NAME TYPE [MAJOR MINOR], einige Typen sind bfür Blöcke, cfür Zeichen). Es gibt auch einen mknod()Systemaufruf. Ich kenne die Auswirkungen nicht genau, wenn Sie eine weitere Datei mit derselben Haupt-/Nebennummer wie ein vorhandenes Gerät erstellen.

uinputwie in den Kommentaren beschrieben, ist wahrscheinlich das, wonach Sie suchen, obwohl es auf PC-Hardware einen gibt, /dev/psauxder direkt vom PS/2-Anschluss liest/schreibt, wenn Ihr System alt genug ist, um einen zu haben. Ich konnte Ihnen nicht einmal sagen, wo Sie mit USB-Tastaturen anfangen sollen ...

Wenn Sie nur eine gefälschte Gerätedatei möchten und es Ihnen egal ist, was mit den Daten passiert, die Sie an sie senden, gibt es immer noch /dev/zero. Auch symbolische Links können in diesem Fall eine wirklich einfache Lösung sein.

verwandte Informationen