# ASCON Marchombre

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

**Description:**

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FABez33BlIiBd53MFAKeA%2Fenonce.png?alt=media&#x26;token=a744bf87-f088-4536-bc3c-c99a15ff26b6" alt=""><figcaption></figcaption></figure>

* Clef : *`00456c6c616e61206427416c2d466172`*
* Nonce : *`0`*
* Message chiffré : *`ac6679386ffcc3f82d6fec9556202a1be26b8af8eecab98783d08235bfca263793b61997244e785f5cf96e419a23f9b29137d820aab766ce986092180f1f5a690dc7767ef1df76e13315a5c8b04fb782`*
* Données associées : *`80400c0600000000`*

**Solution:**

Pour ce challenge, quelques données nous sont fournies ainsi que le nom de la méthode de chiffrement : ASCON.

En cherchant rapidement sur internet, nous trouvons un [package pypi](https://pypi.org/project/ascon/) à installer pour pouvoir l'utiliser dans un programme python.

Il n'y a pas grand chose à détailler ici à part donner le script utilisé.\
Voici donc le code que j'ai utilisé pour résoudre ce challenge en suivant des exemples trouvés sur internet :&#x20;

```python
import ascon


key = bytes.fromhex("00456c6c616e61206427416c2d466172")
nonce = bytes.fromhex("00000000000000000000000000000000")
data = bytes.fromhex("80400c0600000000")
cipher = bytes.fromhex("ac6679386ffcc3f82d6fec9556202a1be26b8af8eecab98783d08235bfca263793b61997244e785f5cf96e419a23f9b29137d820aab766ce986092180f1f5a690dc7767ef1df76e13315a5c8b04fb782")

print(f"Key: {key}")
print(f"Nonce: {nonce}")
print(f"Ciphertext: {cipher}")
print(f"Data: {data}")

# Decrypt
plaintext = ascon.decrypt(key, nonce, data, cipher, variant="Ascon-128")
print(f"Plaintext: {plaintext}")
```

Lorsque nous exécutons ce script, voici le résultat :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FSmz1BkHiuUGWrI0KAdhi%2Fimage.png?alt=media&#x26;token=bdec6e24-bb6d-40cc-b694-14876233858f" alt="" width="563"><figcaption></figcaption></figure>

Nous pouvons donc récupérer le flag en fin d'exécution en remplaçant le *`\xe8`* par son caractère unicode : *`è`*

<details>

<summary>🚩 FLAG</summary>

```
404CTF{V3r5_l4_lum1èr3.}
```

</details>
