CTF——MISC——音频隐写
一、常见工具
工具:Audacity、Adobe Audition(简称au)、SilentEye、DeepSound、SSTV、mp3stego。
其实和图片一样,数字音频也可以用于信息隐写,音视频隐写会存在比较明显的特征:
· 音频载体信号存在冗余,为隐蔽信息提供支持;
· 人类听觉系统频谱范围是20Hz18kHz,但对2kHz4kH信息最为敏感;
· 人类听觉系统只对相对相位敏感,而无法感知绝对相位。
这里参考一位师傅写的文章
C语言解析WAV音频文件
解释了WAVE文件的结构
所以对于音频题,拿到题目当然首先是听一下,然后再根据是否获得信息来进行下一步操作
二、常见题型
Wave (wav), 文件头:57415645
Audacity
作为最常用的音频查看软件,当试听题目音频没有明显杂音或者信息时,一般会选择用Audacity打开
并可以选择查看波形、频谱图
可能会获得morse电码或者二进制的信息,当然部分题目信息量过大,会用到脚本来进行提取
此外,波形图的上下峰也可能会暗含信息
出题方式是千变万化,分离左右声道来获得信息,diff反相音频获得信息,通过倒序,反相,慢速,降噪等步骤也视情况尝试(例如:经典的单词模糊听写,需要倒序后慢速听;充斥杂音的音频需要一定程度的降噪才能获得信息;ASCII编码的数字需要注意是否越过127)
SSTV
(慢扫描电视)
把图片隐藏到音频信息中的隐写,手机上可以装Robot36(app),PC可以用MMSSTV。’ fill=’%23FFFFFF’%3E%3Crect x=’249’ y=’126’ width=’1’ height=’1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
Deepsound
作为带有密码的音频隐写
Deepsound的密码可通过john爆破
MP3stego
MP3格式文件:
cmd打开,将 Decode.exe 拖到命令行里,将要解密的文件放在文件夹中
# 隐藏信息
# —E 读取隐藏信息文件的内容,-P 设置密码
encode.exe -E hidden.txt -P pass CTF.wav svega_stego.mp3
# 解密信息
decode.exe -X svega_stego.mp3 -P pass
拨号隐写(DTMF)
推荐一个GitHub上的脚本工具
https://gitcode.net/mirrors/ribt/dtmf-decoder?utm_source=csdn_github_accelerator
MIDI隐写
MIDI (mid), 文件头:4D546864
乍看没有发现任何信息,但稍微研究一下midi的文件结构,将音乐通道由2改为3
再重新打开文件,即可发现隐藏通道下的二维码
信号分析
包括无线电信号分析,GPS信号分析,一般用Adobe Audition或者Audacity分析;PT2242信号:前面4bit表示同步码,中间的20bit表示地址码,后面的4bit表示功能码,最后一位是停止码。
HackRF区别
原始数据
当见到音频的后缀为一些奇怪的组合时,比如扩展名为s8,要考虑是否为原始数据,所以在导入时选择导入原始数据’ fill=’%23FFFFFF’%3E%3Crect x=’249’ y=’126’ width=’1’ height=’1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
默认采样率、尾端和编码获取不到信息时,也要根据需要调试(频谱图可以容易的识别出信号的中心频率)
三、例题
1,你真的很不错
(flag.wav; 音频波形转摩斯密码)
.... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. --.- ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.
Python摩斯电码解密
摩斯电码解密可以使用诸多在线网站,当然也可以用Python进行解密:
Python
# -*- coding:utf-8 -*-
s = input("input the cipher_text Enclose with quotes:")
codebook = {
'A':".-",
'B':"-...",
'C':"-.-.",
'D':"-..",
'E':".",
'F':"..-.",
'G':"--.",
'H':"....",
'I':"..",
'J':".---",
'K':"-.-",
'L':".-..",
'M':"--",
'N':"-.",
'O':"---",
'P':".--.",
'Q':"--.-",
'R':".-.",
'S':"...",
'T':"-",
'U':"..-",
'V':".--",
'W':".--",
'X':"-..-",
'Y':"-.--",
'Z':"--..",
'1':".----",
'2':"..---",
'3':"...---",
'4':"....-",
'5':".....",
'6':"-....",
'7':"--...",
'8':"---..",
'9':"----.",
'0':"-----",
'.':".━.━.━",
'?':"..--..",
'!':"-.-.--",
'(':"-.--.",
'@':".--.-.",
':':"---...",
'=':"-...-",
'-':"-....-",
')':"-.--.-",
'+':".-.-.",
',':"--..--",
'\'':".----.",
'_':"..--.-",
'$':"...-..-",
';':"-.-.-.",
'/':"-..-.",
'\"':".-..-.",
}
clear = ""
cipher = ""
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758591234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
while 1:
ss = s.split(“ “);
for c in ss:
for k in codebook.keys():
if codebook[k] == c:
cipher+=k
print(cipher)
break;
1.2,lookme(flag.wav; 高低波形转换)
110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101
2,我爱我的祖国(flag.mp4 ; NTFS交换数据流,以音频为主数据流)
把文件直接在 NtfsStreamsEditor 中打开搜索,就能看到一些非主数据流文件
得到一张图片,打开图片得到flag
3,用眼睛去倾听(flag.wav; 音频频谱隐藏)
在Audacity中打开,调到查看音频频谱:
4,音乐永不停止(flag.mp3; MP3音频文件隐写)
需要用到 Mp3Stego 中解密隐藏的信息
指令:
Decode.exe -P pass -X flag.wav
Flag is SkYzWEk0M1JOWlNHWTJTRktKUkdJTVpXRzVSV0U2REdHTVpHT1pZPQ== ???
5,Silenteye(flag.wav ; 音频中的LSB(最低有效位)隐写)
类似于图片隐写中的 LSB 隐写,音频中也有对应的 LSB 隐写。主要可以使用 Silenteye 工具