解压压缩包
解压出来一个文件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条)