检测微信等应用文件传输,如果有敏感信息就中断传输,如何实现?

结合进程级文件操作监控窗口行为识别来覆盖更多场景,以下是更精准的实现思路:

一、核心改进:监控进程的 “所有文件操作”(而非固定路径)

不依赖默认保存路径,直接追踪微信、QQ、钉钉进程正在读写的所有文件,只要进程触发文件传输相关的读写行为(如接收 / 发送文件),就能被捕获。

  • 实现工具:使用 psutil 库(跨平台)或 pywin32(Windows 专属)。
  • 关键逻辑
    1. 先通过进程名找到目标进程(如微信 WeChat.exe、QQ QQ.exe、钉钉 DingTalk.exe),获取进程 ID(PID)。
    2. 调用 psutil.Process(PID).open_files(),实时获取该进程当前打开的所有文件列表。
    3. 筛选特征:若打开的文件满足 “文件大小持续增长”(传输中)、“文件后缀为常见传输类型(如 docx、pdf、zip 等)”,即可判定为正在进行文件传输。

例如:当用户手动选择将 QQ 文件保存到 D:\Downloads 时,psutil 能捕获到 QQ.exe 正在读写 D:\Downloads\XXX.pdf,且文件大小在不断增加,从而识别传输行为。

二、补充方案:识别 “文件传输窗口”(覆盖手动确认场景)

用户手动保存文件时,会先弹出 “另存为” 窗口;接收文件时,会弹出 “接收 / 拒绝” 弹窗,监控这些特定窗口可进一步确认传输意图。

  • 实现工具pywin32(Windows)或 PyQt5 的窗口监控功能。
  • 关键逻辑
    1. 遍历系统所有顶层窗口,通过 “窗口标题” 或 “窗口类名” 匹配目标窗口(如 QQ 的 “另存为” 窗口标题含 “另存为”,微信接收窗口类名可通过工具(如 Spy++)提前获取)。
    2. 一旦检测到这些窗口存在,即可判定用户有 “手动传输文件” 的意图,再结合第一步的进程文件操作,双重确认传输行为。

三、终止传输:精准中断(避免关闭整个程序)

相比直接杀进程,优先针对 “传输行为本身” 中断,减少对用户正常使用的影响:

  1. 中断文件读写:通过 psutil 找到进程打开的传输文件句柄,调用系统接口(如 Windows 的 CloseHandle)强制关闭该文件句柄,导致传输因 “文件无法写入 / 读取” 而失败(需注意系统权限,部分进程可能防护)。
  2. 模拟窗口操作:若检测到 “另存为”“接收确认” 窗口,用 pyautogui 或 pywin32 模拟点击 “取消” 按钮,直接终止用户的手动传输操作(更友好,不影响程序运行)。

这种方案不依赖固定路径,既能覆盖 “自动接收”,也能监控 “手动保存”,识别精度和灵活性会显著提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

如果这篇文章帮您解决了技术难题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值