CTF中音频隐写的一些整理总结


目前只是浅显的对国内外 CTF 音频题的总结,暂时只是做一些比较浅显的整理。整理过程中发现国内外的 CTF 题目难度还差别还是比较大的,本篇总结暂时还没有涉及到高难度的题目,等日后慢慢完善吧,本文长期更新,本文咕咕咕了,后面好几年都没有再更新过了。

摩斯电码

概览

Nuit du Hack CTF Qualifications: Here, kitty kitty!

考察点

  • WAV音频文件隐写术
  • Python基础
  • 密码学

工具

Audacity

描述

I just can’t get enough of this sweet melody, I can listen to it for hours! Sometimes I even feel like it is trying to send me a message ..

HelloKittyKitty.wav (以前白嫖的 OneDriver 被封了,资源不在了,所以本文只做思路分享了)

翻译:

我听这段音乐根本停不下来,我已经听了几个小时!有时候我觉得它再给我传递一个信息

HelloKittyKitty.wav (以前白嫖的 OneDriver 被封了,资源不在了,所以本文只做思路分享了)

Writeup

使用像 Audacity 这样的音频处理软件打开文件,然后可以在音道的最上边看到一些特殊的:

看起来是一个摩斯电码,短线代表.,长线代表-,最后摩斯电码翻译如下:

.... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ----- .---- ---.. ---.. --.- ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.

摩斯电码解码得到:

HBC925649CB0188Q52E617D70929191C

MD5 解密得到valar dohaeris,试了不对,又试了 MD5 值的小写,通过了。

总结

摩斯电码解密可以使用诸多在线网站,如果断网环境的话,当然也可以用 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 = ""

while 1:
    ss = s.split(" ");
    for c in ss:
        for k in codebook.keys():
            if codebook[k] == c:
                cipher+=k
    print(cipher)
    break;

除了使用本地脚本,还有很多在线网站可以解密,大家自行百度或者谷歌吧。

频谱图

概览

Sharif University Quals CTF 2014: Hear with your Eyes

考察点

  • WAV 音频文件隐写术
  • Audacity 的基操

工具

Audacity

描述

Hear With Your Eyes

Download (以前白嫖的 OneDriver 被封了,资源不在了,所以本文只做思路分享了)

翻译:

用你的眼睛倾听

下载 (以前白嫖的 OneDriver 被封了,资源不在了,所以本文只做思路分享了)

Writeup

题目描述说:用眼睛去倾听,所以这里使用工具 Audacity 去打开 wav文件。切换到频谱图去观察:

从频谱图可以直接看到 flag:

总结

这种直接从频谱图中直接去读 flag 的信息算是比较入门的一个 WAV 隐写了。

波形图

概览

ISCC 2017:普通的DISCO

考察点

  • WAV 音频文件隐写术
  • 简单密码学

工具

Audacity

描述

普通的 DISCO 我们普通的摇~~~~
附件是一个 WAV 的音频(这里我国光对不起大家,这里我实战实在没有找到这个 WAV 文件)

Writeup

用 Audacity 打开文件后,放大波形谱。

以高为 1 低为 0,转换得到 01 字符串:

110011011011001100001110011111110111010111011000010101110101010110011011101011101110110111011110011111101

一共105位,额,不符合8位一个字符,符合7位,于是在每个7位之前加个0,得到:

01100110,01101100,01100001,01100111,01111011,01010111,00110000
01010111,00101010,01100110,01110101,01101110,01101110,01111001,
01111101

然后二进制十进制,然后再转为 ASCII,得到 flag

1100110	102
1101100	108
1100001	97
1100111	103
1111011	123
1010111	87
0110000	48
1010111	87
0101010	42
1100110	102
1110101	117
1101110	110
1101110	110
1111001	121
1111101	125

flag{W0W*funny}

总结

感觉这题的难点不是从频谱中读取二进制数据。个人觉得从读出的二进制数据想到 8 位一组补上 0 ,这一步还是比较难的,得保持数据的敏感性才可以。

MP3 隐写

概览

ISCC-2016:Music Never Sleep

考察点

  • mp3 音频文件隐写

工具

在压缩过程中,MP3Stego 会将信息隐藏在 MP3 文件中。数据首先被压缩、加密,然后隐藏在 MP3 比特流中。

基本介绍和用法如下:

encode -E hidden_text.txt -P pass svega.wav svega_stego.mp3
decode -X -P pass svega_stego.mp3

描述

国光在这里又对不住大家了,这里我又没有找到这个 mp3 文件,ε=ε=ε=┏(゜ロ゜;)┛

Writeup

听音频无异常猜测使用隐写软件隐藏数据,搜索 mp3 里面的关键字符串:

得到密码后使用 Mp3Stego 解密:

decode.exe -X ISCC2016.mp3 -P bfsiscc2016

得到文件 iscc2016.mp3.txt,其内容是:

Flag is SkYzWEk0M1JOWlNHWTJTRktKUkdJTVpXRzVSV0U2REdHTVpHT1pZPQ== ???

base64 && base32 后得到 flag:

flag: IwtsqndljERbd367cbxf32gg

总结

这里考察的是 mp3 的音频隐写,这里的套路目前来看没有 wav 隐写那么多变。此外这里对 base64 和 base32 嵌套加密也得保持数据的敏感度。

SilentEye

概览

广东省强网杯-2015: Little Apple

考察点

  • SilentEye 工具的了解使用

工具

SilentEye 是一个跨平台的应用程序设计,可以轻松地使用隐写术,在这种情况下,可以将消息隐藏到图片或声音中。它提供了一个很好的界面,并通过使用插件系统轻松集成了新的隐写算法和加密过程。

描述

我国光不会告诉你们,我这里又没有找到附件。

Writeup

直接使用 slienteye 这个工具即可 :

总结

这题就是考的知识面了,不知道这个工具就 GG,你说气不气?

综合

概览

XMAN-2016 : Misc-200

附件

hong.mp3 (以前白嫖的 OneDriver 被封了,资源不在了,所以本文只做思路分享了)

工具

  • MP3stego
  • Linux xxd 命令
  • Linux file 命令

Writeup

解压 mp3

首先使用 Mp3Stego 解密 mp3 文件。

D:\soft\MP3Stego_1_1_18\MP3Stego
λ Decode.exe -X C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3
MP3StegoEncoder 1.1.17
See README file for copyright info
Input file = 'C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3'  output file = 'C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3.pcm'
Will attempt to extract hidden information. Output: C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3.txt
Enter a passphrase:
Confirm your passphrase:
the bit stream file C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3 is a BINARY file
HDR: s=FFF, id=1, l=3, ep=off, br=9, sf=0, pd=1, pr=0, m=0, js=0, c=0, o=0, e=0
alg.=MPEG-1, layer=III, tot bitrate=128, sfrq=44.1
mode=stereo, sblim=32, jsbd=32, ch=2
[Frame 1265]Avg slots/frame = 417.631; b/smp = 2.90; br = 127.899 kbps
Decoding of "C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3" is finished
The decoded PCM output file name is "C:\Users\CTF\Desktop\CTF\misc\hong_Ksfw02V.mp3.pcm"

得到一个 txt 文件内容是:

http://weibo.com/u/5280474214?from=feed&loc=avatar&is_all=1      hint:这是一个文件哦,呦呦呦,切克闹

访问得到一张二维码:

读取二维码

读取二维码得到内容为:

03F30D0AC252BA576300000000000000000100000040000000730D0000006400008400005A00006401005328020000006300000000030000000F000000430000007363000000640100640200640300640400640500640600640400640700640800640300640400640900640300640900640A00670F007D0000640B007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100714000577C0100474864000053280C0000004E697A00000069680000006969000000695F0000006966000000697500000069730000006961000000696E0000006967000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007304000000622E70795203000000010000007326000000000103010301030103010301030103010301030103010301030103010301090106010D0114024E280100000052030000002800000000280000000028000000007304000000622E707974080000003C6D6F64756C653E010000007300000000

二进制进制转换

将二进制内容保存文件为gg,然后用xxd命令生成一个 hex 文件:

用 file 命令查看下是一个 python 2.7 的编译文件,手动改为 hex.pyc 然后在线反编译一下文件得到源码:

#!/usr/bin/env python
# encoding: utf-8

def flag():
    str = [
        122,
        104,
        105,
        95,
        102,
        117,
        95,
        115,
        97,
        105,
        95,
        110,
        105,
        110,
        103]
    flag = ''
    for i in str:
        flag += chr(i)

    print flag

代码最后加上flag()调用 flag 函数输出 flag:

写在最后

目前还有几道国外的音频题目没有完善,这里日后会慢慢完善的,本文咕咕咕了,后面好几年都没有再更新过了。国光的嘴,骗人的鬼,后面不打比赛了之后,相关的姿势几没有再总结过了。

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信
支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光

点评

CTF MISC 这块还是建议大家靠兴趣去刷题,因为学这玩意出来不一定可以找到工作,如果不是真正喜欢这个,不建议大家去做专职的 MISC 手,CTF 竞赛中二进制是主力,Web 次之。就业方面 Web 就业机会要多于二进制,MISC、密码学这里的方向就业岗位真的不多,所以还是建议 Web 手或者二进制手兼职刷一些 MISC 题目,不要主次颠倒了。

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

微信
支付宝

没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光


文章作者:  国光
版权声明:  本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 国光 !
 上一篇
CTF中图片隐写的一些整理总结 CTF中图片隐写的一些整理总结
对历年来国内外CTF中常见的题型图片隐写的一些总结,本文长期更新,及时补充新的题型。本文咕咕咕了,后面好几年都没有再更新过了。
2018-01-19
下一篇 
MySQL 手工注入之基本步骤 MySQL 手工注入之基本步骤
手工注入虽然原理是一样的,但是在具体手工注入的过程中有好多各种各样的细节不太一样,特此记录汇总下,以方便以后的学习查询。
2018-01-15
  目录