# Recette

**Catégorie:** Cryptanalyse - **Difficulté:** Intro

**Description:**

<figure><img src="/files/CWjRPn4Pn3UvJWCahntg" alt=""><figcaption></figcaption></figure>

*32 69 31 73 34 69 31 73 31 35 64 31 6f 34 39 69 31 6f 34 64 31 6f 33 69 31 6f 31 35 64 31 6f 32 32 64 31 6f 32 30 64 31 6f 31 39 69 31 6f 37 64 31 6f 35 64 31 6f 32 69 31 6f 35 35 69 31 6f 31 64 31 6f 31 39 64 31 6f 31 37 64 31 6f 31 38 64 31 6f 32 39 69 31 6f 31 32 69 31 6f 32 36 69 31 6f 38 64 31 6f 35 39 64 31 6f 32 37 69 31 6f 36 64 31 6f 31 37 69 31 6f 31 32 64 31 6f 37 64 31 6f 35 69 31 6f 31 64 31 6f 32 64 31 6f 31 32 69 31 6f 39 64 31 6f 32 36 64 31 6f*

**Solution:**

Pour ce challenge, il suffit de suivre les étapes mentionnées dans la description du challenge.

**Etape n°1 : Convertir l'hexa en caractères**

Pour cette étape nous pouvons utiliser très simplement [CyberChef](https://gchq.github.io/CyberChef/#recipe=From_Hex\('Space'\)) qui nous donnera d'ailleurs la "fonction" à utiliser :&#x20;

<figure><img src="/files/QIxPuvEGmwE2vQVdOrvk" alt=""><figcaption></figcaption></figure>

Nous récupérons donc ceci : *`2i1s4i1s15d1o49i1o4d1o3i1o15d1o22d1o20d1o19i1o7d1o5d1o2i1o55i1o1d1o19d1o17d1o18d1o29i1o12i1o26i1o8d1o59d1o27i1o6d1o17i1o12d1o7d1o5i1o1d1o2d1o12i1o9d1o26d1o`*

**Etape n°2 : Développer pour ne plus voir de chiffres**

Cette étape est la plus "compliquée" car il faut comprendre le sens de l'instruction : "*Développer de sorte à ne plus voir de chiffres*".\
Pour ne plus voir les chiffres, nous serions tenté de les enlevés à la main dans un bloc note ou autre. Mais le terme "Développer" ici, signifie qu'il faut multiplier chaque lettre par le nombre qui le précède (Ex : 2\*i = ii, 1\*s = s, 4\*i = iiii...).\
Pour faire cela rapidement et simplement nous pouvons utiliser un petit script qui le fait à notre place :&#x20;

{% code lineNumbers="true" %}

```python
import re

def multiply_letters(text):
    result = ""
    pattern = r'(\d+)([a-zA-Z]+)'
    matches = re.findall(pattern, text)
    
    for count, letter in matches:
        result += letter * int(count)
    
    return result

input_text = "2i1s4i1s15d1o49i1o4d1o3i1o15d1o22d1o20d1o19i1o7d1o5d1o2i1o55i1o1d1o19d1o17d1o18d1o29i1o12i1o26i1o8d1o59d1o27i1o6d1o17i1o12d1o7d1o5i1o1d1o2d1o12i1o9d1o26d1o"
output_text = multiply_letters(input_text)
print(output_text)
```

{% endcode %}

Ce petit script va nous renvoyer ce dont nous avons besoin : *`iisiiiisdddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiodddddddddddddddoddddddddddddddddddddddoddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiodddddddodddddoiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiododddddddddddddddddddodddddddddddddddddoddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiiioddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiiiioddddddoiiiiiiiiiiiiiiiiioddddddddddddodddddddoiiiiiododdoiiiiiiiiiiiiodddddddddoddddddddddddddddddddddddddo`*

Etape n°3 : Décoder le Deadfish

Maintenant que nous avons notre code Deadfish, nous allons devoir le convertir pour pouvoir continuer à avancer.\
Pour ce faire, nous utilisons cet outil ([dCode - Deadfish](https://www.dcode.fr/deadfish-language)) pour décoder ce bloc : <br>

<figure><img src="/files/6YsM2CrH8AP1Q4WIxAVk" alt=""><figcaption></figcaption></figure>

Nous obtenons donc ce résultat assez étrange : *`1b^aR<(;4/1hgTC1NZtl1LFWKDIHFRI/`*

**Etape n°4 : Convertir le b85 en caractères**

Avec le résultat précédent, nous allons utiliser encore une fois utiliser l'outil [Cyberchef](https://gchq.github.io/CyberChef/#recipe=From_Base85\('!-u',true,'z'\)) et convertir le message final pour obtenir le flag :&#x20;

<figure><img src="/files/uxaSesFEtI5CYNW1Q7zc" alt=""><figcaption></figcaption></figure>

<details>

<summary>🚩 FLAG</summary>

```
404CTF{M4igr3t_D3_c4naRd}
```

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://writeups.ayweth20.com/2023/404ctf-2023/cryptanalyse/recette.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
