-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogdrv.c
93 lines (73 loc) · 1.95 KB
/
logdrv.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/slab.h>
#define AUTHOR_NAME "Anna Afanaseva IU7-73"
#define DESCRIPTION "Course project for BMSTU. Driver for detecting special device"
#define LICENSE "GPL"
// Flash-USB information
// idVendor=0951, idProduct=1666
// Mfr=1, Product=2, SerialNumber=3
// Product: DataTraveler 3.0
// Manufacturer: Kingston
// SerialNumber: 60A44C425091AF30B0001F01
unsigned int logging_enabled = 0;
unsigned int dev = 0;
static void activate_logging(void) {
logging_enabled = 1;
}
static void deactivate_logging(void) {
logging_enabled = 0;
}
static int check_usb_device(char *serial) {
if (!strcmp(serial, "60A44C425091AF30B0001F01")) {
printk(KERN_INFO "THIS IS CORRECT DEVICE");
dev = 1;
}
return dev;
}
static int probe(struct usb_interface *intf, const struct usb_device_id *id) {
struct usb_device *dev = interface_to_usbdev(intf);
printk("\n>SPY DRIVER< : Detected new usb device.");
if (check_usb_device(dev->serial) == 1)
activate_logging();
return 0;
}
static void disconnect(struct usb_interface *intf) {
printk(">SPY DRIVER< : USB device was disconnected.");
if (dev) {
deactivate_logging();
dev = 0;
}
}
static struct usb_device_id empty_usb_table[] = {
{.driver_info = 1},
{ }
};
MODULE_DEVICE_TABLE(usb, empty_usb_table);
static struct usb_driver log_usb_driver =
{
.name = "logkdb",
.probe = probe,
.disconnect = disconnect,
.id_table = empty_usb_table,
};
static int my_init_module(void)
{
int err;
printk(">\nSPY DRIVER< : USB devices detector activated.\n");
err = usb_register(&log_usb_driver);
return err;
}
static void my_cleanup_module(void)
{
printk(">SPY DRIVER< : USB devices detector deactivated.\n");
usb_deregister(&log_usb_driver);
}
EXPORT_SYMBOL(logging_enabled);
MODULE_LICENSE(LICENSE);
MODULE_AUTHOR(AUTHOR_NAME);
MODULE_DESCRIPTION(DESCRIPTION);
module_init(my_init_module);
module_exit(my_cleanup_module);