stega1

使用工具[ jphswin(提取码:c3xp) ]解密,密码为空
Harvey

打开解出来的文件即为flag
Harvey

stega2

修改图片高度即可得到flag
Harvey

爆破宽高脚本如下:

import struct
import binascii
import os
p=0
m = open("flag.png","rb").read()
for i in range(5000):
  if(p==1):
      break
  for j in range(5000):
    c = m[12:16] + struct.pack('>i', i) + struct.pack('>i', j)+m[24:29]
    crc = binascii.crc32(c) & 0xffffffff
    if crc == 0x3d9a65d0:
        p=1
        #print(c)
        print(hex(i),hex(j))
        break

stega3

这。。。
Harvey

stega4

打开包是两张图片(不是异或对比,就是盲水印
最终确认是盲水印,直接上脚本就完事了

bwm

Harvey

stega5

stega10

首先用winhex打开看看是啥,这里可以发现一串疑似「base64」,尝试后得到一个链接:http://www.lanzous.com/i9b0ksd

Harvey

打开是个加密的包,这里很明显看出需要crc进行爆破得到密码:447^*5#)7 (具体操作
接着打开是个图片,但是打不开,用winhex查看得知出现了倒序的png

Harvey

接着使用脚本将其恢复顺序,得到恢复顺序的16进制

Harvey

附上脚本:

import re
import binascii

def read_file(filepath):
  with open(filepath,'rb') as fp:
    content=fp.read();
  return content

#以二进制读取图片,并转为16进制
a = read_file('n.png')
hexstr = str(binascii.b2a_hex(a))
hexstr = re.findall("b'(.*?)'",hexstr)[0]

#每俩位分割成列表元素
result = []
result.append(re.findall(r'.{2}', hexstr))
result = result[0]

#按倒序排列,拼接列表为文本
daoxu = result[::-1]
hex= ''
for i in daoxu:
  hex +=i

print(hex)

最后将其复制下来,粘贴为hex形式,另存为png,得到一张二维码,扫码即可得到flag

Harvey

stega11

根据“jpg文件头为FF D8,文件尾, FF D9”进行查找,发现一串疑似
Harvey

最后base32解码得到flag

Harvey

stega12

文本隐写

koishi