KaoKsn/Keylogger

GitHub: KaoKsn/Keylogger

基于 C 语言和 Linux 输入事件接口的简单键盘记录器原型,用于学习和研究内核键盘事件捕获机制。

Stars: 0 | Forks: 0

# 使用 libc(glibc) 和 linux kernel 用户空间库的键盘记录器。 Keylogger 是一款基于 [GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) 许可证的免费软件。 ## 免责声明: 本项目仅供学习研究目的而创建。本人或任何可能为本项目做出贡献的人,对在此编写的任何代码的滥用不承担任何责任。 ## 项目结构 ``` . ├── include │   ├── keylogger.h │   └── util.h ├── keylogger.service ├── keys │   └── keyfile.txt ├── LICENSE ├── makefile ├── README.md ├── src │   ├── keylogger.c │   └── util.c └── test ├── keys │   └── keyfile.txt ├── test_find.c └── test_lk_table.c 6 directories, 12 files ``` ## 说明 - 专为运行基于 linux 内核的操作系统(例如 Debian GNU/Linux)的计算机编写。 - 通过查找关键字 'kdb' 来定位你的全局键盘事件设备 ls -l /dev/input/by-path | grep "kbd" | awk '{print $NF}'; ## 编译和运行 ``` make sudo ./build/main kbdeventfile ``` ## 作为 systemd 服务运行。 ``` # 构建并将二进制文件放置在您选择的路径中。 # /usr/local/bin 是一个不错的选择。 sudo cp keylogger.service /etc/systemd/system/ # 根据您的要求修改 service 文件。 sudo systemctl daemon-reload # *** 如果您想在每次电脑开机时运行它。(不推荐)*** # sudo systemctl enable sudo systemctl start keylogger sudo journalctl -u keylogger.service -f ``` 在你选择的任意窗口中按键输入,即可看到按键已被记录。 ## 资源 [Linux 内核关于输入事件的文档](https://kernel.org/doc/html/v6.0/input/event-codes.html) 从文档中得出的一些重要推论 每个硬件事件都会产生多个输入事件,这些事件存储在一个 struct input_event 中。 事件/按键代码可以在 @/usr/include/linux/input-event-codes.h 中找到 @/usr/include/linux/input.h ``` struct input_event { __u16 type; __u16 code; __u32 value; }; /* Fresh key press */ struct input_event ev_press = { .type = EV_KEY, .code = KEY_X, /* or BTN_X for buttons */ .value = 1 /* 1 = key down (press) */ }; /* Press duplication / repeated press event */ struct input_event ev_repeat = { .type = EV_KEY, .code = KEY_X, /* same key/button code */ .value = 2 /* 2 = autorepeat (key repeat) */ }; ``` ## 灵感与致谢 [Daniel Hirsch] (https://www.youtube.com/@HirschDaniel) ## 正在考虑的改进。 - [ ] 使用 UNIX TCP sockets 将所有数据实时发送到远程服务器。
标签:客户端加密, 监控工具, 系统编程, 键盘记录器