前言

盲水印同样是CTF Misc中极小的一个知识点,刚刚做到一题涉及到这个考点的题目。

感觉还挺有意思的,就顺便去了解了下盲水印技术。

数字水印

数字水印(Digital Watermark)一种应用计算机算法嵌入载体文件的保护信息。数字水印技术,是一种基于内容的、非密码机制的计算机信息隐藏技术。它是将一些标识信息(即数字水印)直接嵌入数字载体当中(包括多媒体、文档、软件等)或是间接表示(修改特定区域的结构),且不影响原载体的使用价值,也不容易被探知和再次修改。但可以被生产方识别和辨认。通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。数字水印是保护信息安全、实现防伪溯源、版权保护的有效办法,是信息隐藏技术研究领域的重要分支和研究方向。

盲水印技术

参考:https://developer.qiniu.com/dora/api/5915/blind-watermarking-processing

这里再推荐两个知乎专栏关于盲水印实现的知乎专栏

从傅立叶变换到盲水印(上)——离散傅立叶变换

从傅立叶变换到盲水印(中)——图片盲水印实现

CTF解题

题目链接:https://adworld.xctf.org.cn/task/answer?type=misc&number=1&grade=1&id=4842&page=2

Misc基本操作

下载得到zip解压得到PNG图片

检查详细信息 010查看图片

Kali下binwalk分析文件发现隐写zip foremost分离文件

解压分离后的zip得到

解压分离后的zip解压得到文件里的zip(!禁止套娃)

有两张图片

stgesolve混合两张图片没有发现

查看wp了解到考点是盲水印

GitHub上有提取合成盲水印的脚本 Python2/3都有

https://github.com/chishaxie/BlindWaterMark

Python实现盲水印提取

运行脚本前需要安装两个模块

可以使用如下命令批量安装

pip install -r requirements.txt

//来源GitHub项目主页 未测试 应该可行

先需要安装opencv

选择如下其中一条命令安装

pip install opencv-python
pip3 install opencv-python

//本机Python2/3环境都有而且共存 这里装Python3的

需要先更新pip 按照提示命令操作就行

更新完pip后达到运行要求

还需要安装matplotlib

选择如下其中一条命令安装

pip install matplotlib
pip3 install matplotlib
python -m pip install matplotlib

使用如下其中一条命令提取盲水印(选择哪条取决于运行的是Python2脚本还是Python3)

python2 bwm.py decode day1.png day2.png flag.png
python bwmforpy3.py decode day1.png day2.png flag.png --oldseed

//第一条命令是因为本机配置了使用python2命令运行Python2环境

//第二条命令后加--oldseed是因为直接跑了Python3脚本生成的flag什么都看不清

如下图(真的什么都看不清!)

可以在GitHub项目主页上了解到:注意程序python2和python3版本的加解密结果会有所不同,主要原因是python2和python3 random的算法不同,如果要让python3兼容python2的random算法请加 --oldseed参数。

运行脚本后提取查看flag

Flag:wdflag{My_c4t_Ho}

结束。

Python实现盲水印合成

Github项目主页文件说明:

合成盲水印图 使用如下命令:

python bwm.py encode hui.png wm.png hui_with_wm.png

盲水印软件

去了解下实现盲水印的软件:WaterMake

吾爱破解首发:https://www.52pojie.cn/thread-709668-1-1.html

现在已取消软件下载,并且新帖已经被删除。

不过网络上还是可以找到这款工具的,感觉还是很不错的。

软件界面

破坏测试

转载请注明出处

本文作者:双份浓缩馥芮白

原文链接:https://www.cnblogs.com/Flat-White/p/13517001.html

版权所有,如需转载请注明出处。

【CTF】图片隐写术 · 盲水印的更多相关文章

  1. 前端使用canvas生成盲水印的加密解密

    为了保障信息安全,防止重大信息泄露,并且能够锁定泄露用户,需要对页面展示的图片加入当前用户信息的盲水印,即最终图片外观看起来和原图一样,但是经过解码以后可以识别出水印信息,并且在截图后仍能进行较好的识 ...

  2. BugKu 2B+基于python的opencv的安装-------CTF 盲水印的套路

    BugKu杂项-2B 下载图片后,binwalk下跑一跑,发现有个zip,分离. 值得一提的是,这个zip是伪加密的. 但是你在分离的时候,伪加密的图片也给你分离出来了.这两个图片2B和B2肉眼看起来 ...

  3. 【CTF】图片隐写术 · 修复被修改尺寸的PNG图片

    前言 今天我们想来介绍一下关于图片隐写相关处理,以及修复被修改尺寸的PNG图片. 关于PNG图片的相关处理,是CTF Misc图片隐写术中极为基础的一项操作,笔者这里是想要提一些做题过程中发现的小技巧 ...

  4. javascript图片隐写术,感觉可以用它来干点有想法的事情

    1.什么是图片隐写术? 权威的wiki说法是“隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容.”,图片隐写术简而言之就是利用图片 ...

  5. Javascript实现的图片隐写术

    javascript图片隐写术,感觉可以用它来干点有想法的事情   1.什么是图片隐写术? 权威的wiki说法是“隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人 ...

  6. php 图片添加文字水印 以及 图片合成(微信快码传播)

    1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPat ...

  7. 织梦/dedecms 当文章转载时不需要设置图片水印的设置,取消’图片是否加水印‘的复选框,并且修改如下文件即可生效

    当想添加水印是选中“图片是否加水印”复选框即可. 找到include/helpers/image.helper.php这个文件,在里面找到中的if( isset($GLOBALS['needwater ...

  8. 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现

    1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image ...

  9. java 图片压缩 剪切 水印 转换 黑白 缩放

    专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...

随机推荐

  1. TERSUS无代码开发(笔记08)-简单实例电脑端后台逻辑开发

    主管审批功能逻辑开发 1.查询逻辑开发(查询待审批记录) 2.批准处理(将选中的一条记录进行批准处理)  =============================================== ...

  2. 如何系统的了解Kafka

    1.概述 在大数据的浪潮下,时时刻刻都会产生大量的数据.比如社交媒体.博客.电子商务等等,这些数据会以不同的类型存储在不同的平台里面.为了执行ETL(提取.转换.加载)操作,需要一个消息中间件系统,该 ...

  3. 《C++ Primer》笔记 第12章 动态内存

    shared_ptr和unique_ptr都支持的操作 解释 shared_ptr sp或unique_ptr up 空智能指针,可以指向类型为T的对象 p 将p用作一个条件判断,若p指向一个对象,则 ...

  4. c++函数指针说明

    下面随笔说明函数指针用法. 函数指针的定义: 定义形式: 存储类型 数据类型 (*函数指针名)() 含义: 函数指针指向的是程序代码存储区 函数指针的典型用途-----实现函数回调 通过函数指针调用的 ...

  5. 剑指 Offer 32 - III. 从上到下打印二叉树 III + 双端队列使用 + 蛇形打印层次遍历序列 + 正倒序输出

    剑指 Offer 32 - III. 从上到下打印二叉树 III Offer_32_3 题目详情 题解分析 本题我想的比较复杂,其实题目的要求只是需要遍历的结果逆序和正序交替,这个其实可以使用Coll ...

  6. PAT-1136(A Delayed Palindrome)字符串处理+字符串和数字间的转换

    A Delayed Palindrome PAT-1136 我这里将数字转换为字符串使用的是stringstream字符串流 扩充:将字符串转换为数字可以使用stoi函数,函数头为cstdlib #i ...

  7. Office2013安装教程(附安装包+激活工具)

    office2013中文版是微软推出的新一代office办公软件,重点加强了云服务项目,Office2013[☜借你手指用下]采用了全新的Merto界面,使用户更加专注于内容,配合Windows 8的 ...

  8. Java方法:命令行传参,重载,可变参数,递归

    Java方法:System.out.println()//系统类.out对象.输出方法Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中 ...

  9. PTE 准备之 Read aloud

    Read aloud A text appears on screen.Read the text aloud rext up tp 60 words varies by task, dependin ...

  10. go中sync.Mutex源码解读

    互斥锁 前言 什么是sync.Mutex 分析下源码 Lock 位运算 Unlock 总结 参考 互斥锁 前言 本次的代码是基于go version go1.13.15 darwin/amd64 什么 ...