我想做一个程序,将收集有关用户的击键信息(键码,按下和释放的时间),并将它们作为一个生物特征,不断认证用户。我的方法是使用内核模块收集击键(因为你不能简单地杀死内核模块),然后内核模块会将信息发送到另一个进程,该进程将分析内核模块收集的数据,它会将信息保存到数据库中,并向内核返回答案(用户是否经过身份验证),如果用户没有经过身份验证,内核将锁定计算机。整个模块将不会被分发。
我的问题是: 1.如何从内核调用一个进程并将数据发送给他? 2.如何从该进程向内核返回一条消息?
发布于 2017-12-24 01:44:03
@basile-starynkevitch的答案和他的论点,尽管有一种你可以采取的方法,它是完全正确的,并且在技术上是linux内核允许的。
在内核模块中使用内核调用register_keyboard_notifier()注册一个键盘通知程序回调函数。事实上,它就是为此而设计的!
您的通知程序回调函数将如下所示:
int keysniffer_callback(struct notifier_block *notifier_block,
unsigned long scancode,
void *param)
{
// do something with the scancode
return NOTIFY_OK;
}有关初学者,请参阅https://www.kernel.org/doc/Documentation/input/notifier.txt。
https://stackoverflow.com/questions/47953180
复制相似问题