欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[2020第五空间线下赛] doublefreq

程序员文章站 2022-07-08 15:49:11
[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 FF00 00

编写脚本将其提取出来并转换为 10

# 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

搜索 flagbin01100110011011000110000101100111

得到两个结果

[2020第五空间线下赛] doublefreq

观察可以得出 padding 为2,于是删掉开头的两个 bin 码将数据凑整。

编写脚本或使用 CyberChefbin 码转换为文件,得到一个压缩包

# 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()

[2020第五空间线下赛] doublefreq

解压得到一个加密的压缩包 flag.rar 和看着名字就像藏了密码的音频文件 pass.wav

使用 Adobe Audition 打开 pass.wav,发现频谱图里有东西

[2020第五空间线下赛] doublefreq

调整一下看得更清晰一些

[2020第五空间线下赛] doublefreq

肉眼识别出 BLXETPIKAPIKA

解压 flag.rar 得到 flag.BMP 和另一个加密的 flag.rar

观察图片,发现图片上的颜色有断层的现象,形成了一道道波纹状

[2020第五空间线下赛] doublefreq

猜测是频域隐写,可以自己编写脚本进行傅里叶变换,或者使用现成的工具 imageIN

将图片拉进去之后,选择单色蓝色,可以看到有明显的字母

[2020第五空间线下赛] doublefreq
[2020第五空间线下赛] doublefreq

肉眼识别出密码 PIKAAKIP

解压得到 flag

flag{>You Play Misc Well _ lleW csiM yalP ouY <}

本文地址:https://blog.csdn.net/weixin_43248464/article/details/110927339

相关标签: 信息安全