掌桥专利:专业的专利平台
掌桥专利
首页

一种在内存中截图盲水印添加、提取方法

文献发布时间:2024-04-18 19:58:21


一种在内存中截图盲水印添加、提取方法

技术领域

本发明涉及数字水印技术领域,具体涉及一种在内存中截图盲水印添加、提取方法。

背景技术

无论是在开放还是封闭的办公网络环境中,对涉及知识产权保护、敏感信息、商业机密等信息的重要文件进行保护、震慑和溯源已越来越重要。而数字水印技术则是效果最好、震慑力最高、应用最广的一种。数字水印技术经过十多年发展在音频、视频、打印等数字水印技术的研究都有了很成熟的成果。

目前数字水印技术分为明水印和盲水印两种,明水印是可以被人眼看见的水印,一般由文本、图像构成,可以有效震慑未经授权的复制拷贝。而盲水印则可以理解为主动在数据中添加不可见、透明等无法感知的标记,可用来进行溯源和追踪。

然而无论明水印还是盲水印在面对复杂的办公环境时都很难面面俱到,譬如明水印容易通过被破坏和丢失,并且存在忘记添加水印或者开启水印等人为因素影响致使水印功能失效,从而导致信息泄露。而传统的盲水印在面对各类截图软件、社交平台等对上传图片的压缩技术则面临着空前的挑战,特别是在开放的办公环境下,通过各类软件进行屏幕截图,随后对图片进行修改、涂抹等方式的处理后,再上传至各类社交平台,由社交平台的压缩技术对图片进行二次处理,使得对于泄露图片的追踪、溯源变得困难。

现有盲水印技术方案一般包括以下步骤:得到原始图像文件并获取图像原始载体数据;将溯源信息以不可见字符、隐形图像水印形式混入原始图像;得到含水印的图像;溯源时先获取含水印图像全部数据;提取图像信息中的水印信息;获得明文使用者信息进行溯源。

现有盲水印技术一般需要事先通过特定程序对需要加密的载体进行盲水印添加,盲水印内容通过图形水印或者文本水印的方式添加到载体中,这种方式有以下缺点:

(1)使用者可以对屏幕上已经打开的未添加数字水印的任意内容进行截取得到图像文件,使得尚未添加水印关键内容泄露;

(2)使用者可以对屏幕上已经添加数字水印的部分关键内容进行截取,从而使得后续溯源时由于图片数据不完整无法还原水印进行溯源;

(3)在对图像添加水印过程中存在图像物理文件,容易被中途截取未添加水印的物理文件图像。

发明内容

针对现有技术中的缺陷,本发明提供一种在内存中截图盲水印添加、提取方法。

第一方面,一种在内存中截图盲水印添加方法,包括:

对WINDOWS系统API接口进行HOOK处理,在进行屏幕截图时调用所述API接口并获取盲水印添加的控制权;

通过所述API接口基于控制权获取屏幕截图,提取所述屏幕截图的位图数据,并将所述位图数据拷贝至内存;

生成溯源信息,并对内存中所述位图数据添加明文溯源信息;

对内存中所述绘有明文溯源信息的位图数据,基于颜色通道将溯源信息添加至位图像素块中,以对屏幕截图添加盲水印;

将添加有盲水印的屏幕截图进行显示,完成盲水印自动添加。

进一步地,所述对WINDOWS系统API接口进行HOOK处理,在进行屏幕截图时调用所述API接口并获取盲水印添加的控制权,具体为:

获取盲水印动态库,并通过注入方式将所述盲水印动态库加载至WINDOWS系统的进程中;

获取被注入进程中的API接口优先控制权,以利用HOOK技术实现对截图API接口的截停,所述API接口包括BitBlt、StretchBlt以及MaskBlt;

在WINDOWS系统的进程进行屏幕截图时,调用所述BitBlt、StretchBlt以及MaskBlt中的任一API接口,并获得控制权,以获取执行盲水印添加工作的控制权限。

进一步地,所述通过所述API接口基于控制权获取屏幕截图,提取所述屏幕截图的位图数据,并将所述位图数据拷贝至内存,具体为:

通过所述API接口基于控制权获取屏幕截图;

当所述屏幕截图的宽度和高度满足预设像素条件时,调用所述API接口获得兼容屏幕的句柄,将所述屏幕截图的原始数据复制至句柄,并通过句柄遍历所述屏幕截图提取位图数据;

将所述位图数据拷贝至WINDOWS系统的共享内存中。

进一步地,所述生成溯源信息,并对内存中所述位图数据添加明文溯源信息,具体为:

获取由盲水印动态库随机生成的溯源信息,所述溯源信息由32位盲水印唯一标识符构成;

将内存中所述位图数据转换为DCT矩阵,得到位图矩阵;

根据所述位图矩阵的行列数设置溯源信息的参数配置,并基于所述参数配置在位图矩阵的正反面均添加明文溯源信息。

进一步地,所述对内存中所述绘有明文溯源信息的位图数据,基于颜色通道将溯源信息添加至位图像素块中,以对屏幕截图添加盲水印,具体为:

将内存中添加明文溯源信息的位图矩阵进行颜色空间转换,分割位图矩阵的YUV三个颜色通道并提取Y通道值矩阵;

将所述溯源信息转换为DCT矩阵,得到溯源信息矩阵;

将所述Y通道值矩阵按照8像素的宽高划分成块,将每个块转换为8像素矩阵并做离散余弦变换;

在每个所述8像素矩阵中添加溯源信息矩阵的矩阵数据,并将完成添加的8像素矩阵做离散余弦反变换;

当每个所述8像素矩阵均完成变换时,将Y通道值矩阵与其他两个颜色通道值矩阵进行合并,以将溯源信息添加至屏幕截图的每8个像素块中,完成对屏幕截图添加盲水印。

第二方面,一种在内存中截图盲水印提取方法,用于提取如第一方面所述在内存中截图盲水印添加方法所得屏幕截图中的盲水印,步骤包括:

获取添加盲水印的屏幕截图,将所述屏幕截图读取到内存中并转换为图像矩阵;

对所述图像矩阵进行压缩处理得到压缩图像矩阵;

提取所述图像矩阵中的水印信息,并根据所述水印信息获取块矩阵;

根据所述压缩图像矩阵和块矩阵获取含有溯源信息的矩阵数据,完成对屏幕截图盲水印的提取。

进一步地,所述对所述图像矩阵进行压缩处理得到压缩图像矩阵,具体为:

对所述图像矩阵进行分割并提取Y通道值矩阵,对所述Y通道值矩阵进行转换并重新合并通道,对合并后的矩阵进行等比例压缩;

对压缩后的矩阵进行通道分割、二维矢量幅值以及图像边缘值操作;

对执行操作后的矩阵进行行列变换和归一化处理,得到包含屏幕截图中溯源信息的压缩图像矩阵。

进一步地,所述提取所述图像矩阵中的水印信息,并根据所述水印信息获取块矩阵,具体为:

提取所述图像矩阵中的水印信息,并将所述水印信息转换为水印矩阵;

将所述水印矩阵转换颜色空间,并对矩阵颜色进行转换;

根据颜色转换后的所述水印矩阵进行分割,以分割YUV三个颜色通道数据,并对每个颜色通道的值进行提取;

根据提取的颜色通道值对水印矩阵进行变换,将水印矩阵按照8像素进行分块,并获取水印矩阵的最大长宽块数量;

根据所述最大长宽块数量计算水印矩阵中的8像素块矩阵,得到包含屏幕截图中溯源信息的块矩阵。

进一步地,所述根据所述压缩图像矩阵和块矩阵获取含有溯源信息的矩阵数据,完成对屏幕截图盲水印的提取,具体为:

将所述压缩图像矩阵和块矩阵进行合并,得到合并矩阵;

计算所述合并矩阵的行列,并根据所述行列创建全零矩阵;

将所述块矩阵的矩阵数据拷贝至全零矩阵中,提取并返回含有溯源信息的全零矩阵数据,完成对屏幕截图盲水印的提取。

本发明的有益效果体现在:在终端系统进行屏幕截图时,在内存中对屏幕截图的整体图像添加明文溯源信息,同时对屏幕截图的每8个像素块中也添加溯源信息,进而实现对所有屏幕截图都自动添加盲水印,最终在系统屏幕上既能显示全屏幕的截图内容,也能显示部分屏幕的截图内容,后续进行水印提取时,也能对不完整的图片数据还原水印并进行溯源。本发明具有以下优点:

1、利用WINDOWS API HOOK技术接管终端进程中与截图相关的BitBlt、StretchBlt以及MaskBlt三个API接口,实现所有进程进行截图时都能自动接管控制权,完成截图时盲水印自动添加;

2、对截图的盲水印添加不再局限于某一块区域,而是按照长宽8像素的大小划分整个图像,在每个8像素的块中都添加盲水印溯源信息,后续只要有完整的8像素部分图像即可完成盲水印的提取,不需要完整的图像,防止截图通过涂抹或者截取部分关键内容导致溯源失效;

3、从发起截图到屏幕上显示添加完盲水印后的截图内容,全程在内存中执行,防止中间过程出现未添加盲水印的物理图像文件而导致内容泄露。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为本发明实施例一提供的一种在内存中截图盲水印添加方法的流程图;

图2为本发明实施例一提供的一种在内存中截图盲水印添加方法的全屏幕截图示意图;

图3为本发明实施例一提供的一种在内存中截图盲水印添加方法的部分屏幕截图示意图;

图4为本发明实施例二提供的一种在内存中截图盲水印提取方法的流程图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

实施例一

如图1所示,一种在内存中截图盲水印添加方法,包括:

S11:对WINDOWS系统API接口进行HOOK处理,在进行屏幕截图时调用所述API接口并获取盲水印添加的控制权;

通过WINDOWS API HOOK技术对WINDOWS API:BitBlt、StretchBlt和MaskBlt三个API接口进行HOOK处理。

具体地,获取盲水印动态库,通过注入方式将盲水印动态库加载至WINDOWS系统的进程中,并获取被注入进程的BitBlt、StretchBlt以及MaskBlt三个API接口优先控制权,以利用HOOK技术实现对截图API接口的截停。

进一步地,在终端上通过截图软件或WINDOWS系统自带截图功能进行屏幕截图时,调用所述BitBlt、StretchBlt以及MaskBlt中的任一个API接口,并通过盲水印动态库获取API接口的控制权,以实现对截图API接口的控制,获取执行盲水印添加工作的控制权限。

优选地,根据截图方式不同获得控制权的API接口也不同,当使用者通过截图工具执行图像的复制、缩放、合并操作时,都将最终调用到终端系统GDI中的BitBlt、StretchBlt和MaskBlt三个API接口,而盲水印动态库则在这三个API接口中等待控制权到来后执行盲水印添加工作,处理完盲水印添加后再将控制权还给进程。

S12:通过所述API接口基于控制权获取屏幕截图,提取所述屏幕截图的位图数据,并将所述位图数据拷贝至内存;

具体地,通过所述API接口基于控制权获取屏幕截图,当屏幕截图的宽度和高度满足预设像素条件时,调用API接口获得兼容屏幕的句柄,将当前屏幕截图的原始数据复制至句柄中,通过句柄遍历屏幕截图提取图像素的颜色值等位图数据。将获取的位图数据拷贝至WINDOWS系统的共享内存中,删除原始句柄,只保留内存中的数据。

优选地,所述预设像素条件可根据实际情况设定,在此不作限定,本实施例中设定为当屏幕截图的宽度超过780像素、高度超过580像素时,则提取屏幕截图发生时的位图数据至共享内存中。

S13:生成溯源信息,并对内存中所述位图数据添加明文溯源信息;

具体地,获取由盲水印动态库随机生成的溯源信息,所述溯源信息由全局唯一的32位盲水印唯一标识符构成。

将内存中的位图数据转换为DCT矩阵,得到位图矩阵,根据位图矩阵的行列数设置溯源信息的参数配置,本实施例中,所述溯源信息的参数配置的设置规则包括:当位图矩阵的列数大于等于1200且行数大于等于300时,设置溯源信息宽度为534像素、高度为77像素、字体大小为3.0、字体粗细为3;当位图矩阵的列数大于等于1200且行数大于等于100时,设置溯源信息宽度为179像素、高度为36像素、字体大小为1.0、字体粗细为2;当位图矩阵的列数大于等于750且行数大于等于300时,设置溯源信息宽度为368像素、高度为49像素、字体大小为2.0、字体粗细为3;当位图矩阵的列数大于等于750且行数大于等于100时,设置溯源信息宽度为185像素、高度为36像素、字体大小为1.0、字体粗细为2;当位图矩阵的列数大于等于400且行数大于等于100时,设置溯源信息宽度为185像素、高度为36像素、字体大小为1.0、字体粗细为2。

当位图矩阵的行列数满足上述任一规则时,获取对应的溯源信息参数配置,并基于参数配置在位图矩阵中央绘制明文溯源信息,当位图矩阵的行列数不满足上述规则时,则不绘制明文溯源信息。

进一步地,完成位图矩阵正面溯源信息绘制后,对内存中的位图矩阵做水平和垂直翻转,按照上述相同的规则,在位图矩阵翻转后的背面矩阵绘制同样的明文溯源信息,进而在位图的正反矩阵均添加明文溯源信息,此时屏幕截图整个大的图像包含明文溯源信息。

S14:对内存中所述绘有明文溯源信息的位图数据,基于颜色通道将溯源信息添加至位图像素块中,以对屏幕截图添加盲水印;

具体地,将内存中添加有明文溯源信息的位图矩阵转换颜色空间,分割位图矩阵的YUV三个颜色通道,并提取其中的Y通道值矩阵。同时,将溯源信息转换为DCT矩阵,得到溯源信息矩阵。

进一步地,将Y通道值矩阵按照8像素的宽高划分成块,将每个块转换为8像素矩阵并做离散余弦变换,在每个小的8像素矩阵中添加溯源信息矩阵的矩阵数据,并将添加完的8像素矩阵做离散余弦反变换。

当所有的8像素矩阵均完成变换时,将Y通道值矩阵与其他两个U、V颜色通道值矩阵进行合并,进而将溯源信息添加至屏幕截图的每8个像素块中,完成对屏幕截图添加盲水印。此时屏幕截图每8个像素块中均含有溯源信息,同时整个大的图像又包含明文溯源信息。

S15:将添加有盲水印的屏幕截图进行显示,完成盲水印自动添加;

具体地,将内存中的位图矩阵进行颜色转换,将内存中添加溯源信息的屏幕截图显示到终端系统的屏幕上,完成实时截图的盲水印添加,终端屏幕显示添加盲水印后的截图内容,如图2和图3所示,既能显示全屏幕的截图内容,也能显示部分屏幕的截图内容。

实施例二

如图4所示,一种在内存中截图盲水印提取方法,用于提取如实施例一所述在内存中截图盲水印添加方法所得屏幕截图中的盲水印,步骤包括:

S21:获取添加盲水印的屏幕截图,将所述屏幕截图读取到内存中并转换为图像矩阵;

具体地,获取添加盲水印的屏幕截图,读取屏幕截图的原始图像数据,将图像数据读取到内存中并转换为DCT矩阵,得到图像矩阵。

S22:对所述图像矩阵进行压缩处理得到压缩图像矩阵;

具体地,对图像矩阵进行分割,提取其中的Y通道值矩阵,对提取的Y通道值矩阵的颜色、亮度等数据进行转换,并重新合并通道,对合并后的矩阵进行等比例压缩,得到压缩后的矩阵。对压缩后的矩阵进行通道分割、二维矢量幅值以及图像边缘值操作。对执行操作后的矩阵进行行列变换,并归一化处理在0~255范围内,得到压缩图像矩阵,所述压缩图像矩阵包含屏幕截图中的溯源信息。

S23:提取所述图像矩阵中的水印信息,并根据所述水印信息获取块矩阵;

具体地,提取图像矩阵中的水印信息,并将水印信息转换为水印矩阵数据,将水印矩阵转换颜色空间,对矩阵颜色进行转换,以转换为设定规格矩阵。

进一步地,根据颜色转换后的水印矩阵进行分割,以分割YUV三个颜色通道数据,并对每个颜色通道的值进行提取,根据提取的颜色通道值对水印矩阵进行变换,以将水印矩阵变换为设定规格的矩阵,将变换后的水印矩阵按照8像素进行分块,并获取水印矩阵的最大长宽块数量。根据最大长宽块数量对水印矩阵中的8像素块矩阵进行计算,获得包含屏幕截图中溯源信息的块矩阵。

S24:根据所述压缩图像矩阵和块矩阵获取含有溯源信息的矩阵数据,完成对屏幕截图盲水印的提取;

将步骤S21和步骤S22中获得的压缩图像矩阵和块矩阵进行合并,得到合并矩阵。计算合并矩阵的行列,并根据行列创建全零矩阵,将块矩阵的矩阵数据拷贝到全零矩阵中,提取并返回含有溯源信息的全零矩阵数据,完成对屏幕截图盲水印的提取。

本发明在终端系统进行屏幕截图时,在内存中对屏幕截图的整体图像添加明文溯源信息,同时对屏幕截图的每8个像素块中也添加溯源信息,进而实现对所有屏幕截图都自动添加盲水印,最终在系统屏幕上既能显示全屏幕的截图内容,也能显示部分屏幕的截图内容,后续进行水印提取时,也能对不完整的图片数据还原水印并进行溯源。本发明具有以下优点:

1、利用WINDOWS API HOOK技术接管终端进程中与截图相关的BitBlt、StretchBlt以及MaskBlt三个API接口,实现所有进程进行截图时都能自动接管控制权,完成截图时盲水印自动添加;

2、对截图的盲水印添加不再局限于某一块区域,而是按照长宽8像素的大小划分整个图像,在每个8像素的块中都添加盲水印溯源信息,后续只要有完整的8像素部分图像即可完成盲水印的提取,不需要完整的图像,防止截图通过涂抹或者截取部分关键内容导致溯源失效;

3、从发起截图到屏幕上显示添加完盲水印后的截图内容,全程在内存中执行,防止中间过程出现未添加盲水印的物理图像文件而导致内容泄露。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

相关技术
  • 适合于互联网络的数字图像盲水印添加、提取和去除方法
  • 适合于互联网络的数字图像盲水印添加、提取和去除方法
技术分类

06120116485529