首页 > 其他分享 >几个隐写题目的总结

几个隐写题目的总结

时间:2023-06-04 13:04:21浏览次数:41  
标签:总结 canvas 题目 dst 隐写 cv2 range png 通道


几个隐写题目的总结_数组


在几个比赛中以及网上汇总了几个隐写题目,都是关于图片的,所以为了以后的比赛可以写出一些脚本来备用,弥补stegsolve等隐写工具的不足。

第一个题目

题目是如图所示一个图片

几个隐写题目的总结_数组_02

一堆杂色,隐隐约约好像有字,看了看元数据里没啥东西,binwalk也没隐藏啥东西,改了改高度也没隐藏的信息,用Stegsolve看了看预设的几个通道,也没啥东西,估计就是在像素的低位藏了东西了吧,下面科普一下png的知识

png支持RGBA四个通道,每个通道占8个二进制位,隐写文件或数据一般都在各个通道的低位,因为低位的变化不会引起较大的视觉变化,图片还是原来的图片,但是你不知道是在哪个通道,这里有4个通道,如果藏在一个通道的低位的话,有四种可能,如果藏在两个通道的低位的话,可能进行各种运算操作后出现新的图片,加减乘除与或异或,具体的运算符也没几个,这样的话全部列举出来也不费多长时间,用python写个脚本留着以后用就好了

importcv2
importnumpy as np
importos
deflowbit(x):
 returnx&0x1
png= cv2.imread("flag_enc.png" , cv2.IMREAD_UNCHANGED)
os.system("mkdirtemp")
os.system("cdtemp")
fori in range(0,4):
 forf in range(0,4):
 dst= cv2.bitwise_xor(lowbit(png[: ,: ,i]),lowbit(png[: ,:, f]))
 cv2.imwrite("temp/"+"xor_"+str(i)+"_"+str(f)+".png",dst*255)
fori in range(0,4):
 forf in range(0,4):
 dst= cv2.bitwise_or(lowbit(png[: ,: ,i]),lowbit(png[: ,:, f]))
 cv2.imwrite("temp/"+"or_"+str(i)+"_"+str(f)+".png",dst*255)
fori in range(0,4):
 forf in range(0,4):
 dst= cv2.bitwise_and(lowbit(png[: ,: ,i]),lowbit(png[: ,:, f]))
 cv2.imwrite("temp/"+"and_"+str(i)+"_"+str(f)+".png",dst*255)

Stegsolve的combine功能太麻烦了,还要提取通道再运算,况且你也不知道是哪两个通道进行运算,所以我们用opencv直接提取出所有通道,暴力把所有通道的所有运算结果都生成图片,一眼就看出来了哪个有flag

几个隐写题目的总结_生成图片_03

几个隐写题目的总结_数组_04

第二个题目

几个隐写题目的总结_python_05

忘了哪的题了,最后有一堆坐标,坐标,RGB之类的无非就是图片,看看最大的坐标都没超过300的,就用opencv创建画布,写进去就好了,脚本优化了一下,本来是循环300*300的画布,判断坐标是否在txt里,加上判断操作就很慢了,这里直接用numpy的ones函数创建了画布是白色的,那就循环坐标的数组改掉画布的像素就好了,运行比较快不用等

importcv2
importos
importnumpy as np
n=0
canvas= np.ones((300, 300, 3), dtype="uint8")
canvas=canvas*255
list=open("123.txt").read().split("\n")
list=[i.split(",")for i in list]
forp in list:
 canvas[int(p[0]),int(p[1])]=[0,0,0]
cv2.imwrite("2.jpg",canvas)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)

几个隐写题目的总结_生成图片_06

扫描后得到

flag{40fc0a979f759c8892f4dc045e28b820}

第三个题目

分析数据包后得到一个txt,里面又是数字,但是这次每行是三个数字,范围从0到255之内,没有超过的,于是猜测是像素点,但是我们不知道图片的长宽就没有办法生成图片,拉到txt最下面发现是98457行,于是尝试分解质因数

几个隐写题目的总结_生成图片_07

即111*887,flag的话,那就是一长串字符,应该是887*111吧

import cv2
import os
import numpy as np
canvas = np.zeros((111, 887, 3), dtype="uint8")
list=open("ce.txt").read().split("\n")
for y in range(0,887):
 for x in range(0,111):
 arr=list[x+(y)*111].split(",")
 canvas[x,y]=[arr[0],arr[1],arr[2]]
cv2.imwrite("2.jpg", canvas)
cv2.imshow("Canvas", canvas)
cv2.waitKey(0)

几个隐写题目的总结_python_08

图片的题目们用opencv-python来写脚本解题还是很方便快捷的。图片直接是numpy数组,方便操作,也方便获取低位,直接和0x1进行按位与操作便可。


几个隐写题目的总结_生成图片_09

标签:总结,canvas,题目,dst,隐写,cv2,range,png,通道
From: https://blog.51cto.com/u_14601424/6410394

相关文章

  • 微软Playwright-UI自动化中常用方法总结-java
    经过多天对微软自动化框架Playwright的使用,发现还没有讲该框架的常用方法,比如定位、按键等操作使用。今天我们正好来说说。  一、鼠标类操作     1.单点      .click();   click(Stringselector){                          ......
  • 极客时间--golang并发编程实战课--Mutex学习总结
    互斥锁的实现机制互斥锁是并发控制的一个手段,是为了避免竞争而建立的一种并发控制机制。在并发编程中,如果程序中的一部分会被并发访问或修改,那么,为了避免并发访问导致的意想不到的结果,这部分程序需要被保护起来,这部分被保护起来的程序,就叫做临界区。可以说,临界区就是一个被共......
  • 阅读总结《刻意练习》
    总体来讲,没有多大帮助。也没完全总结完6/10,没有完全看完5/6。但是意思就是以下了。反反复复说的内容。不同专业领域的技能获得的时间与练习时间并不存在一个1万小时的最低阈值。天赋虽然在其中不起决定性作用,却也会是一大影响因子。练习的成果并不与时间成正比,这一点也取决于练......
  • 2022-2023 java高级面试总结
    1.Java内存模型是什么?JMM即Java内存模型(Javamemorymodel),在JSR133里指出了JMM是用来定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。Java内存模型规范java如何按需禁用缓存和编译优化的方法。2.mysql查询第一万条数据后20条数据,sql语句如何写?sel......
  • 离散数学图论部分总结
    图论内容总结前言:图论这一部分内容可谓离散数学的点睛之笔,离散数学很多堆砌的概念在这章似乎都活过来了(可能是因为我刷算法题的原因),概念之间的联系更加的紧密。学完图论部分我感觉里面很多的知识点都非常重要,比如顶点度数,握手定理,树,而考点的话除了这些,还有求欧拉回路,最短路径问......
  • 2023年AMC8真题试卷分析,近年AMC8考点分布总结
     AMC8考点  AMC8的考点与7、8年级数学大纲相对应,包括(但不局限于)整数、分数、小数、百分数、比例、数论、日常的几何、面积、体积、概率及统计、逻辑推理等。 计算部分:大多有实际应用背景,类似应用题,涉及分数、百分数、小数计算,但是复杂程度较低。考察学生的计算能力,在算......
  • 课程总结
    这么快的时间,一个学期都已经过去了,感觉什么都还没来得及做,在这个学期最让人意外的是上体育课不小心扭到了脚导致左脚踝骨折在家休养了一个多月才来到学校,在家的这段时间里说实话过得太快了,什么也没有学到。算一算在学校的时间不过三四个月的时间,过的可真快。在本学期中开学考试的......
  • 对上一年工作中猫腻的总结
    任何一个公司都有自己独特的管理方式,但是在裁员和人员管理上,只要人数超过一定规模的公司基本上都是有一个SOP了。如果你没有被裁员,主动离职的,那么恭喜你不需要经历这个SOP流程,如果你是被动的,那么这个SOP流程肯定你会遇到,请参考文章:北美2023被裁员的感悟 内的裁员过程部......
  • 对上一年工作中猫腻的总结
    任何一个公司都有自己独特的管理方式,但是在裁员和人员管理上,只要人数超过一定规模的公司基本上都是有一个SOP了。如果你没有被裁员,主动离职的,那么恭喜你不需要经历这个SOP流程,如果你是被动的,那么这个SOP流程肯定你会遇到,请参考文章:北美2023被裁员的感悟 内的裁员过程部分......
  • 第一周总结
    此次试题还是基本的Javaweb增删改查,通过试题的分析可以得出建表的时候可以有一张普通用户表,一张新闻表,一个角色类型表。角色类型表用于登录到不同的权限界面,用户表实现对普通用户的增删改查,流程控制的时候即是在新闻表里面的增加,修改新闻稿的时候查询出所有的稿子然后把根据新闻......