# Crypto 11 класс

## Решение

Сервер вычисляет общий секрет по алгоритму Диффи-Хеллмана как $K = A^b \bmod p$ и шифрует флаг XOR-ом с $K$.  
Если отправить $A = 0$, то:

$K = 0^b \bmod p = 0$

То есть шифрование превращается в простой XOR каждого байта флага с $0$ 

$$a \oplus 0 = a$$

Отправляем $A = 0$ и получаем:

$$
c_i = m_i \oplus {0} = m_i
$$

Это и есть флаг. Достаточно одного запроса.

## Код

```python
from pwn import *

r = remote("192.168.0.221", "20111")

r.recvuntil(b"Server public key: ")
r.recvline()

r.sendlineafter(b"> ", b"0")

r.recvuntil(b"Encrypted flag (hex): ")
ct = eval(r.recvline().decode().strip())

print(bytes(ct).decode())

```

## Флаг

`vsosh{st4t1c_dh_k3ys_4r3_b4d}`
