前言
音频隐写是指将隐藏的信息嵌入到音频信号中,使得这些信息对人耳听不出来,但可以通过特定的解码方式提取出来。以下是音频隐写的几种具体种类:
-
LSB隐写法:最常见的音频隐写技术之一,将要隐藏的信息以二进制形式嵌入到音频信号中最低有效位(LSB)中。
-
时间域隐写法:通常利用音频信号中微弱的、难以被察觉的时间间隔来嵌入信息。
-
频率域隐写法:通过改变音频信号的频率,将要隐藏的信息嵌入到音频信号中。
-
相位隐写法:将待隐藏信息对应的比特值作为相位差值,修改音频信号对应位置的相位值来嵌入信息。
-
编码隐写法:将待隐藏信息编码成比特流,再将比特流嵌入到音频信号中去。
无论使用何种技术,音频隐写都可以被用于隐藏秘密信息以进行间谍通信、数字水印、版权保护等目的。
Audacity是一款免费、开源的音频编辑软件,支持多种操作系统,包括Windows、macOS和Linux等。它可以帮助用户录制、编辑和混合不同的音频文件,支持包括WAV、AIFF、MP3、OGG等多种音频格式。
用户可以利用Audacity来进行基本的音频编辑操作,如剪切、复制、粘贴、混响、降噪、音量调整等。此外,Audacity还支持各种音频特效和处理,如去除噪音、改变声调、增加回声、加入混响、压缩音量等。Audacity还支持使用插件扩展功能,用户可以自行添加各种音频特效和处理插件,以满足个人需求。
总的来说,Audacity是一款强大且易于使用的音频编辑软件,适用于想要进行音频编辑或录制的广大用户。
一、这音乐好难听
1.打开题目
2.解题
打开音乐文件,也不知道是个什么东西,奇奇怪怪的,先用Audacity分析一波,查看了下波形,如果低的波峰为0,高的波峰为1的话,那就是妥妥的二进制了啊。以下是提取脚本
import wave as we
import numpy as np
wavfile = we.open(u'music.wav',"rb")
params = wavfile.getparams()
framesra,frameswav= params[2],params[3]
datawav = wavfile.readframes(frameswav)
wavfile.close()
datause = np.fromstring(datawav,dtype = np.short)
result_bin=''
result_hex=''
max=0
for i in range(len(datause)-1):
if datause[i]> max:
max=datause[i]
try:
if(datause[i]<0 and datause[i+1]>=0):
if (max-24000 >0):
result_bin+='1'
max=datause[i+1]
else:
result_bin+='0'
max=datause[i+1]
except:
break
print result_bin
for i in range(0,len(result_bin),4):
result_hex+=hex(int(result_bin[i:i+4],2))[2:]
print result_hex
file_rar = open("test.rar","wb")
file_rar.write(result_hex.decode('hex'))
file_rar.close()
得到一个压缩文件,打开之后只有一个noflag的文档,真坑啊,不是最终的答案,把压缩文件放到010里面分析一波 这里有个stm的文件,但是压缩包好像没有,那是不是文件损坏了,尝试修复文件
文件块的第3个字节为块类型,也叫头类型。
头类型是0x72表示是标记块
头类型是0x73表示是压缩文件头块
头类型是0x74表示是文件头块
头类型是0x75表示是注释头
解压将STM的文件放到010里面分析一波 发现是个png的文件,但是解压出来的文件也不是啊,所以尝试加了个后缀
png修复高度
import os
import binascii
import struct
crcbp = open("STM.png","rb").read()
for i in range(1024):
for j in range(1024):
data = crcbp[12:16] + struct.pack('>i',i) + struct.pack('>i',j) + crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if crc32 == 0x08ec7edb:
print i,j
发现高和宽都是280,但是现在的图片高只有140,那么我们修改一下
这里因为高和宽是一样的,所以将后面的这个数据改为和前面的一样就行了。
最后得到完整的二维码,扫码得到flag
得到flag:flag{4dcfda814ec9fd4761c1139fee3f65eb}