mc_easybgm

根据提示是音频隐写,F12资源里找到bgm.mp3下载下来。
不知道为什么直接看assets看不到MP3,需要进入页面才能找到

AU分析可以判断是两首歌叠加在一起的,一手轻音乐一手逮虾户。
MP3stego可以判断存在隐写

根据MP3stego的惯例,歌名为密钥,但是这里肯定不是逮虾户,因为是日文,所以推测是那首mc的轻音乐,听歌识曲,歌名Mooj City 2,密钥moojcity2,但是解出来是乱码。
在这里就卡住了。

经某师傅提示,找到基本一致的题wp,刚好还是队里工控师傅原来做过的。

某工控 CTF 线上赛隐信道数据安全分析题解 - Panda - 专注于网络空间安全研究
目录0x01 赛题说明0x02 曲折题目很明显,就是一道 MP3的隐写题,按照常规思路,有三种思路:直接右击txt打开,查找关键词 flag查看该音频文件的波形图、频谱图,是否存在相关信息可以转...

分析一手MP3结构,这篇文章讲的很细
https://blog.csdn.net/u010650845/article/details/53520426?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
我们可以知道private bit这个位置是保留字,没有任何意义,所以隐藏信息不会影响MP3本身
20161208165008543

修改脚本,跑不出来。按我的理解应该是提取private bit位,然后01二进制转字符串。
原wp中脚本最后转hex没有意义,应该是转为ASCII码
修改脚本如下

import re
import binascii
import time
n = 10405
result = ''
fina = ''
file = open('bgm.mp3','rb')
while n < 0x151017:
    file.seek(n,0)
    n += 417
    file_read_result = file.read(1)
    read_content = bin(ord(file_read_result))[-1]
    result = result + read_content
textArr = re.findall('.{'+str(8)+'}', result)
textArr.append(result[(len(textArr)*8):])
print result

有冗余数据,算出前面到最后一位非0字符(忽略末尾的1,应该是脚本的问题),一共有335个字符
1588522806871-c7f84736ac98bce5

凑整335+1=336被8整除为42

101111101000010010101110011010101000001001010110110011000010001011111010001000101000110001001110000011001110101011111010001011100110001000101100010010101100001011001100111011001001011010110010111110100000110000101110111110101100110010110110000011001100011010001100110011001110101011011110011000100010101011000010100011001010011000100010

正序转换乱码

逆序

010001000110010100110001010000110101010001000110011110110101011100110011001100010110001100110000011011010011001101011111011101000011000001011111010011010110100100110111001100110100001101010010001101000100011001110100010111110101011100110000011100100011000101000100010111110100010000110011011010100100000101010110011101010010000101111101

我很好奇这题的出题思路。是如何加密的。MP3stego扮演了一个什么样的工具。等官方wp