開発
listen (Write Up)
beko
今日はADCTF2014のlistenという問題について書いていきたいと思います。
I couldn’t listen it, can you? という問題文とともにliste.wavというファイルが与えられます。
まず始めにこのファイルがどのようなファイルなのか知るためfileコマンドを使って調べてみます。
$file listen.wav
listen.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 1 Hz
のような結果が表示され、本当にWAVEの音声ファイルであることが、わかります。
実際にこのファイルを聞いてみると、再生はされているのに、音量を上げても音声が全く聞こえません。ここで先ほどのfileコマンドの結果をもう一度見てみると、1Hzと書いてあります。
1Hzって人間の耳に聞こえる音なのか!?
という疑問が浮かびググってみると、人が聞こえる周波数というのは、20Hz~20,000Hzらしく、1Hzという周波数は人間には聞こえないことがわかりました!!
これがわかれば、ファイルのフォーマットを調べて、バイナリを弄るだけです!!ここを参考に、listen.wavをバイナリエディタに突っ込み、Hzをラジオ音質の22,050Hz (リトルエンディアンなので22 56)に書き換えたら綺麗に聞こえるようになりました!!
ADCTF_SOUNDS_GOOD
今回は、ファイルのフォーマット弄るの楽しいという感じの問題でした!!
杉山