数据防泄漏 | 禁止PrintScreen键

在数据防泄漏软件,通常会禁止 PrintScreen 键,防止通过截屏来将数据保存为图片而导致泄密。

这类软件如果想要实现是比较简单的,但是想要将功能做的强大些,还是需要下功夫的。以前使用过一款数据防泄漏的软件,其中就有这个功能,它不但能禁止掉 PrintScreen 键,还能禁止其他的专业截屏软件。同样,禁止截屏软件的方法难点在于兼容性,就是不要影响正常的软件的运行。

?       这里介绍一些如何禁止 PrintScreen 键。其实很简单,只要安装低级键盘钩子(WH_KEYBOARD_LL)就可以搞定,普通的键盘钩子(WH_KEYBOARD)是无法过滤一些系统按键的。在低级键盘钩子的回调函数中,判断是否为 PrintScreen 键,如果是则直接返回 TRUE,如果不是则传递给钩子链的下一处。

看代码吧!!!

 1 extern "C" __declspec(dllexport) BOOL SetHookOn()
 2 {
 3     if ( g_hHook != NULL )
 4     {
 5         return FALSE;
 6     }
 7     g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hIns, NULL);
 8     if ( NULL == g_hHook )
 9     {
10         MessageBox(NULL, "安装钩子出错 !", "error", MB_ICONSTOP);
11         return FALSE;
12     }
13
14     return TRUE;
15 }
16
17 extern "C" __declspec(dllexport) BOOL SetHookOff()
18 {    
19     if ( g_hHook == NULL )
20     {
21         return FALSE;
22     }
23     UnhookWindowsHookEx(g_hHook);
24     g_hHook = NULL;
25     return TRUE;
26 }
27
28 LRESULT CALLBACK LowLevelKeyboardProc(
29             int nCode, WPARAM wParam, LPARAM lParam)
30 {
31     KBDLLHOOKSTRUCT *Key_Info = (KBDLLHOOKSTRUCT*)lParam;
32
33     if ( HC_ACTION == nCode )
34     {
35         if ( WM_KEYDOWN == wParam || WM_SYSKEYDOWN == wParam )
36         {
37             if ( Key_Info->vkCode == VK_SNAPSHOT )
38             {
39                 return TRUE;
40             }
41         }
42     }
43
44     return CallNextHookEx(g_hHook, nCode, wParam, lParam);
45 }

代码量非常的短,是的……就是这短短的代码阻止了数据的泄漏。当然了,这样的保护对于一个攻击者,这个代码就无法保护数据了。对于一个攻击者,这种保护也就很脆弱了。任何的保护都有突破的办法,攻击无处不在,攻击者会尝试任何手段突破所有的保护。



欢迎大家关注微信公众号:“码农UP2U”

原文地址:https://www.cnblogs.com/tosser/p/11594916.html

时间: 2024-10-07 01:26:04

数据防泄漏 | 禁止PrintScreen键的相关文章

咨询一下数据防泄漏DLP相关的解决方案?

目前我们在给客户做数据防泄露的方案时, 遇到了一系列的难题,我们推出的解决方案客户不是很喜欢,看一下知乎有没有大神给支点招啊. 客户基本情况和需求: 客户是一家医院,内网是不能上外网的.他们想把院内拍了片的图像,让院内内部人员自行去下载拷贝.前提是能保障内网网络安全,又能做到图像外发安全审计.确保图像能在安全审计(能审计到图像在哪台终端.哪个用户.什么时间.拷贝走了哪些文件)的情况下,内部网络中需要的PC终端用户自行去下载,并且能被审计得到. 我们推出的解决方案一: USB移动存储介质端口之前是

大数据信息时代,如何防止数据泄露,大数据防泄漏解决方案

随着大数据时代的到来,数据已经成为与物质资产和人力资本同样重要的基础生产要素,大数据正在重塑世界新格局. 伴随着互联网时代频繁上演的数据泄露事件,不仅给企业及个人带来了一定的危机,同时也对国家造成了一定的损失,数据信息安全也愈演愈烈,那么,大数据时代,[数据信息安全]应该何去何从? 为什么说数据信息安全越来越重要?国家对数据信息安全这块关注度也逐步提高,例如,数据保护相关的法律法规的出台,确保数据信息安全,由此可见,数据安全地位的凸显. 导致数据泄露的途径有哪些?(1)通过U盘.移动硬盘.QQ.

数据防泄密行业标准

在数据泄露年代,数据防泄密产品被受宠爱.然而,面对形态各异的功能以及眼花缭乱的名称(数据防泄密.数据防泄露.数据防泄漏等等),让人感到迷茫,已无从判断与选择: 那么问题来了,这些令人耳目一新的产品在本质上到底是什么?是否有行业标准? 答案是肯定的,这些产品实质上都是文档加密软件,正式名称是:电子文档安全管理.其本质在于:在文档创建时即对文档自身进行透明加密(内核级),并与用户.权限相结合.文档被加密后,合法用户正常双击打开,在授权范围内使用,非法用户无法则无法使用密文,从而最终实现数据防泄密的目

PDF数据防扩散系统介绍

在企业信息化过程中,大量的企业重要图纸和资料都是以电子文件的方式存在.为了避免内部重要数据的外泄,采取了多种方式:设计部门的门禁管制.防火墙.禁止计算机的USB接口等等.但是泄密问题还是时有发生,原因是电子文档的外泄途径太多,解决了外部人员非法访问的问题,但不能根本解决电子文档内部人员造成的二次传播问题,靠"堵"的方法是难以保护数据安全的. 针对客户的需求我们开发了一套PDF数据防扩散系统软件,它是一个对PDF文件设定阅读次数.阅读期限.打印次数的软件系统.在系统部署上,分服务器端文档

济南上邦--图纸加密防泄漏软件

图纸加密防泄漏软件 图纸加密软件的出现为更多人的资料信息起到了保护的作用. 现在的企业对产品创新的设计有越来越多的要求,图纸文档交互频繁,那么企业的技术人员流动也越来越多,这样图纸的外泄可能性就越高,图纸文档作为企业的重要知识资产一旦外泄,就会给企业带来巨大的损失,是否存在以下的几种情况: 1. 设计人员为了工作方便,随意拷贝图纸,用邮件发送图纸,或者用U盘拷贝等. 2. 在自己的电脑上有大量的图纸. 3. 有图纸的设计人员,拥有图纸的全部权限:如复制,打印等. 4. 电脑上的重要图纸,相关的设

PDF数据防扩散系统方案

在企业信息化过程中,大量的企业重要图纸和资料都是以电子文件的方式存在.为了避免内部重要数据的外泄,采取了多种方式:设计部门的门禁管制.防火墙.禁止计算机的USB接口等等.但是泄密问题还是时有发生,原因是电子文档的外泄途径太多,解决了外部人员非法访问的问题,但不能根本解决电子文档内部人员造成的二次传播问题,靠"堵"的方法是难以保护数据安全的. 针对客户的需求我们开发了一套PDF数据防扩散系统软件,它是一个对PDF文件设定阅读次数.阅读期限.打印次数的软件系统.在系统部署上,分服务器端文档

js 禁止后退键

function doKey(e) { var ev = e || window.event; //获取event对象 var obj = ev.target || ev.srcElement; //获取事件源 var t = obj.type || obj.getAttribute('type'); //获取事件源类型 var readonly = $(obj).attr("readonly"); try { if (readonly === "readonly"

内存防泄漏

内存防泄漏(忘了用free释放内存了)劫持方法解决内存泄漏.1.使用自己写的mymalloc和myfree 替换malloc和free#include <stdio.h>#include <stdlib.h> //内存泄漏,第一强制调用malloc struct mem{    void *p;//记录分配的地址    int memlength;//记录分配的长度}; struct MyStruct{    struct mem* p;//分配一个指针数组  pp[i]=p;i+

JS禁止后退键

//处理键盘事件 禁止后退键(Backspace)密码或单行.多行文本框除外   function banBackSpace(e){          var ev = e || window.event;//获取event对象          var obj = ev.target || ev.srcElement;//获取事件源                 var t = obj.type || obj.getAttribute('type');//获取事件源类型