某**集团夺旗赛的一道隐写题

某**集团夺旗赛的一道隐写题,第1张

解压压缩包
解压出来一个文件file
使用file命令进行查看
发现是data
010查看也无果
看到标题是logistic联想到是否与xor文件有关
遂使用工具xortool
工具在此
xortool file
选概率最大的那个 (13)

xortool file -l 13 -c 00

-c表示出现频率最高的字符,根据经验,比如文本内容一般是空格(20),二进制文件一般是00
执行命令后出来一个xortool_out文件

用010打开0.out文件
根据题目提示找到uuid

flag{faf5bdd5-ba3d-11da-ad31-d33d75182f1b}
提交flag发现并不对
赛事方又提示与logistic置乱有关
盲猜可能是什么神加密算法吧。。。。
网上一通查找相关论文及解密脚本
回过头来看下刚生成的图片

也看到了提示
说明这个图片有点儿东西
网上找到了一个去水印的脚本

#!/usr/bin/python
# -*- coding: utf-8 -*-

#可以破解水印的脚本

import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

def logic_encrypt(im, x0, mu):
    xsize, ysize = im.shape
    # print(xsize, ysize)
    im = np.array(im).flatten()
    num = len(im)
    
    for i in range(100):
        x0 = mu * x0 * (1-x0)
        
    E = np.zeros(num)
    E[0] = x0
    for i in range(0,num-1):
        E[i+1] = mu * E[i]* (1-E[i])
    E = np.round(E*255).astype(np.uint8)

    im = np.bitwise_xor(E,im)
    im = im.reshape(xsize,ysize,-1)
    im = np.squeeze(im)
    im = Image.fromarray(im)
    
    return im

img = cv2.imread('0.jpg',0)
img = logic_encrypt(img,0.35,3)
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
s = np.log(np.abs(fshift))

plt.imshow(s,'gray')
plt.show()

跑完脚本后得到一个Figure_1.png图片

貌似有flag的字样
这个图片还需经过“还原灰度化”处理才可
用的是python的PIL库
参考此篇文章
最后拿到flag

PS:现在越来越多的CTF比赛所出的隐写和密码学的题目都偏向于算法的研究了。。。。淦

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/743314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-29
下一篇 2022-04-29

发表评论

登录后才能评论

评论列表(0条)

保存