Skip to main content

Solución del CTF Fetch the Flag 2023 de Snyk: Honey Baked Messages

Escrito por
snyk ctf honey baked messages

30 de noviembre de 2023

0 minutos de lectura

¡Gracias por jugar Fetch con nosotros! Felicitaciones a los miles de jugadores que participaron en el CTF Fetch the Flag. Si participaste en Fetch the Flag 2023 de Snyk y buscas la respuesta al desafío Honey Baked Messages, llegaste al lugar indicado. ¡Veamos juntos la solución!

Este desafío se centra en los códigos de Hamming. Los códigos de Hamming son un tipo de código de corrección de errores. Este desafío usa la versión (7, 4) de los códigos de Hamming.

El desafío consta de estas partes:

  1. Entender que se trata de codificación de Hamming.

  2. Leer cada línea del archivo. 

  3. Determinar la matriz H necesaria para el problema.

  4. Corregir los errores de todo el archivo y obtener la bandera.

Aquí está el script de solución 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 ]

¡Gracias por hacer posible Fetch!

Un enorme agradecimiento a todos los equipos de Fetch the Flag 2023. ¡Fue genial verlos a todos allí! También puedes encontrarme en YouTube.

Aquí están las soluciones de los demás desafíos de 2023. ¡Échales un vistazo!

Publicado en: