美文网首页网络安全实验室
几个隐写题目的总结

几个隐写题目的总结

作者: 蚁景科技 | 来源:发表于2018-09-26 17:42 被阅读97次

本文为原创文章,转载请注明出处!


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

第一个题目

题目是如图所示一个图片

一堆杂色,隐隐约约好像有字,看了看元数据里没啥东西,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

第二个题目

忘了哪的题了,最后有一堆坐标,坐标,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)

扫描后得到

flag{40fc0a979f759c8892f4dc045e28b820}

第三个题目

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

即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)

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


文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。

相关文章

  • 几个隐写题目的总结

    本文为原创文章,转载请注明出处! 在几个比赛中以及网上汇总了几个隐写题目,都是关于图片的,所以为了以后的比赛可以写...

  • 几个MISC隐写题的writeup

    1. 相机 因为是简单题,所以直接winhex或notepad++打开查找flag Flag{iPhone} 2....

  • 隐写术总结

    隐写术总结 AppLeU0·2015/02/10 10:14 http://drops.wooyun.org/ti...

  • 科技项目总结报告撰写

    写报告最主要的是要有客户意思,对写作目的要非常清晰。 撰写科技项目总结报告,其目的用途是用于科技项目结题评审。因此...

  • 写总结的目的

    本人不擅长面试环节: 基本每次面试都败北.记录面试题目鼓励自己,一起奋斗. 这里的面试总结demo均在github...

  • 写总结的目的

    写总结的目的: 自己从一开始做美容,自己报名学习课程,花了1万,通过一年训练,写总结这个动作,对于销售来说是非常关...

  • 图片隐写术总结

    隐写术有的时候难,就是难在了一张图片有太多的地方可以隐藏信息了,有的时候根本连隐藏的载体都找不到,在你的眼里他就是...

  • 隐题

    纪怀旧事犹新,更念抗争志人。 任尔六千豪语,唯求三四率真。 2013.6(1727)

  • May的提问力训练II——No.7

    「主 题」提问力训练的总结 「理性目的」总结这几天做了些什么,收获有哪些 「体验目的」指导我更好地提问,更有能量地...

  • 2019-03-28

    总结总结项目的各种功能,写一下项目流程

网友评论

    本文标题:几个隐写题目的总结

    本文链接:https://www.haomeiwen.com/subject/xadjoftx.html