De1CTF mc_easybgm
这源自De1CTF的一道题,简单谈一下解题思路
首先从网上扒下来了bgm.mp3
简单分析一下可知,是一首轻音乐上面盖了一层Deja vu
拿到一个mp3文件,第一个想到的肯定是mp3stego,但是缺一个密码
分析了一下扒下来的bg.jpg文件,并没有什么东西
然后师傅们又抓到了一个png文件,是服务器的头像
用zsteg分析发现有PGP Seret Key -
由于不熟PGP,还以为这个东西肯定有用,就提出来了,但其实没啥用,zsteg的分析是错的,PGP文件格式长这样
后来尝试听歌识曲找到了轻音乐的名字moogcity2,以这个字符串作为密码,mp3stego出了一个txt文件,但是不可读,是一堆乱码,用CyberChef进行了xor爆破和编码爆破,各种分析后无果
private_key隐写
其实分析的东西错了,应该分析bgm.mp3的,被easy stego的提示误导了
首先看一下mp3的官方文档
https://www.mp3-tech.org/programmer/frame_header.html?tdsourcetag=s_pctim_aiomsg
在MPEG音频文件中,没有主header,因为MPEG音频文件是由一系列称为帧的较小部分组成的。每个帧都是一个具有自己的标头和音频信息的数据块。
各帧帧头中都有1bit的private_key,可以用来放信息,对mp3文件本身
没什么影响,我们写脚本将其导出
1 | a = open("bgm.mp3",'rb') |
运行之后就可以得到flag
由于对音频相关模块不熟,这里只是一个简单的脚本,利用010editor的mp3模块可以直接分析得到cnt,cnt1,cnt2的值,也就很方便求解
之后视情况更新知识点和新脚本