wok annotate acpid/stuff/acpi_fakekey.c @ rev 10259

Add p0f. A passive OS fingerprinting tool.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat May 21 04:09:33 2011 +0000 (2011-05-21)
parents
children
rev   line source
domcox@1512 1 #include <unistd.h>
domcox@1512 2 #include <fcntl.h>
domcox@1512 3 #include <string.h>
domcox@1512 4 #include <stdlib.h>
domcox@1512 5 #include <stdio.h>
domcox@1512 6 #include <linux/input.h>
domcox@1512 7
domcox@1512 8 #define TestBit(bit, array) (array[(bit) / 8] & (1 << ((bit) % 8)))
domcox@1512 9
domcox@1512 10 int find_keyboard() {
domcox@1512 11 int i, j;
domcox@1512 12 int fd;
domcox@1512 13 char filename[32];
domcox@1512 14 char key_bitmask[(KEY_MAX + 7) / 8];
domcox@1512 15
domcox@1512 16 for (i=0; i<32; i++) {
domcox@1512 17 snprintf(filename,sizeof(filename), "/dev/input/event%d", i);
domcox@1512 18
domcox@1512 19 fd = open(filename, O_RDWR);
domcox@1512 20 ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
domcox@1512 21
domcox@1512 22 for (j = 0; j < BTN_MISC; j++) {
domcox@1512 23 if (TestBit(j, key_bitmask))
domcox@1512 24 break;
domcox@1512 25 }
domcox@1512 26
domcox@1512 27 if (j < BTN_MISC) {
domcox@1512 28 return fd;
domcox@1512 29 }
domcox@1512 30 close (fd);
domcox@1512 31 }
domcox@1512 32 return 0;
domcox@1512 33 }
domcox@1512 34
domcox@1512 35 int main(int argc, char** argv) {
domcox@1512 36 int fd;
domcox@1512 37 int key;
domcox@1512 38 struct input_event event;
domcox@1512 39
domcox@1512 40 if (argc == 2) {
domcox@1512 41 key = atoi(argv[1]);
domcox@1512 42 } else {
domcox@1512 43 return 1;
domcox@1512 44 }
domcox@1512 45
domcox@1512 46 fd = find_keyboard();
domcox@1512 47
domcox@1512 48 if (!fd) {
domcox@1512 49 return 2;
domcox@1512 50 }
domcox@1512 51
domcox@1512 52 event.type = EV_KEY;
domcox@1512 53 event.code = key;
domcox@1512 54 event.value = 1;
domcox@1512 55 write(fd, &event, sizeof event);
domcox@1512 56
domcox@1512 57 event.type = EV_KEY;
domcox@1512 58 event.code = key;
domcox@1512 59 event.value = 0;
domcox@1512 60 write(fd, &event, sizeof event);
domcox@1512 61
domcox@1512 62 return 0;
domcox@1512 63 }
domcox@1512 64