Aufnahme der Tastenanschläge in GNU/Linux in C ohne X11
Wenn ich mich mit einer Anwendung arbeiten, und ich drücken Sie die Taste der Tastatur, wie kann ich erfassen, dass die wichtigsten (oder string), einschließlich der Quell-Anwendung-name, in C, unter der GNU/LINUX-userland verwenden, ohne dass X11 🙂
Dank.
- Sie sollten [1] Zustand, Sie problem ein wenig deutlicher (Können Sie Zugriff auf die Quelle der Anwendung? Die shell? Das OS? Entweder Weg, wo genau sind Sie aufgehängt) und [2] überzeugen Sie uns, dass wir würden damit etwas gutes tun für die Welt, statt Ihnen zu helfen, schreiben Sie eine weitere rootkit (Sie sehen, Sie Ihr Griff nicht zu tun Sie keinen gefallen in dieser Hinsicht).
- So will er schreiben, der 52nd keylogger für linux. Big deal. Ihre Moral ist nicht gehen, um ihn zu stoppen. Zumindest ist er nicht mehr bei superuser fragt, wo eine Datei herunterladen. 😉
- ein keylogger ist eine Zuordnung gemeinsame C - /Assembler-Belegung am college. Er könnte sehr gut sein, ein Skript-kiddy auf der Suche nach piss Menschen off, aber so was? Er stellte eine Frage, und er hat eine Antwort verdient, unabhängig von seiner Absicht.
- Ich will einfach nur etwas code interessant 🙂 Nicht ein sk1dd13 und nicht in der Schule. Vielen Dank für Ihre freundlichen Worte.
- Dominic: ich möchte, zu schreiben zu tun-timing-und-n-Gramm-Analyse meiner Tastenanschläge, während der Programmierung, zu fangen, häufige Fehler und schlagen vor, Verknüpfungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ohne X11 dieses problem ist viel schwieriger.
Für die Tastenkombination können Sie code verwenden, ähnlich wie diese, aber Sie haben zu gehen, wie ein argument, das Gerät, das Sie Lesen (Tastatur, in der Regel /dev/input/event0 )
Credits gehen nicht an mich, dieser code stammt aus der Ventriloctrl hack zu bekommen Tastatureingaben.
http://public.callutheran.edu/~abarker/ventriloctrl-0.4.tar.gz
Hoffe ich bin eine Hilfe.
Können Sie Lesen Daten aus einer der Dateien in /dev/input. Die eine hängt von Ihrem system. Es könnte sein, /dev/input/event0 oder /dev/input/by-path/platform-i8042-serio-0-event-kbd oder etwas anderes. Das format angegeben ist, in den kernel-header-input.h. Es ist
Können Sie laufen
und geben etwas zu sehen, was passiert.
Als um herauszufinden, welche Anwendung den erhaltenen key-event, ich bin mir nicht sicher. Sie könnten versuchen, die Kontrolle, die man beim Lesen von der Haupt-tty.
Eine Möglichkeit: finden und werfen Sie einen Blick auf die Quelle für 'sudosh', das 'sudo shell' (oder eine seiner Ersatz da, dass hat sich nicht geändert in eine Weile, Google ist dein Freund).
Es Kasinos mit pseudo-ttys und Strecken, die alle input-und output-auch durch Aufnahme der Informationen in die Datei.
Ob das genau genug für dich ist, ist vielleicht eher umstritten; es würde melden Sie alle Tastenanschläge in allen Anwendungen. Ich bin mir auch nicht sicher, wie es funktioniert mit X11 - wenn er funktioniert mit X11.
Für ein ziemlich gutes Beispiel, haben Sie einen Blick auf showkey's code.
Insbesondere hier ist die main-loop. Alle es tut, ist das terminal, es zu kopieren, schalten Sie den kopierten raw-Modus, und bis ein 'quit' oder 'interrupt' Tastenkombination angegeben ist, nur druckt, was der Schlüssel gegeben wurde, um das terminal.
void
Typ-casts...