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 将所有数据实时发送到远程服务器。
标签:客户端加密, 监控工具, 系统编程, 键盘记录器