CTF图像隐写——“双图”和“图像和像素值转换”

简介: CTF图像隐写——“双图”和“图像和像素值转换”

CTF图像隐写——“双图”和“图像和像素值转换”

所谓“双图”是指题目一般会提供两张图片,一张是原图,另一张是有隐写消息的图片,我们需要对这两张图片进行处理,从而提取隐写信息。常见的“双图”解题套路包括:对两张图片对应像素值进行异或、相减、相加或相乘等,还可能涉及盲水印考点。

“双图”隐写案例

【例题】star.bmp

【题目来源】原创

【题目描述】找到文件中的flag

【解题思路】将图像文件在010 Editor中打开,使用BMP模板解析文件,发现在BMP文件尾还有一个JPG文件,如下图所示,将JPG图像手动提取出来,保存为ex.jpg。然后我们对两幅图像做异或、加减乘等操作。

image.png

在StegSolve中打开题目原图,如下图所示,单击“Analyse➡️Image Combiner”,打开图像组合器。

然后,选择我们提取出图像ex.jpg,这时会弹出一个新窗口,新窗口等左上角会显示两幅图像的操作。我们多次单击“>”按钮,会发现如下图中的隐写信息。两幅图像相减,会发现一个二维码,扫码得到flag{doublePic}。

image.png
image.png
图像和像素值的转换

需要从图像中提取像素值,或者题目只提供像素值,需要我们画出原图像。这里读取像素值或根据像素值画图,均要使用Python的PIL库。利用脚本工具getRGB.py用于读取像素点点像素值,RGB2pic.py用于根据像素值画图。

【例题】top.zip

【题目描述】找到文件中的flag

【解题思路】解压后有两个文件,一个是加密脚本,另一个是加密后的图像。脚本中使用异或算法对图像加密。我们修改加密脚本,得到解密脚本top-dec.py,解密脚本中复用了加密脚本中的很多函数,运行解密脚本,需要把该脚本和flag_enc.hex放到同一个路径下,使用Python3运行,即可得到解密后的图像,如下图所示:

image.png
图像提示,左上角对角线隐藏信息,需要读取像素值。可以用StegSolve查看,感觉绿色通道有异常,于是修改getRGB.py如下,提取出所有绿色通道像素值:

from PIL import Image
import sys

im = Image.open(sys.argv[1])
width = im.size[0]  
height = im.size[1]  
pix = im.load()

gg = []
for i in range(1, 50):
# 脚本重点修改位置,像素坐标(00)位于图像左上角。因为我们要读取从左上到右下对角线上的坐标的像素值,所以只需要一层循环,并使横纵坐标相同
    #print pix[i, i]
  r, g, b=pix[i,i]
  gg.append(g)
print(gg)

运行修改后的getRGB.py,得到结果如下:

(.venv) (base) liuxiaowei@localhost 题目 % python get_RGB.py flag_dec.png 
[90, 109, 120, 104, 90, 51, 116, 111, 100, 88, 74, 121, 101, 86, 57, 49, 85, 70, 56, 48, 98, 109, 82, 102, 90, 106, 70, 110, 97, 72, 82, 102, 100, 122, 70, 48, 97, 70, 57, 116, 77, 51, 48, 61, 89, 91, 92, 91, 89]

将其转换为ASCII码,得到:ZmxhZ3todXJyeV91UF80bmRfZjFnaHRfdzF0aF9tM30=Y[[Y(这个转码可以自己编写脚本实现),再对等号和等号前的字符串进行Base64解码,得到flag{hurry_uP_4nd_f1ght_w1th_m3}。

【例题】misc-1.pcapng

【题目描述】找到文件中的flag

【解题思路】在Wireshark中打开文件,进行协议分级,优先查看HTTP,在HTTP请求中发现flag.zip,如下图所示。输入过滤规则:http contains “flag.zip”,只有一个数据包,再追踪HTTP流,从服务器的返回包中提取一个压缩包,解压后是ce.txt。查看TXT文件,共98 457行,每行3个正整数(以逗号分隔),且其值均在0~255范围内,猜测每行是像素点的RGB值,共98 457个像素。我们需要根据像素值画图,但是缺少图像的宽高信息。于是对98 457进行因数分解,得到98 457=3x37x887,但一般图像的高或宽不会是30+像素,因此猜测图像宽高为111x887。

对RGB2.pic.py脚本修改如下:

#-*- coding:utf-8 -*-
from PIL import Image
import sys
import re

x = 887 #x坐标  通过对txt里的行数进行整数分解
y = 111 #y坐标  x*y = 行数

im = Image.new("RGB",(x,y))#创建图片
file = open('ce.txt') #打开rbg值文件

#通过一个个rgb点生成图片
for i in range(0,x):
    for j in range(0,y):
        line = file.readline()#获取一行
        line=line.strip('\n')
        rgb = line.split(", ")#分离rgb
        im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))#rgb转化为像素
#im.show()
im.save("res.png")

只需修改x和y就能生成正确的图像,如下图所示:
image.png

相关文章
|
10天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
6天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2506 14
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
6天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1519 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
8天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
531 13
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18836 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17524 13
Apache Paimon V0.9最新进展
|
8天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
458 48
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
355 4
叮咚!您有一份六大必做安全操作清单,请查收
|
2天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。