Skip to main content

Snyk Fetch the Flag CTF 2023: Write-up zu Honey Baked Messages

Artikel von
snyk ctf honey baked messages

30. November 2023

0 Min. Lesezeit

Danke, dass Sie bei Fetch mitgespielt haben! Glückwunsch an die Tausenden Spielerinnen und Spieler, die bei Fetch the Flag CTF dabei waren. Wenn Sie bei Snyks Fetch the Flag 2023 dabei waren und nach der Lösung für die Challenge Honey Baked Messages suchen, sind Sie hier genau richtig. Wir gehen die Lösung gemeinsam durch!

Bei dieser Challenge geht es um Hamming-Codes. Hamming-Codes sind eine Art Fehlerkorrekturcode. Bei dieser Challenge kommt die (7, 4)-Version der Hamming-Codes zum Einsatz.

Die Challenge besteht aus folgenden Teilen:

  1. Erkennen, dass es sich um Hamming-Codierung handelt.

  2. Jede Zeile der Datei einlesen. 

  3. Die benötigte H-Matrix für das Problem bestimmen.

  4. Die gesamte Datei fehlerkorrigieren und die Flag erhalten.

Hier ist das Lösungsskript solve.py:

import numpy as np

H = np.array(
        [
            [1, 1, 1, 0, 1, 0, 0],
            [0, 1, 1, 1, 0, 1, 0],
            [1, 1, 0, 1, 0, 0, 1]
        ]
    )
errors = {
    "000":None,
    "001": 6,
    "010": 5,
    "011": 3,
    "100": 4,
    "101": 0,
    "110": 2,
    "111": 1
}

def np2usable(nparr):
    return np.array2string(nparr).replace(" ", "" ).replace("[", "").replace(']', "")

def fixErrs(hamming):
    error = (np.matmul(H, hamming)%2)
    err_idx = errors[np2usable(error)]
    if err_idx != None:
        # print(err_idx)
        hamming[err_idx] +=1
        hamming[err_idx] %= 2

    return hamming[:4]

data = []
with open("message_2.txt", "r") as reader:
    for line in reader:
        code = np.fromstring(" ".join(line.strip("\n")), dtype = int, sep=" ")
        data.append(np2usable(fixErrs(code)))
split_chars = (list(zip(*(iter(data),) * 2)))

[print(chr(int(j+k, 2)), end="") for j,k in split_chars ]

Danke, dass Sie Fetch möglich gemacht haben!

Ein riesiges Dankeschön an alle Teams bei Fetch the Flag 2023! Es war toll, Sie alle dort zu sehen, und Sie können mich jederzeit auf YouTube finden.

Hier finden Sie die Write-ups zu den anderen Challenges aus 2023. Legen Sie los!

Gepostet in: