Morse-Music [Defcamp Quals 2023]

stego crypto
writeup by: zenbassi

Challenge Description

You might need to cross listen the message within the morse code.

Intuition

Putting the audio through a morse decoder, we got a message saying the something along the lines of “it’s not about the morse code” and also a password. We opened the audio in audacity and looking at the histogram we saw a QR-code.

Solution

Scanning the QR-code led to a string. We base64-decoded it which lead to some binary data. Since we had the password already, we just thought of using that to “decrypt” the message, so we cyclically xor-ed the data with the password and got the flag.

base64-encoded string from the QR: Njw0SGcLVwJVZ358MC0xBmUMClMKanlzZSpnAjVeBgVRMX0lYyliA2RaB1UDY3ghMHw0UGUPAQAH NysnNClmAjMPA1VO

./file contains the binary data from the base64-encoded string.

Solution

with open("./file", "rb") as f:
    data = f.read();
    key1 = b"UHR3V8203RJD"
    key2 = b"uhr3v8203rjd"

    for i, x in enumerate(data):
        print(chr(x ^ key1[i % 12]), end = "")

Flag

ctf{13e2f548eec5348c98370b51cf45bc7a6a002b5e012ee4fc37304eacaa41e71e}