[BSidesSF 2022 CTF] dual-type-multi-format

이 문제는 DTMF에 관련된 문제다.
DTMF
: Dual Tone Multiple Frequency. 이중 톤 다중 주파수는 유선전화기에서 사용되던 신호 방식으로
흔히 유선 전화에서 들을 수 있는 다이얼 소리를 말한다.
- 크게 전화기의 숫자 패드를 누를 때 나는 소리와 이외의 소리(통화중, 통화 대기, 통화 끊김)로 구분.

https://cyberchef.io/#recipe=Extract_Files(true,true,true,true,true,true,false,true)
CyberChef
cyberchef.io
CyberChef에서 파일 추출 기능을 사용할 것이다.
Input에 추출할 파일을 끌어다 놓으면, 아래와 같이 파일이 추출된다.

추출된 파일 중에서 extracted_at_0x302.wav 파일을 다운받았다.
https://unframework.github.io/dtmf-detect/
DTMF detection demo
Requires WebAudio. Click DTMF button keys to generate tones. See source code
unframework.github.io

위 사이트에서 extracted_at_0x302.wav 파일을 업로드 하고 실행하면
435446764696165#665#666#725#66661677
라는 값을 구할 수 있다.
그러나 해당 사이트에서는 A, B, C, D의 값을 인식하지 못한다.

추출한 파일을 Audacity로 열어보았다.
스펙토그램과 아까 추출한 435446764696165#665#666#725#66661677 와 일치하는지
개수를 세어 보았더니 맞지 않는다.
DTMF Decoder
dtmf.netlify.app
DTMF Decoder 사이트에서 해당 파일을 올려 보았다.

위와 같이
4354467B6469616C5#665#666#725#666C61677D 가 디코드 된 것을 확인할 수 있다!
표준 전화 키패드에서 문자 F는 3번(#)키다.
따라서 #을 F로 바꿔주면,
4354467B6469616C5F665F666F725F666C61677D 가 된다.

구한 16진수를 ASCII로 변환하면 FLAG를 구할 수 있다!!
FLAG
CTF{dial_f_for_flag}