Skip to content

Latest commit

 

History

History
92 lines (60 loc) · 5.28 KB

File metadata and controls

92 lines (60 loc) · 5.28 KB

去吧!追寻自由的电波

题解作者:zzh1996

出题人、验题人、文案设计等:见 Hackergame 2021 幕后工作人员

题目描述

  • 题目分类:general

  • 题目分值:100

  • 题目链接:src/radio.mp3

(前情提要)

为了打破 Z 同学布下的结界,X 同学偷偷搬出社团的业余无线电台试图向外界通讯。

当然,如果只是这样还远远不够。遵依史称“老爹”的上古先贤的至理名言,必须要“用魔法打败魔法”。X 同学向上级申请到了科大西区同步辐射实验室设备的使用权限,以此打通次元空间,借助到另一个平行宇宙中 Z 同学的法力进行数据对冲,方才于乱中搏得一丝机会,将 flag 用无线电的形式发射了出去。

考虑到信息的鲁棒性,X 同学使用了无线电中惯用的方法来区分字符串中读音相近的字母。即使如此,打破次元的强大能量扭曲了时空,使得最终接受到的录音的速度有所改变。

为了保障同步辐射设备的持续运转,组织牺牲了大量的能源,甚至以东北部分地区无计划限电为代价,把这份沉甸甸的录音文件送到了你的手上。而刚刚起床没多久,试图抢签到题一血还失败了的你,可以不辜负同学们对你的殷切期望吗?

注:flag 花括号内只包含小写字母。

题解

调节音频速度

下载音频文件播放,可以听出音频内容是一段人声,但是具体读的内容是什么,速度太快,音调太高,无法听清楚。

根据题目描述「打破次元的强大能量扭曲了时空,使得最终接受到的录音的速度有所改变」,我们可以得知音频的速度被加快,需要使用工具来还原音频的速度,才能听清内容。

对音频的速度进行调节有两种不同的方式:

  • 一种是保持音调不变,这样人说话的速度加快或者减慢了,但是音频的内容听起来还跟原来差不多。这是很多音视频播放器通常采用的方案,一般视频网站和 app 的倍数功能也是这种处理方式,它可以在加速和减速的同时让人听得尽量清楚。这种方式需要较为复杂的算法来处理。

  • 另一种是简单地把音频的波形进行压缩,这样速度加快的同时,音调也会变高。如果你试过播放磁带的同时进行倒带操作,那么你应该对这种声音很熟悉。物理现象(例如介质和播放器件的速度改变、多普勒效应等)通常会产生这种音频变换。

可以听出,本题的音频文件是上述第二种变换(题目文案也在暗示这一点)。所以,很多播放器的速度调节功能并不能还原出原始的声音。如果你保持音调不变,对速度进行了减慢调节,那么理论上你还需要降低声音的音调才能恢复到原始的状态。

这里使用处理多媒体文件常用的工具 ffmpeg 来对音频进行处理。

根据 ffmpeg 的文档,asetrate 这个 Audio Filter 可以改变音频的采样率,从而改变音频的速度和音调,相当于在时间轴上对音频进行缩放操作。

我们先使用 ffmpeg -i radio.mp3 命令来查看音频的采样率,是 48000 Hz。

然后尝试将采样率减半,命令为 ffmpeg -i radio.mp3 -af 'asetrate=24000' radio2.mp3,发现得到的音频已经可以听清楚了。如果觉得这样不够,可以尝试把采样率减到原来的 1/3,即 ffmpeg -i radio.mp3 -af 'asetrate=16000' radio3.mp3,可以得到速度更慢的音频。

得到的音频文件:radio2.mp3radio3.mp3

解码音频内容

作为英语听力成绩总是全班倒数的学生,我自然是无法直接听出来全部的英语单词,只能听出来其中一部分单词,例如 Hotel、November、India、Alpha 等等。

根据题目描述「考虑到信息的鲁棒性,X 同学使用了无线电中惯用的方法来区分字符串中读音相近的字母」,这应该是某种编码方式。实际上,我们只需要用上面几个单词进行搜索,就可以查到这是一个单词表,是字母到单词的映射。你也可以通过搜索「无线电」和「单词表」之类的关键词找到这份表格。实际上,它是北约音标字母(NATO phonetic alphabet),或者叫做「国际无线电通话拼写字母」,玩过业余无线电的选手应该对此很熟悉。

Symbol Code Word
A Alfa/Alpha
B Bravo
C Charlie
D Delta
E Echo
F Foxtrot
G Golf
H Hotel
I India
J Juliett
K Kilo
L Lima
M Mike
N November
O Oscar
P Papa
Q Quebec
R Romeo
S Sierra
T Tango
U Uniform
V Victor
W Whiskey
X X-ray
Y Yankee
Z Zulu

有了字母表,即使英语听力很差,也很容易找到每个单词对应的字母是什么。

英语原文是 Foxtrot Lima Alfa Golf left-bracket Papa Hotel Oscar November Echo Tango India Charlie Alfa Bravo right-bracket

所以根据 flag 的格式以及「flag 花括号内只包含小写字母」的要求,解码之后的 flag 就是 flag{phoneticab}