# Coupé-décalé

**Catégorie:** Cryptography\
**Difficulté:** -\
**Flag:** CYBN{NOW-YOU-SEE-ME}

## Challenge

{% file src="https://2344605990-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5vTwbgJFy6k3bN4a9ntp%2Fuploads%2F8yfKDx9l1Bu4Xo7zYWrY%2Fcoupe-decale.zip?alt=media&token=e4a31e7f-7418-4391-88f1-8a42f9d4e357" %}

{% hint style="info" %}
**Description**

***

J’espère que vous avez une bonne vue.

_Le flag que vous allez trouver n’est pas au format CYBN_

_Vous pouvez l’ajouter entre CYBN{}_
{% endhint %}

## Solution

Le titre est assez explicit :

* **coupé** : on voit plusieurs lignes, on imagine qu'il faut les assembler
* **décalé** : dans un challenge de cryptographie, c'est clairement du **César**

Il suffit de faire un César sur chaque ligne, la clé de chiffrement utilisée est notée à droite de la ligne, on prend donc son inverse dans 26 :

```
( 1) C 			=> (25) B
( 2) TC 		=> (24) RA
( 3) YRO 		=> (23) VOL
( 4) IJPE 		=> (22) EFLA
( 5) LJXYS 		=> (21) GESTN
( 6) UCEUAY 		=> (20) OWYOUS
( 7) LLTLPSM 		=> (19) EEMEILF
( 8) ICBIRWCB 		=> (18) AUTAJOUT
( 9) NAMNBCRA 		=> (17) ERDESTIR
(10) ODCOXDBO 		=> (16) ETSENTRE
(11) NLSBFPXZE 		=> (15) CAHQUEMOT
```

En python :

```python
from string import ascii_uppercase as charset
lines = ["C", "TC", "YRO", "IJPE", "LJXYS", "UCEUAY", "LLTLPSM", "ICBIRWCB", "NAMNBCRA", "ODCOXDBO", "NLSBFPXZE"]
print(''.join([charset[(charset.index(c) + 26-i-1) % len(charset)] for i in range(len(lines)) for c in lines[i]]))
# BRAVOLEFLAGESTNOWYOUSEEMEILFAUTAJOUTERDESTIRETSENTRECAHQUEMOT
```
