MISC

虚幻

附件是一张很小的图片,foremost分离出九张图片:

看上去应该是让拼接九张图,修改文件名为*.png,同时保持顺序不变,然后使用montage对图片进行拼接:

1
montage *.png -tile 3x3 -geometry +0+0 flag.png

拼接后的图片依旧很小,首先调整图片大小,然后使用Stegsolve转换到Red plane 7模式得到一张很像二维码的图片,但是没有定位符,很明显扫不出来,然后通过Photoshop对该图反色处理,因为是复现的题,了解到此题考察的是汉信码,定位符不同于普通二维码,然后通过汉信码在线生成网站生成一张汉信码,取其定位符放到该图上在线扫描即可得到flag。

修复后图片:

babyrsa

附件为一个音频文件,Audacity查看发现音波有高有低,这里将高转为1,低转为0后可得到一个压缩文件,手动转换的话在这里不现实,问一个师傅要了脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import wave
import numpy

wav = wave.open('music.wav','rb')
params = wav.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]
str_data = wav.readframes(nframes)
wav.close()

wave_data = numpy.fromstring(str_data, dtype=numpy.short)
high = []
for i in range(1,len(wave_data)-1):
if (wave_data[i]>wave_data[i-1]) and (wave_data[i]>wave_data[i+1]):
high.append(wave_data[i])

wr = ''
count = 0
for i in high:
if(i>20000):
wr += '1'
else:
wr += '0'
if ((len(wr)-count)%8 == 0):
count += 1
wr += ' '
file = ''.join([chr(i) for i in [int(b, 2) for b in wr[:-1].split(' ')]])
open('temp.rar','wb').write(file)

跑了脚本后得到压缩包,里面是一个假flag,使用Winrar解压假flag文本文件,此处不可使用其他解压文件,否则会损毁数据,建议使用Winrar,解压后启动终端运行dir /r,发现NTFS隐写文件:

隐写的是一张png图片,使用mspaint打开发现为半张二维码,猜测是高度被修改,直接保存图片失败,我又尝试了notepad读取数据后保存为png图片,但是数据有损毁,也失败了。

1
mspaint nnnnoflag.txt:mmmm.png

所以干脆直接使用Ntfs Streams Editor工具提取出图片,查看分辨率修改高度,得到完整二维码,扫描得到flag。