Nos entregan la descripción del reto:
DESCRIPCION:
We found this weird message being passed around on the servers, we think we have a working decrpytion scheme.Download the message here.Take each number mod 37 and map it to the following character set: 0-25 is the alphabet (uppercase), 26-35 are the decimal digits, and 36 is an underscore.Wrap your decrypted message in the picoCTF flag format (i.e. picoCTF{decrypted_message}).
Nos entregan un fichero que contiene un mensaje, al abrirlo vemos que son una serie de numeros:
387 248 131 272 373 221 161 110 91 359 390 50 225 184 223 137 225 327 42 179 220 365Siguiendo las instrucciones del reto, nos pone que:
Debemos tomar cada numero entregado y calcular mod37Mapear cada modulo obtenido en un diccionario que se compone:a. Las posiciones 0-25 letras en mayusculas.b. Las posiciones 26-35 son decimales.c. La posicion 36 es el simbolo "_"De esta forma tenemos nuestro diccionario:“ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”
Podemos crear un script que nos permita realizar el calculo del modulo a cada numero, y que nos vaya adicionando su resultado en un array convertido en su correspondiente de acuerdo al diccionario.
Con todo esto podemos generar el script para descifrar la flag:
#!/usr/bin/env python3#creamos un array con los numeros que nos dan en el mensajea = [387,248,131,272,373,221,161,110,91,359,390,50,225,184,223,137,225,327,42,179,220,365]
# Construimos el diccionario, de acuerdo a las instruccionesalph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
#Calculamos el modulo de cada numero y su correspondiente valor en el#diccionario, lo guardamos en un array para imprimir el resultado al #final.b = [alph[i%37] for i in a]print("picoCTF{"+''.join(b)+"}")Ejecutando el script obtenemos la flag:
┌──(root㉿kali)-[~/picoCTF]└─$ python3 calculate-mod.py picoCTF{R0UND_N_R0UND_B0D5F596}