[2020第五空间线下赛] doublefreq
程序员文章站
2022-04-02 10:53:22
[2020第五空间线下赛] doublefreq解压得到一个 flag.wav用 010editor 打开发现数据都是 FF FF 和 00 00编写脚本将其提取出来并转换为 1 和 0# extract.pyimport osfin = open('flag.wav', 'rb')lfin = os.path.getsize('flag.wav')fout = open('flag.bin', 'w')persent = -1for i in range(0, lfin, 2):...
[2020第五空间线下赛] doublefreq
解压得到一个 flag.wav
用 010editor
打开发现数据都是 FF FF
和 00 00
编写脚本将其提取出来并转换为 1
和 0
# extract.py
import os
fin = open('flag.wav', 'rb')
lfin = os.path.getsize('flag.wav')
fout = open('flag.bin', 'w')
persent = -1
for i in range(0, lfin, 2):
b = fin.read(2)
if b == b'\xFF\xFF':
fout.write('1')
elif b == b'\x00\x00':
fout.write('0')
tmp = i*100//lfin
if tmp > persent:
persent = tmp
print(f'[+] extract {persent}%')
fin.close()
fout.close()
用 010editor
打开提取的数据,发现 bin
码凑不整(不是8的倍数),猜测有 padding
搜索 flag
的 bin
码 01100110011011000110000101100111
得到两个结果
观察可以得出 padding
为2,于是删掉开头的两个 bin
码将数据凑整。
编写脚本或使用 CyberChef
将 bin
码转换为文件,得到一个压缩包
# transfor.py
import os
fin = open('flag.bin', 'r')
lfin = os.path.getsize('flag.bin')
fout = open('flag.zip', 'wb')
persent = -1
for i in range(0, lfin, 8):
c = int(fin.read(8), 2)
b = bytes([c])
fout.write(b)
tmp = i*100//lfin
if tmp > persent:
persent = tmp
print(f'[+] transfor {persent}%')
fin.close()
fout.close()
解压得到一个加密的压缩包 flag.rar
和看着名字就像藏了密码的音频文件 pass.wav
使用 Adobe Audition
打开 pass.wav
,发现频谱图里有东西
调整一下看得更清晰一些
肉眼识别出 BLXETPIKAPIKA
解压 flag.rar
得到 flag.BMP
和另一个加密的 flag.rar
观察图片,发现图片上的颜色有断层的现象,形成了一道道波纹状
猜测是频域隐写,可以自己编写脚本进行傅里叶变换,或者使用现成的工具 imageIN
将图片拉进去之后,选择单色蓝色,可以看到有明显的字母
肉眼识别出密码 PIKAAKIP
解压得到 flag
flag{>You Play Misc Well _ lleW csiM yalP ouY <}
本文地址:https://blog.csdn.net/weixin_43248464/article/details/110927339