# TU CTF 2018 - Never Ending Crypto Redux
## DescriptionThe challenge is back and stronger than ever!IT WILL NEVER END!!
Good luck. You're gonna need it.
nc 18.223.156.26 12345
## SolutionThis challenge consists in a series of levels (from 0 to 7). For each level we can do one query, obtaining the ciphertext corresponding to our plaintext. Then we are given 50 ciphertext in sequence and we have to decode all of them in order to reach the next level.
### Level 0Just morse code.
### Level 1Morse code and [rot13](https://en.wikipedia.org/wiki/ROT13).
### Level 2This time the ciphertext is not valid morse code. Hopefully seeing it next to the ciphertext of `Level 0` pointed me in the correct direction: we had to replace `.` with `-` and vice versa (from now on I'll call this operation "flip"). Doing that we obtain the morse code.
### Level 3This was probably the trickiest level. Our plaintext is divide in three buffers based on modulo 3 of the character index. In other words, the indexes will be divided as below.
```a = 0, 3, 6, ...b = 1, 4, 7, ...c = 2, 5, 8, ...```
Then the three buffers are concatenated `a + b + c`.
Let's call this operation "mix". To win this level we decode the morse and mix.
### Level 4We add rot13 to `level 3`, i.e. morse, mix and rot13.
### Level 5Again a combination of the previous levels: flip, morse, mix and rot13.
### Level 6Here some letters were encoded in the same one, which made me think the message was xor-ed with a key. Sending a bunch of `A` as plaintext gave me `TUCTFTUCTFTUCTF...` confirming my opinion: `TUCTF` is the key.
Nevertheless, once decoded with the key we also have to apply rot13.
### Level 7This is the last level!
`You're good! But are you good enoughto beat this FINAL CHALLENGE?!!!!`
After a few trials it turns out this was a combination of all the previous challenges: flip, morse, mix, xor with `HAVEFUN`, rot13.
```    Congratulations on ending what was never ending!
    Here's your flag:    TUCTF{CRYPT0_D03$NT_R34LLY_3V3R_3ND}```
## Code[flag.py](./flag.py)