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

12 篇文章 0 订阅

解压压缩包
解压出来一个文件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比赛所出的隐写和密码学的题目都偏向于算法的研究了。。。。淦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值