본문 바로가기
Security/[게임] CTF 풀이

[Network] RuCTF2014 bluetooth writeups

by blackcon 2014. 3. 11.
728x90

bluetooth의 전송을 캡처한 패킷 데이터가 문제로 주어졌습니다. 데이터는 connection information, send, recv 등 있고 패킷내용을 보면 SCO라는 것이 적혀있습니다. SCO란 Connection의 종류 중 하나인데 주로 음성데이터 전송할때 SCO방식을 사용합니다. 그럼 해당 패킷은 음성데이터들이 있을 것이고, 블루투스로 음성을 전송하려면 일반 format(*.wav, *.mp3 등)이 아닌 *.raw형식으로 데이터가 전송됩니다.

*.raw파일의 내용을 패킷으로 보면 아래의 이미지처럼 표시되어 있어요! 4byte+48byte. 여기서 필요한 값은 헤더를 제외한 48byte인데 모든 패킷에서 무작정 parsing을 하게되면 잡음이 심하고 제대로 들리지 않습니다.

패킷에는 Sent와 Recv가 있는데, Sent파일만 Filter해서 *.pcap으로 save를 합니다. 그 후 parsing을 하는데 parsing하는 code는 간단합니다!

#!/usr/bin/env python
#parser.py

f = open("./send.pcap", "rb")
f2 = open("./send.raw", "wb")

data = f.read()
pos = 0
data2 = ''
while pos != -1:
    pos = data.find("\x03\x06\x00\x30")
    data = data[pos+4:]
    f2.write(data[:0x30])

f.close()
f2.close()

raw파일을 wav로 convert해줘야됨!

$sox -b 16 -s -c 1 -r 8100 -t raw [in.raw] [out.wav]

send.wav
다운로드

Answer for task is bluetooth_hacked

728x90